From 7d7759deba334272ad34125825c658d5ff369037 Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Mon, 9 Nov 2020 12:59:12 +0200 Subject: [PATCH 001/304] chore(v2): set release to 2.x-alpha (#11367) Update `release.json` of the v2-main branch to track the 2.x version-line with an "alpha" pre-release tag. --- release.json | 4 ++-- version.v2.json | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 version.v2.json diff --git a/release.json b/release.json index 318d5d9a12072..d70a512507195 100644 --- a/release.json +++ b/release.json @@ -1,4 +1,4 @@ { - "majorVersion": 1, - "releaseType": "stable" + "majorVersion": 2, + "releaseType": "alpha" } diff --git a/version.v2.json b/version.v2.json new file mode 100644 index 0000000000000..4862060501dda --- /dev/null +++ b/version.v2.json @@ -0,0 +1,3 @@ +{ + "version": "2.0.0-alpha.0" +} From d8f4822ab47f403cfcc0058ab72b8cb711d73b94 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Mon, 9 Nov 2020 16:32:11 +0000 Subject: [PATCH 002/304] chore: Create empty CHANGELOG.v2.md as placeholder (#11371) The `v2-main` branch currently doesn't build due to failures at the pack stage, where it attempts to copy the CHANGELOG to the `dist` directory. For V2, the CHANGELOG file is specified as `CHANGELOG.v2.md`, but that file doesn't (yet) exist. This creates the empty header section of the CHANGELOG so the build can pass. --- CHANGELOG.v2.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 CHANGELOG.v2.md diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md new file mode 100644 index 0000000000000..5c79a3c337bd8 --- /dev/null +++ b/CHANGELOG.v2.md @@ -0,0 +1,3 @@ +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. From 9299d4e78222a43d8608090a79e95db7f65c4454 Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Tue, 10 Nov 2020 12:13:42 +0200 Subject: [PATCH 003/304] chore: 2.0.0a0 is accidentally identified as 0.0.0 by pack script (#11388) The pack script defensively checks if there are any artifacts versioned 0.0.0 under the `dist/` directory. Python artifacts are named like so: `aws_cdk.aws_iotanalytics-2.0.0a0-py3-none-any.whl` and since by default grep uses regular expressions, this matches `grep 0.0.0`. The fix is to use `-F` so that the search string is not treated as regex. --- pack.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pack.sh b/pack.sh index a61a461ce9f3e..de48b7dea0c2f 100755 --- a/pack.sh +++ b/pack.sh @@ -84,7 +84,7 @@ cp ${changelog_file} ${distdir}/CHANGELOG.md # defensive: make sure our artifacts don't use the version marker (this means # that "pack" will always fails when building in a dev environment) # when we get to 10.0.0, we can fix this... -if find dist/ | grep "${marker}"; then +if find dist/ | grep -F "${marker}"; then echo "ERROR: build artifacts use the version marker '${marker}' instead of a real version." echo "This is expected for builds in a development environment but should not happen in CI builds!" exit 1 From b5e1d697dbf2fa6735de669f6ffdd32c28f28d8e Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Wed, 11 Nov 2020 11:59:35 +0000 Subject: [PATCH 004/304] chore: mark aws-cdk-lib as public and hypermodular packages as private (#11316) All hypermodular packages under the `@aws-cdk/` folder are marked as private. `aws-cdk-lib` is marked as public. --- .../ecs-service-extensions/package.json | 1 + packages/@aws-cdk/alexa-ask/package.json | 1 + packages/@aws-cdk/app-delivery/package.json | 1 + packages/@aws-cdk/assert/package.json | 1 + packages/@aws-cdk/assets/package.json | 1 + .../@aws-cdk/aws-accessanalyzer/package.json | 1 + packages/@aws-cdk/aws-acmpca/package.json | 1 + packages/@aws-cdk/aws-amazonmq/package.json | 1 + packages/@aws-cdk/aws-amplify/package.json | 1 + packages/@aws-cdk/aws-apigateway/package.json | 1 + .../package.json | 1 + .../@aws-cdk/aws-apigatewayv2/package.json | 1 + packages/@aws-cdk/aws-appconfig/package.json | 1 + packages/@aws-cdk/aws-appflow/package.json | 1 + .../aws-applicationautoscaling/package.json | 1 + .../aws-applicationinsights/package.json | 1 + packages/@aws-cdk/aws-appmesh/package.json | 1 + packages/@aws-cdk/aws-appstream/package.json | 1 + packages/@aws-cdk/aws-appsync/package.json | 1 + packages/@aws-cdk/aws-athena/package.json | 1 + .../aws-autoscaling-common/package.json | 1 + .../aws-autoscaling-hooktargets/package.json | 1 + .../@aws-cdk/aws-autoscaling/package.json | 1 + .../aws-autoscalingplans/package.json | 1 + packages/@aws-cdk/aws-backup/package.json | 1 + packages/@aws-cdk/aws-batch/package.json | 1 + packages/@aws-cdk/aws-budgets/package.json | 1 + packages/@aws-cdk/aws-cassandra/package.json | 1 + packages/@aws-cdk/aws-ce/package.json | 1 + .../aws-certificatemanager/package.json | 1 + packages/@aws-cdk/aws-chatbot/package.json | 1 + packages/@aws-cdk/aws-cloud9/package.json | 1 + .../@aws-cdk/aws-cloudformation/package.json | 1 + .../aws-cloudfront-origins/package.json | 1 + packages/@aws-cdk/aws-cloudfront/package.json | 1 + packages/@aws-cdk/aws-cloudtrail/package.json | 1 + .../aws-cloudwatch-actions/package.json | 1 + packages/@aws-cdk/aws-cloudwatch/package.json | 1 + .../@aws-cdk/aws-codeartifact/package.json | 1 + packages/@aws-cdk/aws-codebuild/package.json | 1 + packages/@aws-cdk/aws-codecommit/package.json | 1 + packages/@aws-cdk/aws-codedeploy/package.json | 1 + .../aws-codeguruprofiler/package.json | 1 + .../aws-codegurureviewer/package.json | 1 + .../aws-codepipeline-actions/package.json | 1 + .../@aws-cdk/aws-codepipeline/package.json | 1 + packages/@aws-cdk/aws-codestar/package.json | 1 + .../aws-codestarconnections/package.json | 1 + .../aws-codestarnotifications/package.json | 1 + packages/@aws-cdk/aws-cognito/package.json | 1 + packages/@aws-cdk/aws-config/package.json | 1 + .../@aws-cdk/aws-datapipeline/package.json | 1 + packages/@aws-cdk/aws-dax/package.json | 1 + packages/@aws-cdk/aws-detective/package.json | 1 + .../aws-directoryservice/package.json | 1 + packages/@aws-cdk/aws-dlm/package.json | 1 + packages/@aws-cdk/aws-dms/package.json | 1 + packages/@aws-cdk/aws-docdb/package.json | 1 + .../@aws-cdk/aws-dynamodb-global/package.json | 1 + packages/@aws-cdk/aws-dynamodb/package.json | 1 + packages/@aws-cdk/aws-ec2/package.json | 1 + packages/@aws-cdk/aws-ecr-assets/package.json | 1 + packages/@aws-cdk/aws-ecr/package.json | 1 + .../@aws-cdk/aws-ecs-patterns/package.json | 1 + packages/@aws-cdk/aws-ecs/package.json | 1 + packages/@aws-cdk/aws-efs/package.json | 1 + packages/@aws-cdk/aws-eks-legacy/package.json | 1 + packages/@aws-cdk/aws-eks/package.json | 1 + .../@aws-cdk/aws-elasticache/package.json | 1 + .../aws-elasticbeanstalk/package.json | 1 + .../aws-elasticloadbalancing/package.json | 1 + .../package.json | 1 + .../package.json | 1 + .../aws-elasticloadbalancingv2/package.json | 1 + .../@aws-cdk/aws-elasticsearch/package.json | 1 + packages/@aws-cdk/aws-emr/package.json | 1 + .../@aws-cdk/aws-events-targets/package.json | 1 + packages/@aws-cdk/aws-events/package.json | 1 + .../@aws-cdk/aws-eventschemas/package.json | 1 + packages/@aws-cdk/aws-fms/package.json | 1 + packages/@aws-cdk/aws-fsx/package.json | 1 + packages/@aws-cdk/aws-gamelift/package.json | 1 + .../aws-globalaccelerator/package.json | 1 + packages/@aws-cdk/aws-glue/package.json | 1 + packages/@aws-cdk/aws-greengrass/package.json | 1 + packages/@aws-cdk/aws-guardduty/package.json | 1 + packages/@aws-cdk/aws-iam/package.json | 1 + .../@aws-cdk/aws-imagebuilder/package.json | 1 + packages/@aws-cdk/aws-inspector/package.json | 1 + packages/@aws-cdk/aws-iot/package.json | 1 + packages/@aws-cdk/aws-iot1click/package.json | 1 + .../@aws-cdk/aws-iotanalytics/package.json | 1 + packages/@aws-cdk/aws-iotevents/package.json | 1 + .../@aws-cdk/aws-iotthingsgraph/package.json | 1 + packages/@aws-cdk/aws-kendra/package.json | 1 + packages/@aws-cdk/aws-kinesis/package.json | 1 + .../aws-kinesisanalytics/package.json | 1 + .../@aws-cdk/aws-kinesisfirehose/package.json | 1 + packages/@aws-cdk/aws-kms/package.json | 1 + .../@aws-cdk/aws-lakeformation/package.json | 1 + .../aws-lambda-destinations/package.json | 1 + .../aws-lambda-event-sources/package.json | 1 + .../@aws-cdk/aws-lambda-nodejs/package.json | 1 + .../@aws-cdk/aws-lambda-python/package.json | 1 + packages/@aws-cdk/aws-lambda/package.json | 1 + .../aws-logs-destinations/package.json | 1 + packages/@aws-cdk/aws-logs/package.json | 1 + packages/@aws-cdk/aws-macie/package.json | 1 + .../aws-managedblockchain/package.json | 1 + .../@aws-cdk/aws-mediaconvert/package.json | 1 + packages/@aws-cdk/aws-medialive/package.json | 1 + packages/@aws-cdk/aws-mediastore/package.json | 1 + packages/@aws-cdk/aws-msk/package.json | 1 + packages/@aws-cdk/aws-neptune/package.json | 1 + .../@aws-cdk/aws-networkmanager/package.json | 1 + packages/@aws-cdk/aws-opsworks/package.json | 1 + packages/@aws-cdk/aws-opsworkscm/package.json | 1 + packages/@aws-cdk/aws-pinpoint/package.json | 1 + .../@aws-cdk/aws-pinpointemail/package.json | 1 + packages/@aws-cdk/aws-qldb/package.json | 1 + packages/@aws-cdk/aws-ram/package.json | 1 + packages/@aws-cdk/aws-rds/package.json | 1 + packages/@aws-cdk/aws-redshift/package.json | 1 + .../@aws-cdk/aws-resourcegroups/package.json | 1 + packages/@aws-cdk/aws-robomaker/package.json | 1 + .../aws-route53-patterns/package.json | 1 + .../@aws-cdk/aws-route53-targets/package.json | 1 + packages/@aws-cdk/aws-route53/package.json | 1 + .../@aws-cdk/aws-route53resolver/package.json | 1 + packages/@aws-cdk/aws-s3-assets/package.json | 1 + .../@aws-cdk/aws-s3-deployment/package.json | 1 + .../aws-s3-notifications/package.json | 1 + packages/@aws-cdk/aws-s3/package.json | 1 + packages/@aws-cdk/aws-sagemaker/package.json | 1 + packages/@aws-cdk/aws-sam/package.json | 1 + packages/@aws-cdk/aws-sdb/package.json | 1 + .../@aws-cdk/aws-secretsmanager/package.json | 1 + .../@aws-cdk/aws-securityhub/package.json | 1 + .../@aws-cdk/aws-servicecatalog/package.json | 1 + .../aws-servicediscovery/package.json | 1 + .../@aws-cdk/aws-ses-actions/package.json | 1 + packages/@aws-cdk/aws-ses/package.json | 1 + .../aws-sns-subscriptions/package.json | 1 + packages/@aws-cdk/aws-sns/package.json | 1 + packages/@aws-cdk/aws-sqs/package.json | 1 + packages/@aws-cdk/aws-ssm/package.json | 1 + packages/@aws-cdk/aws-sso/package.json | 1 + .../aws-stepfunctions-tasks/package.json | 1 + .../@aws-cdk/aws-stepfunctions/package.json | 1 + packages/@aws-cdk/aws-synthetics/package.json | 1 + packages/@aws-cdk/aws-timestream/package.json | 1 + packages/@aws-cdk/aws-transfer/package.json | 1 + packages/@aws-cdk/aws-waf/package.json | 1 + .../@aws-cdk/aws-wafregional/package.json | 1 + packages/@aws-cdk/aws-wafv2/package.json | 1 + packages/@aws-cdk/aws-workspaces/package.json | 1 + .../@aws-cdk/cdk-assets-schema/package.json | 1 + packages/@aws-cdk/cfnspec/package.json | 1 + .../cloud-assembly-schema/package.json | 1 + .../@aws-cdk/cloudformation-diff/package.json | 1 + .../cloudformation-include/package.json | 1 + packages/@aws-cdk/core/package.json | 1 + .../@aws-cdk/custom-resources/package.json | 1 + packages/@aws-cdk/cx-api/package.json | 1 + packages/@aws-cdk/pipelines/package.json | 1 + packages/@aws-cdk/region-info/package.json | 1 + packages/@aws-cdk/yaml-cfn/package.json | 1 + .../@monocdk-experiment/assert/package.json | 1 + .../rewrite-imports/package.json | 1 + packages/aws-cdk-lib/.npmignore | 3 +- packages/aws-cdk-lib/NOTICE | 193 ++++++++++++++++++ packages/aws-cdk-lib/package.json | 9 +- packages/cdk-assets/package.json | 1 + packages/cdk-dasm/package.json | 1 + packages/cdk/package.json | 3 +- packages/decdk/package.json | 1 + packages/monocdk/package.json | 1 + 177 files changed, 373 insertions(+), 8 deletions(-) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index 4b1da71dd86fe..f459c2592a8ea 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk-containers/ecs-service-extensions", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library that helps you build ECS services using simple extensions", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/alexa-ask/package.json b/packages/@aws-cdk/alexa-ask/package.json index eff6618e6bfb8..e2d3ea57fb583 100644 --- a/packages/@aws-cdk/alexa-ask/package.json +++ b/packages/@aws-cdk/alexa-ask/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/alexa-ask", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for Alexa::ASK", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/app-delivery/package.json b/packages/@aws-cdk/app-delivery/package.json index e0a95c03879eb..68cb0d2b50678 100644 --- a/packages/@aws-cdk/app-delivery/package.json +++ b/packages/@aws-cdk/app-delivery/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/app-delivery", "description": "Continuous Integration / Continuous Delivery for CDK Applications", + "private": true, "version": "0.0.0", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index cb651d3ba12df..55803a9239517 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/assert", "version": "0.0.0", + "private": true, "description": "An assertion library for use with CDK Apps", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index e91c6966fcd76..e9aeb2aa61088 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/assets", "version": "0.0.0", + "private": true, "description": "This module is deprecated. All types are now available under the core module", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-accessanalyzer/package.json b/packages/@aws-cdk/aws-accessanalyzer/package.json index 3db4d7267fd55..aa5d15802aa24 100644 --- a/packages/@aws-cdk/aws-accessanalyzer/package.json +++ b/packages/@aws-cdk/aws-accessanalyzer/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-accessanalyzer", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AccessAnalyzer", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-acmpca/package.json b/packages/@aws-cdk/aws-acmpca/package.json index 65d4aa11c2b73..68520285627e3 100644 --- a/packages/@aws-cdk/aws-acmpca/package.json +++ b/packages/@aws-cdk/aws-acmpca/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-acmpca", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ACMPCA", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-amazonmq/package.json b/packages/@aws-cdk/aws-amazonmq/package.json index 1274402c9872e..08bb19ed91467 100644 --- a/packages/@aws-cdk/aws-amazonmq/package.json +++ b/packages/@aws-cdk/aws-amazonmq/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-amazonmq", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AmazonMQ", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-amplify/package.json b/packages/@aws-cdk/aws-amplify/package.json index 63aa08a0d5189..b43e9bf2e97a8 100644 --- a/packages/@aws-cdk/aws-amplify/package.json +++ b/packages/@aws-cdk/aws-amplify/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-amplify", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Amplify", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-apigateway/package.json b/packages/@aws-cdk/aws-apigateway/package.json index 38cd21c58f19b..e86dcc05da737 100644 --- a/packages/@aws-cdk/aws-apigateway/package.json +++ b/packages/@aws-cdk/aws-apigateway/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-apigateway", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ApiGateway", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json index b233b0db9d9a1..75fd318866aa2 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-apigatewayv2-integrations", "version": "0.0.0", + "private": true, "description": "Integrations for AWS APIGateway V2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-apigatewayv2/package.json b/packages/@aws-cdk/aws-apigatewayv2/package.json index 126cbc4143d00..0e01616a82059 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-apigatewayv2", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::APIGatewayv2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-appconfig/package.json b/packages/@aws-cdk/aws-appconfig/package.json index 56ce44e9543cf..3ec9a870e6dca 100644 --- a/packages/@aws-cdk/aws-appconfig/package.json +++ b/packages/@aws-cdk/aws-appconfig/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-appconfig", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AppConfig", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-appflow/package.json b/packages/@aws-cdk/aws-appflow/package.json index 446d4c0787e03..9714082605a1d 100644 --- a/packages/@aws-cdk/aws-appflow/package.json +++ b/packages/@aws-cdk/aws-appflow/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-appflow", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AppFlow", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-applicationautoscaling/package.json b/packages/@aws-cdk/aws-applicationautoscaling/package.json index 3072fda41400d..38861b5e5c6a6 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/package.json +++ b/packages/@aws-cdk/aws-applicationautoscaling/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-applicationautoscaling", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ApplicationAutoScaling", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-applicationinsights/package.json b/packages/@aws-cdk/aws-applicationinsights/package.json index 8b59f2cd18ea9..a5ffefcff6461 100644 --- a/packages/@aws-cdk/aws-applicationinsights/package.json +++ b/packages/@aws-cdk/aws-applicationinsights/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-applicationinsights", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ApplicationInsights", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-appmesh/package.json b/packages/@aws-cdk/aws-appmesh/package.json index 2789d9085284c..afe3ed6c0b5fa 100644 --- a/packages/@aws-cdk/aws-appmesh/package.json +++ b/packages/@aws-cdk/aws-appmesh/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-appmesh", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AppMesh", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-appstream/package.json b/packages/@aws-cdk/aws-appstream/package.json index f7c04b6c363f4..7031fbd3a2590 100644 --- a/packages/@aws-cdk/aws-appstream/package.json +++ b/packages/@aws-cdk/aws-appstream/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-appstream", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AppStream", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-appsync/package.json b/packages/@aws-cdk/aws-appsync/package.json index e68c325f6dd6b..b01456117522d 100644 --- a/packages/@aws-cdk/aws-appsync/package.json +++ b/packages/@aws-cdk/aws-appsync/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-appsync", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AppSync", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-athena/package.json b/packages/@aws-cdk/aws-athena/package.json index 275f1a4936bb0..149d7dc84c321 100644 --- a/packages/@aws-cdk/aws-athena/package.json +++ b/packages/@aws-cdk/aws-athena/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-athena", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Athena", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-autoscaling-common/package.json b/packages/@aws-cdk/aws-autoscaling-common/package.json index 805460b6ef2ba..921cd6a88ba24 100644 --- a/packages/@aws-cdk/aws-autoscaling-common/package.json +++ b/packages/@aws-cdk/aws-autoscaling-common/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-autoscaling-common", "version": "0.0.0", + "private": true, "description": "Common implementation package for @aws-cdk/aws-autoscaling and @aws-cdk/aws-applicationautoscaling", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index fa2b3589acd92..242f353c1ceea 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-autoscaling-hooktargets", "version": "0.0.0", + "private": true, "description": "Lifecycle hook for AWS AutoScaling", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-autoscaling/package.json b/packages/@aws-cdk/aws-autoscaling/package.json index 745c087e45ebb..b18a7e6899027 100644 --- a/packages/@aws-cdk/aws-autoscaling/package.json +++ b/packages/@aws-cdk/aws-autoscaling/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-autoscaling", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AutoScaling", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-autoscalingplans/package.json b/packages/@aws-cdk/aws-autoscalingplans/package.json index f66e661ed1ccf..8b75784901482 100644 --- a/packages/@aws-cdk/aws-autoscalingplans/package.json +++ b/packages/@aws-cdk/aws-autoscalingplans/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-autoscalingplans", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::AutoScalingPlans", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-backup/package.json b/packages/@aws-cdk/aws-backup/package.json index 99d4faa6366a5..4c83829954841 100644 --- a/packages/@aws-cdk/aws-backup/package.json +++ b/packages/@aws-cdk/aws-backup/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-backup", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Backup", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-batch/package.json b/packages/@aws-cdk/aws-batch/package.json index e9a73189f0716..1cf20aa672acb 100644 --- a/packages/@aws-cdk/aws-batch/package.json +++ b/packages/@aws-cdk/aws-batch/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-batch", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Batch", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-budgets/package.json b/packages/@aws-cdk/aws-budgets/package.json index 24ae856195ad4..9f147283268fe 100644 --- a/packages/@aws-cdk/aws-budgets/package.json +++ b/packages/@aws-cdk/aws-budgets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-budgets", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Budgets", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cassandra/package.json b/packages/@aws-cdk/aws-cassandra/package.json index c047c535fad5a..a75de59bd968b 100644 --- a/packages/@aws-cdk/aws-cassandra/package.json +++ b/packages/@aws-cdk/aws-cassandra/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cassandra", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Cassandra", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ce/package.json b/packages/@aws-cdk/aws-ce/package.json index b34e30b82ca4b..de3615109e7b4 100644 --- a/packages/@aws-cdk/aws-ce/package.json +++ b/packages/@aws-cdk/aws-ce/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ce", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CE", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-certificatemanager/package.json b/packages/@aws-cdk/aws-certificatemanager/package.json index 48bd42cdf9a37..58b9343d46eea 100644 --- a/packages/@aws-cdk/aws-certificatemanager/package.json +++ b/packages/@aws-cdk/aws-certificatemanager/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-certificatemanager", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CertificateManager", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-chatbot/package.json b/packages/@aws-cdk/aws-chatbot/package.json index e3ead040537d9..d960014224dbb 100644 --- a/packages/@aws-cdk/aws-chatbot/package.json +++ b/packages/@aws-cdk/aws-chatbot/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-chatbot", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Chatbot", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloud9/package.json b/packages/@aws-cdk/aws-cloud9/package.json index eb83f5a4e7544..60af4903d4c0f 100644 --- a/packages/@aws-cdk/aws-cloud9/package.json +++ b/packages/@aws-cdk/aws-cloud9/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloud9", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Cloud9", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloudformation/package.json b/packages/@aws-cdk/aws-cloudformation/package.json index 1c8a3abc64568..8521fb4a4cac8 100644 --- a/packages/@aws-cdk/aws-cloudformation/package.json +++ b/packages/@aws-cdk/aws-cloudformation/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloudformation", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CloudFormation", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index 06e954237cdf8..564e1e536c8ad 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloudfront-origins", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS CloudFront Origins", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index 587776d1d4edb..ed23cbfbd8737 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloudfront", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CloudFront", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index 3146f7f682988..b1bf055632590 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloudtrail", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CloudTrail", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index 8d845afd8eff9..c66b702b135b8 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloudwatch-actions", "version": "0.0.0", + "private": true, "description": "Alarm Actions for AWS CloudWatch CDK library", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cloudwatch/package.json b/packages/@aws-cdk/aws-cloudwatch/package.json index e2a716c4fbda8..01989f9553fb6 100644 --- a/packages/@aws-cdk/aws-cloudwatch/package.json +++ b/packages/@aws-cdk/aws-cloudwatch/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cloudwatch", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CloudWatch", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codeartifact/package.json b/packages/@aws-cdk/aws-codeartifact/package.json index b34c43c558a78..e267ac4a16723 100644 --- a/packages/@aws-cdk/aws-codeartifact/package.json +++ b/packages/@aws-cdk/aws-codeartifact/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codeartifact", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeArtifact", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index 001cec43f99fd..688f2c721958c 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codebuild", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeBuild", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index 53beb4f72810b..6076b13e3bd11 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codecommit", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeCommit", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codedeploy/package.json b/packages/@aws-cdk/aws-codedeploy/package.json index 23cf8b8f1242a..2d8a107e65773 100644 --- a/packages/@aws-cdk/aws-codedeploy/package.json +++ b/packages/@aws-cdk/aws-codedeploy/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codedeploy", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeDeploy", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codeguruprofiler/package.json b/packages/@aws-cdk/aws-codeguruprofiler/package.json index e5d6c51059ebe..0d0f8a9baa391 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/package.json +++ b/packages/@aws-cdk/aws-codeguruprofiler/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codeguruprofiler", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeGuruProfiler", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codegurureviewer/package.json b/packages/@aws-cdk/aws-codegurureviewer/package.json index ab40869eed2a8..ace2eaf5218c5 100644 --- a/packages/@aws-cdk/aws-codegurureviewer/package.json +++ b/packages/@aws-cdk/aws-codegurureviewer/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codegurureviewer", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeGuruReviewer", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codepipeline-actions/package.json b/packages/@aws-cdk/aws-codepipeline-actions/package.json index 6cf31932d7c31..944aba4ff9399 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/package.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codepipeline-actions", "version": "0.0.0", + "private": true, "description": "Concrete Actions for AWS Code Pipeline", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codepipeline/package.json b/packages/@aws-cdk/aws-codepipeline/package.json index 343c87745cfc5..50fd779ff505c 100644 --- a/packages/@aws-cdk/aws-codepipeline/package.json +++ b/packages/@aws-cdk/aws-codepipeline/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codepipeline", "version": "0.0.0", + "private": true, "description": "Better interface to AWS Code Pipeline", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codestar/package.json b/packages/@aws-cdk/aws-codestar/package.json index 760a231f1b03b..9b466ec1f77d6 100644 --- a/packages/@aws-cdk/aws-codestar/package.json +++ b/packages/@aws-cdk/aws-codestar/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codestar", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeStar", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codestarconnections/package.json b/packages/@aws-cdk/aws-codestarconnections/package.json index 872b1eef71c7a..ecd1921f1c37c 100644 --- a/packages/@aws-cdk/aws-codestarconnections/package.json +++ b/packages/@aws-cdk/aws-codestarconnections/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codestarconnections", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeStarConnections", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-codestarnotifications/package.json b/packages/@aws-cdk/aws-codestarnotifications/package.json index 2e66c6d5cfc88..abf54d81facdf 100644 --- a/packages/@aws-cdk/aws-codestarnotifications/package.json +++ b/packages/@aws-cdk/aws-codestarnotifications/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-codestarnotifications", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::CodeStarNotifications", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 137a8335d8300..e41f34a5206af 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-cognito", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Cognito", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-config/package.json b/packages/@aws-cdk/aws-config/package.json index f0a2b099aeb38..e28f360d568ef 100644 --- a/packages/@aws-cdk/aws-config/package.json +++ b/packages/@aws-cdk/aws-config/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-config", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Config", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-datapipeline/package.json b/packages/@aws-cdk/aws-datapipeline/package.json index 2616e75f0ae50..65de9b725557c 100644 --- a/packages/@aws-cdk/aws-datapipeline/package.json +++ b/packages/@aws-cdk/aws-datapipeline/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-datapipeline", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DataPipeline", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dax/package.json b/packages/@aws-cdk/aws-dax/package.json index ff9f670d9342d..f00d10d7fd4b9 100644 --- a/packages/@aws-cdk/aws-dax/package.json +++ b/packages/@aws-cdk/aws-dax/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-dax", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DAX", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-detective/package.json b/packages/@aws-cdk/aws-detective/package.json index fce28548ba5ff..9ca6d730682de 100644 --- a/packages/@aws-cdk/aws-detective/package.json +++ b/packages/@aws-cdk/aws-detective/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-detective", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Detective", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-directoryservice/package.json b/packages/@aws-cdk/aws-directoryservice/package.json index a18dc6e3e7c44..e860d108fb012 100644 --- a/packages/@aws-cdk/aws-directoryservice/package.json +++ b/packages/@aws-cdk/aws-directoryservice/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-directoryservice", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DirectoryService", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dlm/package.json b/packages/@aws-cdk/aws-dlm/package.json index 0d53f1fef19b8..7153d77d5ebb6 100644 --- a/packages/@aws-cdk/aws-dlm/package.json +++ b/packages/@aws-cdk/aws-dlm/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-dlm", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DLM", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dms/package.json b/packages/@aws-cdk/aws-dms/package.json index d66461f0de8ef..df9a473479345 100644 --- a/packages/@aws-cdk/aws-dms/package.json +++ b/packages/@aws-cdk/aws-dms/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-dms", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DMS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index 7cf1e49c2755d..2dfe77eee4d2d 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-docdb", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DocDB", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index d7d968eb2d007..4024651084a85 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-dynamodb-global", "version": "0.0.0", + "private": true, "description": "Build a global dynamodb table", "deprecated": "This module has been deprecated. Use @aws-cdk/aws-dynamodb.Table with replicationRegions instead", "license": "Apache-2.0", diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index d4de8e8e1d2a0..c2fb7c2222007 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-dynamodb", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::DynamoDB", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ec2/package.json b/packages/@aws-cdk/aws-ec2/package.json index c12df7e9f0688..ec123086dae95 100644 --- a/packages/@aws-cdk/aws-ec2/package.json +++ b/packages/@aws-cdk/aws-ec2/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ec2", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::EC2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ecr-assets/package.json b/packages/@aws-cdk/aws-ecr-assets/package.json index fcf7739ca7254..45da1125b854f 100644 --- a/packages/@aws-cdk/aws-ecr-assets/package.json +++ b/packages/@aws-cdk/aws-ecr-assets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ecr-assets", "version": "0.0.0", + "private": true, "description": "Docker image assets deployed to ECR", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ecr/package.json b/packages/@aws-cdk/aws-ecr/package.json index a7b56a5a00298..8d730a2ac664a 100644 --- a/packages/@aws-cdk/aws-ecr/package.json +++ b/packages/@aws-cdk/aws-ecr/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ecr", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ECR", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index c18883a851c19..d21e59a1b092b 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ecs-patterns", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ECS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index 1b7a45842d152..00d89db393097 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ecs", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ECS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-efs/package.json b/packages/@aws-cdk/aws-efs/package.json index fcfe0e162c926..da4c3b3b1367f 100644 --- a/packages/@aws-cdk/aws-efs/package.json +++ b/packages/@aws-cdk/aws-efs/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-efs", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::EFS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-eks-legacy/package.json b/packages/@aws-cdk/aws-eks-legacy/package.json index 08b032f34503d..7bfcfbb2194d5 100644 --- a/packages/@aws-cdk/aws-eks-legacy/package.json +++ b/packages/@aws-cdk/aws-eks-legacy/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-eks-legacy", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::EKS (Legacy)", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index f23de775f4ba2..3e27df2451353 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-eks", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::EKS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticache/package.json b/packages/@aws-cdk/aws-elasticache/package.json index 7374b48deed67..55ef595245913 100644 --- a/packages/@aws-cdk/aws-elasticache/package.json +++ b/packages/@aws-cdk/aws-elasticache/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticache", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ElastiCache", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticbeanstalk/package.json b/packages/@aws-cdk/aws-elasticbeanstalk/package.json index 1fc91742b9ff8..5101767bf2987 100644 --- a/packages/@aws-cdk/aws-elasticbeanstalk/package.json +++ b/packages/@aws-cdk/aws-elasticbeanstalk/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticbeanstalk", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ElasticBeanstalk", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/package.json b/packages/@aws-cdk/aws-elasticloadbalancing/package.json index a84ca148bb138..de0213ec164e8 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancing/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticloadbalancing", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ElasticLoadBalancing", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index 3d2ad11bd8a9f..53701639bef7f 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticloadbalancingv2-actions", "version": "0.0.0", + "private": true, "description": "Integration actions for AWS ElasticLoadBalancingV2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index 242f294ad02f1..a4adc6d1647fb 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticloadbalancingv2-targets", "version": "0.0.0", + "private": true, "description": "Integration targets for AWS ElasticLoadBalancingV2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json index d65911b6abd7f..d68c5c8afc38a 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticloadbalancingv2", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ElasticLoadBalancingV2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-elasticsearch/package.json b/packages/@aws-cdk/aws-elasticsearch/package.json index 36235fb85ccdc..510240663f8f6 100644 --- a/packages/@aws-cdk/aws-elasticsearch/package.json +++ b/packages/@aws-cdk/aws-elasticsearch/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-elasticsearch", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Elasticsearch", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-emr/package.json b/packages/@aws-cdk/aws-emr/package.json index 896d8f27486f7..720ed61951ada 100644 --- a/packages/@aws-cdk/aws-emr/package.json +++ b/packages/@aws-cdk/aws-emr/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-emr", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::EMR", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index c9d8e2fd475b9..308ea366cf52b 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-events-targets", "version": "0.0.0", + "private": true, "description": "Event targets for Amazon EventBridge", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-events/package.json b/packages/@aws-cdk/aws-events/package.json index 30a4c1ec88641..4458b3e082544 100644 --- a/packages/@aws-cdk/aws-events/package.json +++ b/packages/@aws-cdk/aws-events/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-events", "version": "0.0.0", + "private": true, "description": "Amazon EventBridge Construct Library", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-eventschemas/package.json b/packages/@aws-cdk/aws-eventschemas/package.json index 4d349d1430de6..8e23a163c4dcf 100644 --- a/packages/@aws-cdk/aws-eventschemas/package.json +++ b/packages/@aws-cdk/aws-eventschemas/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-eventschemas", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::EventSchemas", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-fms/package.json b/packages/@aws-cdk/aws-fms/package.json index 03f60d20301ae..d8d32b6060bb0 100644 --- a/packages/@aws-cdk/aws-fms/package.json +++ b/packages/@aws-cdk/aws-fms/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-fms", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::FMS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-fsx/package.json b/packages/@aws-cdk/aws-fsx/package.json index c68f58d37b967..b18579b7eebb1 100644 --- a/packages/@aws-cdk/aws-fsx/package.json +++ b/packages/@aws-cdk/aws-fsx/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-fsx", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::FSx", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-gamelift/package.json b/packages/@aws-cdk/aws-gamelift/package.json index 34a9f1cfed840..84b36a4beec60 100644 --- a/packages/@aws-cdk/aws-gamelift/package.json +++ b/packages/@aws-cdk/aws-gamelift/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-gamelift", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::GameLift", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-globalaccelerator/package.json b/packages/@aws-cdk/aws-globalaccelerator/package.json index 8809ee1ada608..59cc317c17cbf 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-globalaccelerator", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::GlobalAccelerator", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-glue/package.json b/packages/@aws-cdk/aws-glue/package.json index f8d190cad4a41..9c1052f6219b1 100644 --- a/packages/@aws-cdk/aws-glue/package.json +++ b/packages/@aws-cdk/aws-glue/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-glue", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Glue", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-greengrass/package.json b/packages/@aws-cdk/aws-greengrass/package.json index 8a7c7a23426a4..7a051e9060c2d 100644 --- a/packages/@aws-cdk/aws-greengrass/package.json +++ b/packages/@aws-cdk/aws-greengrass/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-greengrass", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Greengrass", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-guardduty/package.json b/packages/@aws-cdk/aws-guardduty/package.json index 3a6f77234396e..a09e840ce90e1 100644 --- a/packages/@aws-cdk/aws-guardduty/package.json +++ b/packages/@aws-cdk/aws-guardduty/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-guardduty", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::GuardDuty", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-iam/package.json b/packages/@aws-cdk/aws-iam/package.json index 5f8eb193f2539..f6f408d0acc68 100644 --- a/packages/@aws-cdk/aws-iam/package.json +++ b/packages/@aws-cdk/aws-iam/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-iam", "version": "0.0.0", + "private": true, "description": "CDK routines for easily assigning correct and minimal IAM permissions", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-imagebuilder/package.json b/packages/@aws-cdk/aws-imagebuilder/package.json index 656f94b3a8c38..16f5582445f1e 100644 --- a/packages/@aws-cdk/aws-imagebuilder/package.json +++ b/packages/@aws-cdk/aws-imagebuilder/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-imagebuilder", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ImageBuilder", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-inspector/package.json b/packages/@aws-cdk/aws-inspector/package.json index 942136fe80fe9..da4022533428d 100644 --- a/packages/@aws-cdk/aws-inspector/package.json +++ b/packages/@aws-cdk/aws-inspector/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-inspector", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Inspector", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-iot/package.json b/packages/@aws-cdk/aws-iot/package.json index bed4728e5c214..a4b45bfa2882d 100644 --- a/packages/@aws-cdk/aws-iot/package.json +++ b/packages/@aws-cdk/aws-iot/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-iot", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::IoT", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-iot1click/package.json b/packages/@aws-cdk/aws-iot1click/package.json index 432f684d92488..2f46878299105 100644 --- a/packages/@aws-cdk/aws-iot1click/package.json +++ b/packages/@aws-cdk/aws-iot1click/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-iot1click", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::IoT1Click", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-iotanalytics/package.json b/packages/@aws-cdk/aws-iotanalytics/package.json index 8060f4bf31e3f..305ce2f02cc7e 100644 --- a/packages/@aws-cdk/aws-iotanalytics/package.json +++ b/packages/@aws-cdk/aws-iotanalytics/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-iotanalytics", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::IoTAnalytics", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-iotevents/package.json b/packages/@aws-cdk/aws-iotevents/package.json index 93e91d3009149..5bb4346d4cd0e 100644 --- a/packages/@aws-cdk/aws-iotevents/package.json +++ b/packages/@aws-cdk/aws-iotevents/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-iotevents", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::IoTEvents", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-iotthingsgraph/package.json b/packages/@aws-cdk/aws-iotthingsgraph/package.json index 4ab7df4c160e2..82652269b36b4 100644 --- a/packages/@aws-cdk/aws-iotthingsgraph/package.json +++ b/packages/@aws-cdk/aws-iotthingsgraph/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-iotthingsgraph", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::IoTThingsGraph", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-kendra/package.json b/packages/@aws-cdk/aws-kendra/package.json index 17008caafbb38..1df0ddc8513c0 100644 --- a/packages/@aws-cdk/aws-kendra/package.json +++ b/packages/@aws-cdk/aws-kendra/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-kendra", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Kendra", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-kinesis/package.json b/packages/@aws-cdk/aws-kinesis/package.json index 26afdf4601d49..3899f8cdcde13 100644 --- a/packages/@aws-cdk/aws-kinesis/package.json +++ b/packages/@aws-cdk/aws-kinesis/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-kinesis", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Kinesis", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-kinesisanalytics/package.json b/packages/@aws-cdk/aws-kinesisanalytics/package.json index db138e371caff..9f971d7e647ea 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-kinesisanalytics", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::KinesisAnalytics", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-kinesisfirehose/package.json b/packages/@aws-cdk/aws-kinesisfirehose/package.json index 8ee3142abb608..8afac28f27941 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-kinesisfirehose", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::KinesisFirehose", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-kms/package.json b/packages/@aws-cdk/aws-kms/package.json index a4c21a6c4ae03..cac7ae27cd203 100644 --- a/packages/@aws-cdk/aws-kms/package.json +++ b/packages/@aws-cdk/aws-kms/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-kms", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::KMS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-lakeformation/package.json b/packages/@aws-cdk/aws-lakeformation/package.json index ada1aff6d4701..9fe46671004d3 100644 --- a/packages/@aws-cdk/aws-lakeformation/package.json +++ b/packages/@aws-cdk/aws-lakeformation/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-lakeformation", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::LakeFormation", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index 3f073267b5d75..11cafa80fca7d 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-lambda-destinations", "version": "0.0.0", + "private": true, "description": "CDK Destinations Constructs for AWS Lambda", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index f67c62815bb04..7d7f6d62c23c7 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-lambda-event-sources", "version": "0.0.0", + "private": true, "description": "Event sources for AWS Lambda", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index de6ea3d7b31a8..47566c8d15312 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-lambda-nodejs", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS Lambda in Node.js", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index abd231096a979..d53acec73281c 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-lambda-python", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS Lambda in Python", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index 63319fe238f8f..b7fcd7738285f 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-lambda", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Lambda", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index 088d42b51feeb..e13205bc53e5f 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-logs-destinations", "version": "0.0.0", + "private": true, "description": "Log Destinations for AWS CloudWatch Logs", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index 9034ee8214849..9aff9ecaae2d5 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-logs", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Logs", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-macie/package.json b/packages/@aws-cdk/aws-macie/package.json index 31cadb759a266..88de5e6ddc8fc 100644 --- a/packages/@aws-cdk/aws-macie/package.json +++ b/packages/@aws-cdk/aws-macie/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-macie", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Macie", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-managedblockchain/package.json b/packages/@aws-cdk/aws-managedblockchain/package.json index de565cc79d2f6..65dea27c9429b 100644 --- a/packages/@aws-cdk/aws-managedblockchain/package.json +++ b/packages/@aws-cdk/aws-managedblockchain/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-managedblockchain", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ManagedBlockchain", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-mediaconvert/package.json b/packages/@aws-cdk/aws-mediaconvert/package.json index 76d41d8590466..ebe92c236a7f0 100644 --- a/packages/@aws-cdk/aws-mediaconvert/package.json +++ b/packages/@aws-cdk/aws-mediaconvert/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-mediaconvert", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::MediaConvert", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-medialive/package.json b/packages/@aws-cdk/aws-medialive/package.json index 55abb694dbb84..e192aa590788c 100644 --- a/packages/@aws-cdk/aws-medialive/package.json +++ b/packages/@aws-cdk/aws-medialive/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-medialive", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::MediaLive", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-mediastore/package.json b/packages/@aws-cdk/aws-mediastore/package.json index bcdcfd25ee3cd..53866db968d67 100644 --- a/packages/@aws-cdk/aws-mediastore/package.json +++ b/packages/@aws-cdk/aws-mediastore/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-mediastore", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::MediaStore", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-msk/package.json b/packages/@aws-cdk/aws-msk/package.json index fe11ccb745bdf..b781088873f14 100644 --- a/packages/@aws-cdk/aws-msk/package.json +++ b/packages/@aws-cdk/aws-msk/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-msk", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::MSK", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-neptune/package.json b/packages/@aws-cdk/aws-neptune/package.json index e979f191033aa..e489ec48a82d8 100644 --- a/packages/@aws-cdk/aws-neptune/package.json +++ b/packages/@aws-cdk/aws-neptune/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-neptune", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Neptune", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-networkmanager/package.json b/packages/@aws-cdk/aws-networkmanager/package.json index c37cae4a92c20..e9592335972ba 100644 --- a/packages/@aws-cdk/aws-networkmanager/package.json +++ b/packages/@aws-cdk/aws-networkmanager/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-networkmanager", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::NetworkManager", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-opsworks/package.json b/packages/@aws-cdk/aws-opsworks/package.json index c37aa3b6a6193..507da8d216c37 100644 --- a/packages/@aws-cdk/aws-opsworks/package.json +++ b/packages/@aws-cdk/aws-opsworks/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-opsworks", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::OpsWorks", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-opsworkscm/package.json b/packages/@aws-cdk/aws-opsworkscm/package.json index 475d423a77936..1c20b54462eda 100644 --- a/packages/@aws-cdk/aws-opsworkscm/package.json +++ b/packages/@aws-cdk/aws-opsworkscm/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-opsworkscm", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::OpsWorksCM", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-pinpoint/package.json b/packages/@aws-cdk/aws-pinpoint/package.json index 355a2622af74b..9f367e094f82e 100644 --- a/packages/@aws-cdk/aws-pinpoint/package.json +++ b/packages/@aws-cdk/aws-pinpoint/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-pinpoint", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Pinpoint", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-pinpointemail/package.json b/packages/@aws-cdk/aws-pinpointemail/package.json index 291a9753a446b..27f4b6966cff3 100644 --- a/packages/@aws-cdk/aws-pinpointemail/package.json +++ b/packages/@aws-cdk/aws-pinpointemail/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-pinpointemail", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::PinpointEmail", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-qldb/package.json b/packages/@aws-cdk/aws-qldb/package.json index 0a9efbca21d0c..53df6f9c7339c 100644 --- a/packages/@aws-cdk/aws-qldb/package.json +++ b/packages/@aws-cdk/aws-qldb/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-qldb", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::QLDB", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ram/package.json b/packages/@aws-cdk/aws-ram/package.json index 29044fca0770f..0ac1ba2868972 100644 --- a/packages/@aws-cdk/aws-ram/package.json +++ b/packages/@aws-cdk/aws-ram/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ram", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::RAM", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-rds/package.json b/packages/@aws-cdk/aws-rds/package.json index 564ff3e89b77e..52597bad5cc64 100644 --- a/packages/@aws-cdk/aws-rds/package.json +++ b/packages/@aws-cdk/aws-rds/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-rds", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::RDS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-redshift/package.json b/packages/@aws-cdk/aws-redshift/package.json index dbdc8994c5894..d1fab72cc88e3 100644 --- a/packages/@aws-cdk/aws-redshift/package.json +++ b/packages/@aws-cdk/aws-redshift/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-redshift", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Redshift", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-resourcegroups/package.json b/packages/@aws-cdk/aws-resourcegroups/package.json index 1e0965bc9bbd3..d913d01d8f19f 100644 --- a/packages/@aws-cdk/aws-resourcegroups/package.json +++ b/packages/@aws-cdk/aws-resourcegroups/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-resourcegroups", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ResourceGroups", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-robomaker/package.json b/packages/@aws-cdk/aws-robomaker/package.json index 5a95df9dce868..8a270dcde540b 100644 --- a/packages/@aws-cdk/aws-robomaker/package.json +++ b/packages/@aws-cdk/aws-robomaker/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-robomaker", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::RoboMaker", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index e5db2082593d0..9d38e20deccc4 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-route53-patterns", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS Route53 patterns", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index 52e3e252fb960..78a77b8429f83 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-route53-targets", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS Route53 Alias Targets", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index c2ae9cfcb68b6..b684c29a70fb4 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-route53", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Route53", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-route53resolver/package.json b/packages/@aws-cdk/aws-route53resolver/package.json index ecd376d8b0873..e7d37c84ca6d2 100644 --- a/packages/@aws-cdk/aws-route53resolver/package.json +++ b/packages/@aws-cdk/aws-route53resolver/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-route53resolver", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Route53Resolver", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-s3-assets/package.json b/packages/@aws-cdk/aws-s3-assets/package.json index 46eacfbb32c84..e22c43af3df74 100644 --- a/packages/@aws-cdk/aws-s3-assets/package.json +++ b/packages/@aws-cdk/aws-s3-assets/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-s3-assets", "version": "0.0.0", + "private": true, "description": "Deploy local files and directories to S3", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-s3-deployment/package.json b/packages/@aws-cdk/aws-s3-deployment/package.json index fa62ca2e0f789..9ae0ea1d9faca 100644 --- a/packages/@aws-cdk/aws-s3-deployment/package.json +++ b/packages/@aws-cdk/aws-s3-deployment/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-s3-deployment", "version": "0.0.0", + "private": true, "description": "Constructs for deploying contents to S3 buckets", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-s3-notifications/package.json b/packages/@aws-cdk/aws-s3-notifications/package.json index e78e96ff53d62..e409b8dee2306 100644 --- a/packages/@aws-cdk/aws-s3-notifications/package.json +++ b/packages/@aws-cdk/aws-s3-notifications/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-s3-notifications", "version": "0.0.0", + "private": true, "description": "Bucket Notifications API for AWS S3", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-s3/package.json b/packages/@aws-cdk/aws-s3/package.json index c886e31837d75..2b43590586633 100644 --- a/packages/@aws-cdk/aws-s3/package.json +++ b/packages/@aws-cdk/aws-s3/package.json @@ -4,6 +4,7 @@ "description": "The CDK Construct Library for AWS::S3", "main": "lib/index.js", "types": "lib/index.d.ts", + "private": true, "jsii": { "outdir": "dist", "targets": { diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json index 5d0e892ab9c59..0687f07dac1b4 100644 --- a/packages/@aws-cdk/aws-sagemaker/package.json +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sagemaker", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SageMaker", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-sam/package.json b/packages/@aws-cdk/aws-sam/package.json index 7a788ee71a606..046a8d50de682 100644 --- a/packages/@aws-cdk/aws-sam/package.json +++ b/packages/@aws-cdk/aws-sam/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sam", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for the AWS Serverless Application Model (SAM) resources", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-sdb/package.json b/packages/@aws-cdk/aws-sdb/package.json index 2afed44232898..673f940915718 100644 --- a/packages/@aws-cdk/aws-sdb/package.json +++ b/packages/@aws-cdk/aws-sdb/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sdb", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SDB", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-secretsmanager/package.json b/packages/@aws-cdk/aws-secretsmanager/package.json index 9cf9e71ee87e7..a4274e957df32 100644 --- a/packages/@aws-cdk/aws-secretsmanager/package.json +++ b/packages/@aws-cdk/aws-secretsmanager/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-secretsmanager", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SecretsManager", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-securityhub/package.json b/packages/@aws-cdk/aws-securityhub/package.json index b1df45f5c5f26..821d227836197 100644 --- a/packages/@aws-cdk/aws-securityhub/package.json +++ b/packages/@aws-cdk/aws-securityhub/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-securityhub", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SecurityHub", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-servicecatalog/package.json b/packages/@aws-cdk/aws-servicecatalog/package.json index 3b499afb13861..5c9659ed60f01 100644 --- a/packages/@aws-cdk/aws-servicecatalog/package.json +++ b/packages/@aws-cdk/aws-servicecatalog/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-servicecatalog", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ServiceCatalog", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-servicediscovery/package.json b/packages/@aws-cdk/aws-servicediscovery/package.json index 23cea7535b032..955135ebbf814 100644 --- a/packages/@aws-cdk/aws-servicediscovery/package.json +++ b/packages/@aws-cdk/aws-servicediscovery/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-servicediscovery", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::ServiceDiscovery", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index ea8d76c7cd66a..62aebb9df70aa 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ses-actions", "version": "0.0.0", + "private": true, "description": "Receipt rule actions for AWS SES", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ses/package.json b/packages/@aws-cdk/aws-ses/package.json index dc8e21a10fc91..bda79ae2198ea 100644 --- a/packages/@aws-cdk/aws-ses/package.json +++ b/packages/@aws-cdk/aws-ses/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ses", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SES", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index 59c95c7d06c43..f4c33262a9040 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sns-subscriptions", "version": "0.0.0", + "private": true, "description": "CDK Subscription Constructs for AWS SNS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-sns/package.json b/packages/@aws-cdk/aws-sns/package.json index 83732ab678d65..df5509bf0e27a 100644 --- a/packages/@aws-cdk/aws-sns/package.json +++ b/packages/@aws-cdk/aws-sns/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sns", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SNS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index f1a5ee11d78bb..d6b5fcfa9c77d 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sqs", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SQS", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-ssm/package.json b/packages/@aws-cdk/aws-ssm/package.json index 4437b2e750009..3f2d951923b9c 100644 --- a/packages/@aws-cdk/aws-ssm/package.json +++ b/packages/@aws-cdk/aws-ssm/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-ssm", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SSM", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-sso/package.json b/packages/@aws-cdk/aws-sso/package.json index cc6fa80e8a042..8f9106df1f6da 100644 --- a/packages/@aws-cdk/aws-sso/package.json +++ b/packages/@aws-cdk/aws-sso/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-sso", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::SSO", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 9d7dca5eee6fd..d3b2573c31245 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-stepfunctions-tasks", "version": "0.0.0", + "private": true, "description": "Task integrations for AWS StepFunctions", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-stepfunctions/package.json b/packages/@aws-cdk/aws-stepfunctions/package.json index 1b11c1ea45ebd..48087ef0c9fca 100644 --- a/packages/@aws-cdk/aws-stepfunctions/package.json +++ b/packages/@aws-cdk/aws-stepfunctions/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-stepfunctions", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::StepFunctions", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-synthetics/package.json b/packages/@aws-cdk/aws-synthetics/package.json index bedbeffc9997d..1881900674865 100644 --- a/packages/@aws-cdk/aws-synthetics/package.json +++ b/packages/@aws-cdk/aws-synthetics/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-synthetics", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Synthetics", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-timestream/package.json b/packages/@aws-cdk/aws-timestream/package.json index 57285b6625155..2be73504433d1 100644 --- a/packages/@aws-cdk/aws-timestream/package.json +++ b/packages/@aws-cdk/aws-timestream/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-timestream", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Timestream", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-transfer/package.json b/packages/@aws-cdk/aws-transfer/package.json index 70d4cf2fc0a91..8dfcb87c944cc 100644 --- a/packages/@aws-cdk/aws-transfer/package.json +++ b/packages/@aws-cdk/aws-transfer/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-transfer", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::Transfer", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-waf/package.json b/packages/@aws-cdk/aws-waf/package.json index 052bc1bd2b8c3..7866d4ad2fe04 100644 --- a/packages/@aws-cdk/aws-waf/package.json +++ b/packages/@aws-cdk/aws-waf/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-waf", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::WAF", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-wafregional/package.json b/packages/@aws-cdk/aws-wafregional/package.json index 87ed205a4a7d6..697427834e87b 100644 --- a/packages/@aws-cdk/aws-wafregional/package.json +++ b/packages/@aws-cdk/aws-wafregional/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-wafregional", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::WAFRegional", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-wafv2/package.json b/packages/@aws-cdk/aws-wafv2/package.json index b67ebcf8dbe49..201885b43ec16 100644 --- a/packages/@aws-cdk/aws-wafv2/package.json +++ b/packages/@aws-cdk/aws-wafv2/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-wafv2", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::WAFv2", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-workspaces/package.json b/packages/@aws-cdk/aws-workspaces/package.json index 10e5b99dc2cda..bae43b4d3aab4 100644 --- a/packages/@aws-cdk/aws-workspaces/package.json +++ b/packages/@aws-cdk/aws-workspaces/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/aws-workspaces", "version": "0.0.0", + "private": true, "description": "The CDK Construct Library for AWS::WorkSpaces", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cdk-assets-schema/package.json b/packages/@aws-cdk/cdk-assets-schema/package.json index c8b0b1988e21a..dee5266d498f2 100644 --- a/packages/@aws-cdk/cdk-assets-schema/package.json +++ b/packages/@aws-cdk/cdk-assets-schema/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/cdk-assets-schema", "version": "0.0.0", + "private": true, "description": "Schema definition for the Asset Manifest", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cfnspec/package.json b/packages/@aws-cdk/cfnspec/package.json index 98e7db7193f32..bdc66f94839a5 100644 --- a/packages/@aws-cdk/cfnspec/package.json +++ b/packages/@aws-cdk/cfnspec/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/cfnspec", "description": "The CloudFormation resource specification used by @aws-cdk packages", + "private": true, "version": "0.0.0", "scripts": { "update": "cdk-build && /bin/bash build-tools/update.sh", diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index c9258888b3c6d..6f36853835816 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/cloud-assembly-schema", "version": "0.0.0", + "private": true, "description": "Cloud Assembly Schema", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 2fb02810b2182..12e8be58ec02d 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/cloudformation-diff", "version": "0.0.0", + "private": true, "description": "Utilities to diff CDK stacks against CloudFormation templates", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index 5504214ff2f62..b6f0901e0363b 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/cloudformation-include", "version": "0.0.0", + "private": true, "description": "A package that facilitates working with existing CloudFormation templates in the CDK", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index c673193b26427..164d574226546 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/core", "version": "0.0.0", + "private": true, "description": "AWS Cloud Development Kit Core Library", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index b8942190103fe..4e722cc21fc20 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/custom-resources", "version": "0.0.0", + "private": true, "description": "Constructs for implementing CDK custom resources", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index ea8aa01a47345..fd7bfac93b78b 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/cx-api", "version": "0.0.0", + "private": true, "description": "Cloud executable protocol", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/pipelines/package.json b/packages/@aws-cdk/pipelines/package.json index 845da0c6be1f5..a35737257c368 100644 --- a/packages/@aws-cdk/pipelines/package.json +++ b/packages/@aws-cdk/pipelines/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/pipelines", "version": "0.0.0", + "private": true, "description": "Continuous Delivery of CDK applications", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index 433bd60aa6a17..4942bb05fc615 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/region-info", "version": "0.0.0", + "private": true, "description": "AWS region information, such as service principal names", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index b3b63cbf69e38..af82ea5ae7663 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -1,6 +1,7 @@ { "name": "@aws-cdk/yaml-cfn", "version": "0.0.0", + "private": true, "description": "Utilities for handling CloudFormation-flavored YAML", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@monocdk-experiment/assert/package.json b/packages/@monocdk-experiment/assert/package.json index d366f5c00f20b..69bf8e546184e 100644 --- a/packages/@monocdk-experiment/assert/package.json +++ b/packages/@monocdk-experiment/assert/package.json @@ -1,6 +1,7 @@ { "name": "@monocdk-experiment/assert", "version": "0.0.0", + "private": true, "description": "An assertion library for use with CDK Apps", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@monocdk-experiment/rewrite-imports/package.json b/packages/@monocdk-experiment/rewrite-imports/package.json index ebd269363e9a4..ab73493b6ffd7 100644 --- a/packages/@monocdk-experiment/rewrite-imports/package.json +++ b/packages/@monocdk-experiment/rewrite-imports/package.json @@ -1,6 +1,7 @@ { "name": "@monocdk-experiment/rewrite-imports", "version": "0.0.0", + "private": true, "description": "Rewrites typescript 'import' statements from @aws-cdk/xxx to monocdk", "bin": { "rewrite-imports": "bin/rewrite-imports" diff --git a/packages/aws-cdk-lib/.npmignore b/packages/aws-cdk-lib/.npmignore index b5bc540300d0f..e44d8d8404b14 100644 --- a/packages/aws-cdk-lib/.npmignore +++ b/packages/aws-cdk-lib/.npmignore @@ -4,6 +4,7 @@ *.snk !*.d.ts !*.js +test/ # Coverage coverage @@ -23,4 +24,4 @@ tsconfig.json .eslintrc.js # exclude cdk artifacts **/cdk.out -junit.xml \ No newline at end of file +junit.xml diff --git a/packages/aws-cdk-lib/NOTICE b/packages/aws-cdk-lib/NOTICE index bfccac9a7f69c..201344067fcb2 100644 --- a/packages/aws-cdk-lib/NOTICE +++ b/packages/aws-cdk-lib/NOTICE @@ -1,2 +1,195 @@ AWS Cloud Development Kit (AWS CDK) Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +------------------------------------------------------------------------------- + +The AWS CDK includes the following third-party software/licensing: + +** minimatch - https://www.npmjs.com/package/minimatch +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +---------------- + +** fs-extra - https://www.npmjs.com/package/fs-extra +Copyright (c) 2011-2017 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---------------- + +** semver - https://www.npmjs.com/package/semver +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +---------------- + +** yaml - https://www.npmjs.com/package/yaml +Copyright 2018 Eemeli Aro + +Permission to use, copy, modify, and/or distribute this software for any purpose +with or without fee is hereby granted, provided that the above copyright notice +and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER +TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF +THIS SOFTWARE. + +---------------- + +** case - https://www.npmjs.com/package/case +Copyright (c) 2013 Nathan Bubna + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +---------------- + +** jsonschema - https://www.npmjs.com/package/jsonschema +Copyright (C) 2012-2015 Tom de Grunt + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +---------------- + +** punycode - https://www.npmjs.com/package/punycode +Copyright Mathias Bynens + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---------------- + +** ignore - https://www.npmjs.com/package/ignore +Copyright (c) 2013 Kael Zhang , contributors +http://kael.me/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +---------------- + +** @balena/dockerignore - https://www.npmjs.com/package/@balena/dockerignore +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +---------------- diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 113df7a9afce8..0b6faad6f860c 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -1,6 +1,5 @@ { "name": "aws-cdk-lib", - "private": "true", "version": "0.0.0", "description": "The AWS Cloud Development Kit library", "main": "lib/index.js", @@ -52,7 +51,6 @@ "namespace": "Amazon.CDK.Lib", "packageId": "Amazon.CDK.Lib", "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png", - "versionSuffix": "-devpreview", "signAssembly": true, "assemblyOriginatorKeyFile": "../../key.snk" }, @@ -60,13 +58,12 @@ "package": "software.amazon.awscdk.lib", "maven": { "groupId": "software.amazon.awscdk", - "artifactId": "lib", - "versionSuffix": ".DEVPREVIEW" + "artifactId": "lib" } }, "python": { - "distName": "aws-cdk.lib", - "module": "aws_cdk.lib" + "distName": "aws-cdk-lib", + "module": "aws_cdk_lib" } }, "projectReferences": false diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 6d82300abeb4d..fad1147a9ed47 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -1,6 +1,7 @@ { "name": "cdk-assets", "description": "CDK Asset Publishing Tool", + "private": true, "version": "0.0.0", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/cdk-dasm/package.json b/packages/cdk-dasm/package.json index 276016f4c2794..55d498313449d 100644 --- a/packages/cdk-dasm/package.json +++ b/packages/cdk-dasm/package.json @@ -1,6 +1,7 @@ { "name": "cdk-dasm", "version": "0.0.0", + "private": true, "description": "AWS CDK disassembler: convert CloudFormation to code", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/cdk/package.json b/packages/cdk/package.json index bdd0279a59380..f2718b48eebab 100644 --- a/packages/cdk/package.json +++ b/packages/cdk/package.json @@ -1,6 +1,7 @@ { "name": "cdk", "version": "0.0.0", + "private": true, "description": "AWS CDK Toolkit", "bin": { "cdk": "bin/cdk" @@ -36,4 +37,4 @@ "engines": { "node": ">= 8.10.0" } -} \ No newline at end of file +} diff --git a/packages/decdk/package.json b/packages/decdk/package.json index 0871274f0b016..c69b0fefba007 100644 --- a/packages/decdk/package.json +++ b/packages/decdk/package.json @@ -1,6 +1,7 @@ { "name": "decdk", "version": "0.0.0", + "private": true, "description": "Declarative CDK: a CloudFormation-like syntax for defining CDK stacks", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index f6b5dc263a9fb..92052dd184704 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -1,6 +1,7 @@ { "name": "monocdk", "version": "0.0.0", + "private": true, "description": "An experiment to bundle the entire CDK into a single module", "main": "lib/index.js", "types": "lib/index.d.ts", From 53a9a00841459539608084f50b5ffc007eb6f79c Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Mon, 16 Nov 2020 17:04:04 +0000 Subject: [PATCH 005/304] mark new packages as private --- packages/@aws-cdk/aws-iotsitewise/package.json | 1 + packages/@aws-cdk/aws-ivs/package.json | 1 + packages/@aws-cdk/aws-mediapackage/package.json | 1 + 3 files changed, 3 insertions(+) diff --git a/packages/@aws-cdk/aws-iotsitewise/package.json b/packages/@aws-cdk/aws-iotsitewise/package.json index 8291616094fca..1245f1f2116dd 100644 --- a/packages/@aws-cdk/aws-iotsitewise/package.json +++ b/packages/@aws-cdk/aws-iotsitewise/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "description": "The CDK Construct Library for AWS::IoTSiteWise", "main": "lib/index.js", + "private": true, "types": "lib/index.d.ts", "jsii": { "outdir": "dist", diff --git a/packages/@aws-cdk/aws-ivs/package.json b/packages/@aws-cdk/aws-ivs/package.json index ea872b6960b3f..df615449c2a42 100644 --- a/packages/@aws-cdk/aws-ivs/package.json +++ b/packages/@aws-cdk/aws-ivs/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "description": "The CDK Construct Library for AWS::IVS", "main": "lib/index.js", + "private": true, "types": "lib/index.d.ts", "jsii": { "outdir": "dist", diff --git a/packages/@aws-cdk/aws-mediapackage/package.json b/packages/@aws-cdk/aws-mediapackage/package.json index c3561ae1027bf..d0d36e5630962 100644 --- a/packages/@aws-cdk/aws-mediapackage/package.json +++ b/packages/@aws-cdk/aws-mediapackage/package.json @@ -4,6 +4,7 @@ "description": "The CDK Construct Library for AWS::MediaPackage", "main": "lib/index.js", "types": "lib/index.d.ts", + "private": true, "jsii": { "outdir": "dist", "projectReferences": true, From 89c5f829b037ec4d6e7f3b508ea6d9ac12925bda Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Mon, 16 Nov 2020 17:51:39 +0000 Subject: [PATCH 006/304] chore(cdk): bundle non-public cdk dependencies (#11423) yarn-cfn and region-info are not going to public packages in v2. Bundle them up as part of the `aws-cdk` package. --- package.json | 4 ++++ packages/@aws-cdk/cloud-assembly-schema/package.json | 1 - packages/@aws-cdk/cloudformation-diff/package.json | 1 - packages/@aws-cdk/cx-api/package.json | 1 - packages/aws-cdk/package.json | 4 ++++ tools/pkglint/lib/rules.ts | 12 ++++++++++-- 6 files changed, 18 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d387f40e0394b..3a4844017f3d6 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,10 @@ "aws-cdk-lib/semver/**", "aws-cdk-lib/yaml", "aws-cdk-lib/yaml/**", + "aws-cdk/@aws-cdk/region-info", + "aws-cdk/@aws-cdk/region-info/**", + "aws-cdk/@aws-cdk/yaml-cfn", + "aws-cdk/@aws-cdk/yaml-cfn/**", "monocdk/@balena/dockerignore", "monocdk/@balena/dockerignore/**", "monocdk/case", diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index 6f36853835816..c9258888b3c6d 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/cloud-assembly-schema", "version": "0.0.0", - "private": true, "description": "Cloud Assembly Schema", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 12e8be58ec02d..2fb02810b2182 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/cloudformation-diff", "version": "0.0.0", - "private": true, "description": "Utilities to diff CDK stacks against CloudFormation templates", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index fd7bfac93b78b..ea8aa01a47345 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/cx-api", "version": "0.0.0", - "private": true, "description": "Cloud executable protocol", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index 375fe4b4f9ff6..1aef3cd47b695 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -98,6 +98,10 @@ "aws", "cdk" ], + "bundledDependencies": [ + "@aws-cdk/yaml-cfn", + "@aws-cdk/region-info" + ], "homepage": "https://github.com/aws/aws-cdk", "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index c669ce1efef31..fb2a8d0e6b04e 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -146,7 +146,7 @@ export class ThirdPartyAttributions extends ValidationRule { if (pkg.json.private && !alwaysCheck.includes(pkg.json.name)) { return; } - const bundled = pkg.getBundledDependencies(); + const bundled = pkg.getBundledDependencies().filter(dep => !dep.startsWith('@aws-cdk')); const lines = fs.readFileSync(path.join(pkg.packageRoot, 'NOTICE'), { encoding: 'utf8' }).split('\n'); const re = /^\*\* (\S+)/; @@ -1460,7 +1460,15 @@ export class JestSetup extends ValidationRule { export class UbergenPackageVisibility extends ValidationRule { public readonly name = 'ubergen/package-visibility'; - private readonly publicPackages = ['aws-cdk-lib', 'cdk', 'aws-cdk', 'awslint']; + private readonly publicPackages = [ + '@aws-cdk/cloud-assembly-schema', + '@aws-cdk/cloudformation-diff', + '@aws-cdk/cx-api', + 'aws-cdk-lib', + 'aws-cdk', + 'awslint', + 'cdk', + ]; public validate(pkg: PackageJson): void { // eslint-disable-next-line @typescript-eslint/no-require-imports From 72029b56a14cc2eb0f9f60e726aa3d06e840b252 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Mon, 16 Nov 2020 18:20:37 +0000 Subject: [PATCH 007/304] filter out cdk packages for attributes --- tools/pkglint/lib/rules.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 18cebecbfacd4..78d2bc7ec436e 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -146,7 +146,7 @@ export class ThirdPartyAttributions extends ValidationRule { if (pkg.json.private && !alwaysCheck.includes(pkg.json.name)) { return; } - const bundled = pkg.getAllBundledDependencies(); + const bundled = pkg.getAllBundledDependencies().filter(dep => !dep.startsWith('@aws-cdk')); const lines = fs.readFileSync(path.join(pkg.packageRoot, 'NOTICE'), { encoding: 'utf8' }).split('\n'); const re = /^\*\* (\S+)/; From a367d2136c9fb7c3592b6efaed43790d14056ec4 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Tue, 17 Nov 2020 15:42:24 +0000 Subject: [PATCH 008/304] chore(cdk): dependencies of the CLI are public packages (#11514) Instead of bundling the dependencies of the CLI, make them all public packages --- package.json | 4 ---- packages/@aws-cdk/region-info/package.json | 1 - packages/@aws-cdk/yaml-cfn/package.json | 1 - packages/aws-cdk/package.json | 4 ---- packages/cdk-assets/package.json | 1 - tools/pkglint/lib/rules.ts | 5 +++++ 6 files changed, 5 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 3a4844017f3d6..d387f40e0394b 100644 --- a/package.json +++ b/package.json @@ -95,10 +95,6 @@ "aws-cdk-lib/semver/**", "aws-cdk-lib/yaml", "aws-cdk-lib/yaml/**", - "aws-cdk/@aws-cdk/region-info", - "aws-cdk/@aws-cdk/region-info/**", - "aws-cdk/@aws-cdk/yaml-cfn", - "aws-cdk/@aws-cdk/yaml-cfn/**", "monocdk/@balena/dockerignore", "monocdk/@balena/dockerignore/**", "monocdk/case", diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index 4942bb05fc615..433bd60aa6a17 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/region-info", "version": "0.0.0", - "private": true, "description": "AWS region information, such as service principal names", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index af82ea5ae7663..b3b63cbf69e38 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/yaml-cfn", "version": "0.0.0", - "private": true, "description": "Utilities for handling CloudFormation-flavored YAML", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index 89191024f75ef..2e8e5beea9f3d 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -98,10 +98,6 @@ "aws", "cdk" ], - "bundledDependencies": [ - "@aws-cdk/yaml-cfn", - "@aws-cdk/region-info" - ], "homepage": "https://github.com/aws/aws-cdk", "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 6e271291cf23e..52aadabc11688 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -1,7 +1,6 @@ { "name": "cdk-assets", "description": "CDK Asset Publishing Tool", - "private": true, "version": "0.0.0", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 78d2bc7ec436e..79480e7995e44 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -1460,14 +1460,19 @@ export class JestSetup extends ValidationRule { export class UbergenPackageVisibility extends ValidationRule { public readonly name = 'ubergen/package-visibility'; + + // These include dependencies of the CDK CLI (aws-cdk). private readonly publicPackages = [ '@aws-cdk/cloud-assembly-schema', '@aws-cdk/cloudformation-diff', '@aws-cdk/cx-api', + '@aws-cdk/region-info', + '@aws-cdk/yaml-cfn', 'aws-cdk-lib', 'aws-cdk', 'awslint', 'cdk', + 'cdk-assets', ]; public validate(pkg: PackageJson): void { From e200a20416dd652b2706e929cf0f976debb1c7ec Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Wed, 18 Nov 2020 17:18:55 +0000 Subject: [PATCH 009/304] chore: add cfnspec to the list of public packages (#11550) `cfnspec` is used by `@aws-cdk/cloudformation-diff`, but is currently marked as private; this causes installation of `cloudformation-diff` to fail. Marking `cfnspec` as public for now. A future task (in the CDK v2 project board) tracks the long-term decision on how we should expose this in the future. --- packages/@aws-cdk/cfnspec/package.json | 1 - tools/pkglint/lib/rules.ts | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/cfnspec/package.json b/packages/@aws-cdk/cfnspec/package.json index bdc66f94839a5..98e7db7193f32 100644 --- a/packages/@aws-cdk/cfnspec/package.json +++ b/packages/@aws-cdk/cfnspec/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/cfnspec", "description": "The CloudFormation resource specification used by @aws-cdk packages", - "private": true, "version": "0.0.0", "scripts": { "update": "cdk-build && /bin/bash build-tools/update.sh", diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 79480e7995e44..f5c969cb8f9ce 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -1463,6 +1463,7 @@ export class UbergenPackageVisibility extends ValidationRule { // These include dependencies of the CDK CLI (aws-cdk). private readonly publicPackages = [ + '@aws-cdk/cfnspec', '@aws-cdk/cloud-assembly-schema', '@aws-cdk/cloudformation-diff', '@aws-cdk/cx-api', From a332be67273b20d7e565e53b4b99c956991cd7de Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Thu, 19 Nov 2020 10:24:31 +0000 Subject: [PATCH 010/304] chore: fix bash-specific syntax error in merge-forward script (#11571) In Bash, commands within curly braces must be followed by a semicolon. https://www.gnu.org/software/bash/manual/html_node/Command-Grouping.html Despite the shebang line in the script being /bin/bash, running this command locally (for me) passed just fine. However, in CodeBuild the execution failed. Launching a Bash shell, _then_ running this script locally showed the error. This needs to be committed to the v2-main branch to allow the forward merge job to succeed. I will back-port into master as well. --- scripts/merge-forward.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/merge-forward.sh b/scripts/merge-forward.sh index 96b2a0da53586..3a7632e70d736 100755 --- a/scripts/merge-forward.sh +++ b/scripts/merge-forward.sh @@ -8,6 +8,6 @@ git checkout -B v2-main origin/v2-main # Some package rules differ between v1 and v2, most notably which packages can be public vs private. # These differences are fixable via 'pkglint', so we run that and commit the delta (if any). -lerna run pkglint && { git diff --quiet || git commit -am 'automatic pkglint fixes' } +lerna run pkglint && { git diff --quiet || git commit -am 'automatic pkglint fixes'; } git merge origin/master --no-edit From b1a8e336c94f7d2a93a023d6dc853d23934bfa06 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Tue, 24 Nov 2020 17:27:33 +0000 Subject: [PATCH 011/304] fix(scripts): lerna not found in merge-forward (#11672) The pkglint command is failing on the merge-forward job due to lerna not being found. This also wasn't failing the build itself, just logging an error. Fixed the script to (a) run pkglint via yarn and (b) run as its own command so the failed exit code causes the whole script to fail. --- scripts/merge-forward.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/merge-forward.sh b/scripts/merge-forward.sh index 3a7632e70d736..8ada495ed5979 100755 --- a/scripts/merge-forward.sh +++ b/scripts/merge-forward.sh @@ -8,6 +8,7 @@ git checkout -B v2-main origin/v2-main # Some package rules differ between v1 and v2, most notably which packages can be public vs private. # These differences are fixable via 'pkglint', so we run that and commit the delta (if any). -lerna run pkglint && { git diff --quiet || git commit -am 'automatic pkglint fixes'; } +yarn pkglint +git diff --quiet || git commit -am 'automatic pkglint fixes' git merge origin/master --no-edit From 217b04d94577298ab28e482572c86908d8c37b2d Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Wed, 25 Nov 2020 11:57:06 +0000 Subject: [PATCH 012/304] chore: fix merge-forward pkglint (#11676) Install dependencies and pkglint properly before running pkglint on all packages. --- package.json | 2 +- packages/@monocdk-experiment/assert/package.json | 3 +++ scripts/merge-forward.sh | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e3757fe3f77b9..c8fa9b337a37e 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "include": "dependencies/node-version" }, "scripts": { - "pkglint": "lerna --scope pkglint run build && lerna run pkglint", + "pkglint": "lerna run build --scope pkglint --include-dependencies && lerna run pkglint", "build": "./build.sh", "pack": "./pack.sh", "compat": "./scripts/check-api-compatibility.sh", diff --git a/packages/@monocdk-experiment/assert/package.json b/packages/@monocdk-experiment/assert/package.json index 19315e069df7e..1c56ccf720d75 100644 --- a/packages/@monocdk-experiment/assert/package.json +++ b/packages/@monocdk-experiment/assert/package.json @@ -27,6 +27,9 @@ "disable": true } }, + "pkglint": { + "ignore": true + }, "author": { "name": "Amazon Web Services", "url": "https://aws.amazon.com", diff --git a/scripts/merge-forward.sh b/scripts/merge-forward.sh index 8ada495ed5979..c2a8ff92aed4f 100755 --- a/scripts/merge-forward.sh +++ b/scripts/merge-forward.sh @@ -8,7 +8,9 @@ git checkout -B v2-main origin/v2-main # Some package rules differ between v1 and v2, most notably which packages can be public vs private. # These differences are fixable via 'pkglint', so we run that and commit the delta (if any). +yarn install --frozen-lockfile yarn pkglint +# Commit the difference, if there is one. git diff --quiet || git commit -am 'automatic pkglint fixes' git merge origin/master --no-edit From 0d2a64720bbb35c76d693fca05c009d598feae20 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Wed, 25 Nov 2020 13:32:45 +0000 Subject: [PATCH 013/304] chore: merge-forward runs pkglint after merge (#11702) --- scripts/merge-forward.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/merge-forward.sh b/scripts/merge-forward.sh index c2a8ff92aed4f..a70bf7e9f71c5 100755 --- a/scripts/merge-forward.sh +++ b/scripts/merge-forward.sh @@ -6,11 +6,11 @@ set -exo pipefail git fetch --all git checkout -B v2-main origin/v2-main +git merge origin/master --no-edit + # Some package rules differ between v1 and v2, most notably which packages can be public vs private. # These differences are fixable via 'pkglint', so we run that and commit the delta (if any). yarn install --frozen-lockfile yarn pkglint # Commit the difference, if there is one. git diff --quiet || git commit -am 'automatic pkglint fixes' - -git merge origin/master --no-edit From 58d4a01da85a14b5963a93b889568060d210de1a Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 25 Nov 2020 18:46:34 +0100 Subject: [PATCH 014/304] Merge branch 'master' into v2-main (#11715) --- .github/ISSUE_TEMPLATE/bug.md | 2 +- .github/ISSUE_TEMPLATE/doc.md | 2 +- .github/ISSUE_TEMPLATE/feature-request.md | 2 +- .github/ISSUE_TEMPLATE/general-issues.md | 2 +- .github/workflows/issue-label-assign.yml | 335 +- CHANGELOG.md | 63 + .../ecs-service-extensions/package.json | 2 +- packages/@aws-cdk/assets/package.json | 2 +- packages/@aws-cdk/aws-amplify/lib/app.ts | 6 +- packages/@aws-cdk/aws-amplify/lib/branch.ts | 2 +- packages/@aws-cdk/aws-amplify/lib/domain.ts | 2 +- .../aws-apigateway/lib/authorizers/lambda.ts | 2 +- .../@aws-cdk/aws-apigateway/lib/deployment.ts | 4 +- .../aws-apigateway/lib/integration.ts | 2 +- .../aws-apigateway/lib/integrations/aws.ts | 2 +- .../aws-apigateway/lib/integrations/lambda.ts | 2 +- .../@aws-cdk/aws-apigateway/lib/usage-plan.ts | 2 +- .../@aws-cdk/aws-apigateway/lib/vpc-link.ts | 4 +- .../aws-apigateway/test/deployment.test.ts | 2 +- .../aws-apigateway/test/stage.test.ts | 2 +- .../lib/scalable-target.ts | 2 +- .../lib/step-scaling-action.ts | 2 +- .../test/test.scalable-target.ts | 4 +- packages/@aws-cdk/aws-appmesh/README.md | 8 +- .../aws-appmesh/lib/gateway-route-spec.ts | 34 +- packages/@aws-cdk/aws-appmesh/lib/mesh.ts | 2 +- packages/@aws-cdk/aws-appmesh/lib/route.ts | 2 +- .../lib/virtual-gateway-listener.ts | 107 +- .../aws-appmesh/lib/virtual-gateway.ts | 2 +- .../@aws-cdk/aws-appmesh/lib/virtual-node.ts | 6 +- .../aws-appmesh/lib/virtual-router.ts | 2 +- .../aws-appmesh/lib/virtual-service.ts | 2 +- .../@aws-cdk/aws-appmesh/test/integ.mesh.ts | 8 +- .../aws-appmesh/test/test.gateway-route.ts | 10 +- .../aws-appmesh/test/test.virtual-gateway.ts | 12 +- packages/@aws-cdk/aws-appsync/lib/schema.ts | 2 +- .../aws-autoscaling/lib/auto-scaling-group.ts | 10 +- .../lib/step-scaling-action.ts | 2 +- .../test/auto-scaling-group.test.ts | 6 +- packages/@aws-cdk/aws-backup/lib/plan.ts | 2 +- packages/@aws-cdk/aws-backup/lib/selection.ts | 6 +- .../lib/dns-validated-certificate.ts | 2 +- .../test/certificate.test.ts | 4 +- .../aws-cloudformation/lib/custom-resource.ts | 2 +- .../aws-cloudfront-origins/package.json | 2 +- packages/@aws-cdk/aws-cloudfront/.gitignore | 4 +- packages/@aws-cdk/aws-cloudfront/README.md | 26 +- .../aws-cloudfront/lib/distribution.ts | 6 +- .../lib/experimental/edge-function.ts | 262 + .../lib/experimental/edge-function/index.js | 19 + .../aws-cloudfront/lib/experimental/index.ts | 1 + packages/@aws-cdk/aws-cloudfront/lib/index.ts | 2 + packages/@aws-cdk/aws-cloudfront/package.json | 8 +- .../test/experimental/edge-function.test.ts | 202 + ...ribution-lambda-cross-region.expected.json | 261 + .../integ.distribution-lambda-cross-region.ts | 27 + packages/@aws-cdk/aws-cloudtrail/package.json | 2 +- packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts | 6 +- .../aws-cloudwatch/lib/composite-alarm.ts | 8 +- .../@aws-cdk/aws-cloudwatch/lib/dashboard.ts | 2 +- .../@aws-cdk/aws-codebuild/lib/build-spec.ts | 2 +- .../@aws-cdk/aws-codebuild/lib/project.ts | 10 +- packages/@aws-cdk/aws-codebuild/package.json | 2 +- .../@aws-cdk/aws-codecommit/lib/repository.ts | 2 +- packages/@aws-cdk/aws-codecommit/package.json | 2 +- .../lib/lambda/deployment-group.ts | 8 +- .../lib/server/deployment-group.ts | 6 +- .../lib/profiling-group.ts | 2 +- .../aws-codepipeline-actions/lib/action.ts | 2 +- .../lib/codebuild/build-action.ts | 2 +- .../lib/codedeploy/ecs-deploy-action.ts | 6 +- .../test.codecommit-source-action.ts | 4 +- .../test/lambda/test.lambda-invoke-action.ts | 2 +- .../test/s3/test.s3-source-action.ts | 4 +- .../@aws-cdk/aws-codepipeline/lib/artifact.ts | 6 +- .../@aws-cdk/aws-codepipeline/lib/pipeline.ts | 6 +- .../aws-codepipeline/lib/private/stage.ts | 4 +- .../test/fake-source-action.ts | 2 +- .../@aws-cdk/aws-cognito/lib/user-pool.ts | 2 +- packages/@aws-cdk/aws-cognito/package.json | 1 - .../@aws-cdk/aws-config/lib/managed-rules.ts | 2 +- packages/@aws-cdk/aws-config/lib/rule.ts | 4 +- packages/@aws-cdk/aws-databrew/.eslintrc.js | 3 + packages/@aws-cdk/aws-databrew/.gitignore | 19 + packages/@aws-cdk/aws-databrew/.npmignore | 28 + packages/@aws-cdk/aws-databrew/LICENSE | 201 + packages/@aws-cdk/aws-databrew/NOTICE | 2 + packages/@aws-cdk/aws-databrew/README.md | 16 + packages/@aws-cdk/aws-databrew/jest.config.js | 2 + packages/@aws-cdk/aws-databrew/lib/index.ts | 2 + packages/@aws-cdk/aws-databrew/package.json | 97 + .../aws-databrew/test/databrew.test.ts | 6 + packages/@aws-cdk/aws-dynamodb/lib/table.ts | 12 +- packages/@aws-cdk/aws-dynamodb/package.json | 2 +- packages/@aws-cdk/aws-ec2/lib/instance.ts | 6 +- .../@aws-cdk/aws-ec2/lib/security-group.ts | 4 +- packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts | 6 +- packages/@aws-cdk/aws-ec2/lib/vpc.ts | 2 +- .../aws-ec2/test/security-group.test.ts | 8 +- .../aws-ec2/test/vpc.from-lookup.test.ts | 2 +- packages/@aws-cdk/aws-ec2/test/vpc.test.ts | 2 +- .../aws-ecr-assets/test/image-asset.test.ts | 4 +- packages/@aws-cdk/aws-ecr/lib/repository.ts | 4 +- .../@aws-cdk/aws-ecs/lib/base/base-service.ts | 10 +- .../aws-ecs/lib/base/task-definition.ts | 16 +- .../aws-ecs/lib/container-definition.ts | 12 +- .../@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts | 4 +- .../lib/fargate/fargate-task-definition.ts | 8 + .../@aws-cdk/aws-ecs/lib/linux-parameters.ts | 8 +- .../fargate/test.fargate-task-definition.ts | 4 +- .../@aws-cdk/aws-eks-legacy/lib/aws-auth.ts | 6 +- packages/@aws-cdk/aws-eks/lib/aws-auth.ts | 6 +- .../@aws-cdk/aws-eks/lib/cluster-resource.ts | 4 +- packages/@aws-cdk/aws-eks/lib/cluster.ts | 6 +- .../@aws-cdk/aws-eks/lib/fargate-profile.ts | 2 +- packages/@aws-cdk/aws-eks/package.json | 2 +- .../@aws-cdk/aws-eks/test/test.cluster.ts | 97 + .../lib/load-balancer.ts | 2 +- .../lib/cognito-action.ts | 2 +- .../lib/alb/application-listener-action.ts | 2 +- .../lib/alb/application-listener-rule.ts | 4 +- .../lib/alb/application-listener.ts | 2 +- .../lib/alb/application-load-balancer.ts | 2 +- .../lib/shared/base-listener.ts | 2 +- .../lib/shared/base-load-balancer.ts | 2 +- .../lib/shared/base-target-group.ts | 26 +- .../@aws-cdk/aws-elasticsearch/lib/domain.ts | 2 +- .../@aws-cdk/aws-events-targets/package.json | 2 +- packages/@aws-cdk/aws-events/lib/event-bus.ts | 2 +- packages/@aws-cdk/aws-events/lib/input.ts | 2 +- packages/@aws-cdk/aws-events/lib/rule.ts | 4 +- .../@aws-cdk/aws-events/test/test.input.ts | 2 +- .../lib/endpoint-group.ts | 2 +- packages/@aws-cdk/aws-iam/lib/group.ts | 2 +- .../@aws-cdk/aws-iam/lib/managed-policy.ts | 2 +- packages/@aws-cdk/aws-iam/lib/policy.ts | 2 +- packages/@aws-cdk/aws-iam/lib/role.ts | 2 +- packages/@aws-cdk/aws-iam/lib/user.ts | 2 +- packages/@aws-cdk/aws-iam/lib/util.ts | 2 +- .../aws-iam/test/cross-account.test.ts | 2 +- .../aws-iam/test/policy-document.test.ts | 16 +- .../aws-iam/test/role.from-role-arn.test.ts | 2 +- .../test/test.kinesis.ts | 2 +- .../@aws-cdk/aws-lambda-nodejs/lib/Dockerfile | 5 + .../@aws-cdk/aws-lambda-nodejs/lib/util.ts | 14 +- .../aws-lambda-nodejs/test/docker.test.ts | 17 +- .../aws-lambda-nodejs/test/util.test.ts | 14 +- .../@aws-cdk/aws-lambda/lib/function-base.ts | 23 +- packages/@aws-cdk/aws-lambda/lib/function.ts | 10 +- .../@aws-cdk/aws-lambda/lib/lambda-version.ts | 2 +- packages/@aws-cdk/aws-lambda/package.json | 1 - .../@aws-cdk/aws-lambda/test/alias.test.ts | 2 +- .../test/event-source-mapping.test.ts | 4 +- .../aws-logs/lib/cross-account-destination.ts | 4 +- packages/@aws-cdk/aws-logs/package.json | 2 +- .../@aws-cdk/aws-networkfirewall/.eslintrc.js | 3 + .../@aws-cdk/aws-networkfirewall/.gitignore | 19 + .../@aws-cdk/aws-networkfirewall/.npmignore | 28 + packages/@aws-cdk/aws-networkfirewall/LICENSE | 201 + packages/@aws-cdk/aws-networkfirewall/NOTICE | 2 + .../@aws-cdk/aws-networkfirewall/README.md | 16 + .../aws-networkfirewall/jest.config.js | 2 + .../@aws-cdk/aws-networkfirewall/lib/index.ts | 2 + .../@aws-cdk/aws-networkfirewall/package.json | 97 + .../test/networkfirewall.test.ts | 6 + packages/@aws-cdk/aws-rds/lib/instance.ts | 6 +- packages/@aws-cdk/aws-rds/lib/option-group.ts | 2 +- .../@aws-cdk/aws-rds/lib/parameter-group.ts | 4 +- packages/@aws-cdk/aws-redshift/lib/cluster.ts | 3 + .../aws-redshift/test/cluster.test.ts | 24 + .../@aws-cdk/aws-route53/lib/hosted-zone.ts | 2 +- packages/@aws-cdk/aws-route53/package.json | 2 +- packages/@aws-cdk/aws-s3/lib/bucket.ts | 10 +- .../notifications-resource.ts | 2 +- packages/@aws-cdk/aws-s3/test/bucket.test.ts | 2 +- packages/@aws-cdk/aws-ses/lib/receipt-rule.ts | 2 +- packages/@aws-cdk/aws-signer/.eslintrc.js | 3 + packages/@aws-cdk/aws-signer/.gitignore | 19 + packages/@aws-cdk/aws-signer/.npmignore | 28 + packages/@aws-cdk/aws-signer/LICENSE | 201 + packages/@aws-cdk/aws-signer/NOTICE | 2 + packages/@aws-cdk/aws-signer/README.md | 16 + packages/@aws-cdk/aws-signer/jest.config.js | 2 + packages/@aws-cdk/aws-signer/lib/index.ts | 2 + packages/@aws-cdk/aws-signer/package.json | 97 + .../@aws-cdk/aws-signer/test/signer.test.ts | 6 + packages/@aws-cdk/aws-sqs/package.json | 2 +- .../@aws-cdk/aws-ssm/test/test.parameter.ts | 4 +- .../lib/ecs/run-ecs-task-base.ts | 4 +- .../lib/ecs/run-task.ts | 2 +- .../lib/sagemaker/create-model.ts | 2 +- .../lib/sagemaker/create-training-job.ts | 2 +- .../aws-stepfunctions/lib/activity.ts | 2 +- .../@aws-cdk/aws-synthetics/lib/canary.ts | 2 +- .../aws-synthetics/test/canary.test.ts | 2 +- packages/@aws-cdk/cfnspec/CHANGELOG.md | 171 + packages/@aws-cdk/cfnspec/cfn.version | 2 +- ...0_CloudFormationResourceSpecification.json | 9739 +++++++++++------ .../spec-source/700_DataBrew_patch.json | 32 + .../cloud-assembly-schema/package.json | 2 +- .../@aws-cdk/cloudformation-diff/package.json | 2 +- .../cloudformation-include/package.json | 6 + packages/@aws-cdk/core/lib/cfn-element.ts | 2 +- packages/@aws-cdk/core/lib/cfn-parse.ts | 4 +- packages/@aws-cdk/core/lib/lazy.ts | 274 +- packages/@aws-cdk/core/lib/nested-stack.ts | 5 +- .../core/lib/private/cfn-reference.ts | 2 +- .../core/lib/private/metadata-resource.ts | 2 +- packages/@aws-cdk/core/lib/resource.ts | 4 +- .../stack-synthesizers/default-synthesizer.ts | 4 + .../core/lib/stack-synthesizers/legacy.ts | 3 + .../core/lib/stack-synthesizers/nested.ts | 3 + packages/@aws-cdk/core/lib/token.ts | 2 +- packages/@aws-cdk/core/package.json | 4 +- packages/@aws-cdk/core/test/cfn-json.test.ts | 4 +- .../core/test/cloudformation-json.test.ts | 32 +- packages/@aws-cdk/core/test/construct.test.ts | 2 +- packages/@aws-cdk/core/test/duration.test.ts | 2 +- .../private/physical-name-generator.test.ts | 2 +- .../core/test/private/tree-metadata.test.ts | 4 +- .../new-style-synthesis.test.ts | 12 + packages/@aws-cdk/core/test/stack.test.ts | 2 +- packages/@aws-cdk/core/test/tokens.test.ts | 57 +- .../@aws-cdk/custom-resources/package.json | 4 +- .../lib/actions/publish-assets-action.ts | 2 +- .../@monocdk-experiment/assert/package.json | 2 +- .../rewrite-imports/package.json | 2 +- packages/aws-cdk-lib/package.json | 5 +- packages/aws-cdk/.eslintrc.js | 2 +- packages/aws-cdk/.npmignore | 8 +- packages/aws-cdk/CONTRIBUTING.md | 3 + packages/aws-cdk/bin/cdk.ts | 3 +- .../aws-cdk/lib/api/cxapp/cloud-executable.ts | 13 +- .../{ => v1}/app/csharp/.template.gitignore | 0 .../{ => v1}/app/csharp/README.md | 0 .../{ => v1}/app/csharp/add-project.hook.ts | 2 +- .../{ => v1}/app/csharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.csproj | 0 .../%name.PascalCased%Stack.template.cs | 0 .../%name.PascalCased%/GlobalSuppressions.cs | 0 .../%name.PascalCased%/Program.template.cs | 0 .../{ => v1}/app/fsharp/.template.gitignore | 0 .../{ => v1}/app/fsharp/README.md | 0 .../{ => v1}/app/fsharp/add-project.hook.ts | 2 +- .../{ => v1}/app/fsharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.fsproj | 0 .../%name.PascalCased%Stack.template.fs | 0 .../%name.PascalCased%/Program.template.fs | 0 .../lib/init-templates/{ => v1}/app/info.json | 0 .../{ => v1}/app/java/.template.gitignore | 0 .../{ => v1}/app/java/README.md | 0 .../init-templates/{ => v1}/app/java/cdk.json | 0 .../{ => v1}/app/java/pom.template.xml | 0 .../myorg/%name.PascalCased%App.template.java | 0 .../%name.PascalCased%Stack.template.java | 0 .../%name.PascalCased%Test.template.java | 0 .../app/javascript/.template.gitignore | 0 .../app/javascript/.template.npmignore | 0 .../{ => v1}/app/javascript/README.md | 0 .../app/javascript/bin/%name%.template.js | 0 .../{ => v1}/app/javascript/cdk.template.json | 0 .../javascript/lib/%name%-stack.template.js | 0 .../app/javascript/package.template.json | 0 .../javascript/test/%name%.test.template.js | 0 .../%name.PythonModule%_stack.template.py | 0 .../python/%name.PythonModule%/__init__.py | 0 .../{ => v1}/app/python/.template.gitignore | 0 .../{ => v1}/app/python/README.template.md | 0 .../{ => v1}/app/python/app.template.py | 0 .../{ => v1}/app/python/cdk.template.json | 0 .../{ => v1}/app/python/requirements.txt | 0 .../{ => v1}/app/python/setup.template.py | 0 .../{ => v1}/app/python/source.bat | 0 .../app/typescript/.template.gitignore | 0 .../app/typescript/.template.npmignore | 0 .../{ => v1}/app/typescript/README.md | 0 .../app/typescript/bin/%name%.template.ts | 0 .../{ => v1}/app/typescript/cdk.template.json | 0 .../{ => v1}/app/typescript/jest.config.js | 0 .../typescript/lib/%name%-stack.template.ts | 0 .../app/typescript/package.template.json | 0 .../typescript/test/%name%.test.template.ts | 0 .../{ => v1}/app/typescript/tsconfig.json | 0 .../lib/init-templates/{ => v1}/lib/info.json | 0 .../lib/typescript/.template.gitignore | 0 .../lib/typescript/.template.npmignore | 0 .../lib/typescript/README.template.md | 0 .../{ => v1}/lib/typescript/jest.config.js | 0 .../lib/typescript/lib/index.template.ts | 0 .../lib/typescript/package.template.json | 0 .../typescript/test/%name%.test.template.ts | 0 .../{ => v1}/lib/typescript/tsconfig.json | 0 .../sample-app/csharp/.template.gitignore | 0 .../sample-app/csharp/README.template.md | 0 .../sample-app/csharp/add-project.hook.ts | 2 +- .../sample-app/csharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.csproj | 0 .../%name.PascalCased%Stack.template.cs | 0 .../%name.PascalCased%/GlobalSuppressions.cs | 0 .../%name.PascalCased%/Program.template.cs | 0 .../sample-app/fsharp/.template.gitignore | 0 .../sample-app/fsharp/README.template.md | 0 .../sample-app/fsharp/add-project.hook.ts | 2 +- .../sample-app/fsharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.fsproj | 0 .../%name.PascalCased%Stack.template.fs | 0 .../%name.PascalCased%/Program.template.fs | 0 .../{ => v1}/sample-app/info.json | 0 .../sample-app/java/.template.gitignore | 0 .../sample-app/java/README.template.md | 0 .../{ => v1}/sample-app/java/cdk.json | 0 .../{ => v1}/sample-app/java/pom.template.xml | 0 .../myorg/%name.PascalCased%App.template.java | 0 .../%name.PascalCased%Stack.template.java | 0 .../%name.PascalCased%StackTest.template.java | 0 .../sample-app/javascript/.template.gitignore | 0 .../sample-app/javascript/.template.npmignore | 0 .../sample-app/javascript/README.template.md | 0 .../javascript/bin/%name%.template.js | 0 .../sample-app/javascript/cdk.template.json | 0 .../javascript/lib/%name%-stack.template.js | 0 .../javascript/package.template.json | 0 .../javascript/test/%name%.test.template.js | 0 .../sample-app/javascript/tsconfig.json | 0 .../%name.PythonModule%_stack.template.py | 0 .../python/%name.PythonModule%/__init__.py | 0 .../sample-app/python/.template.gitignore | 0 .../sample-app/python/README.template.md | 0 .../sample-app/python/app.template.py | 0 .../sample-app/python/cdk.template.json | 0 .../sample-app/python/requirements.txt | 0 .../sample-app/python/setup.template.py | 0 .../{ => v1}/sample-app/python/source.bat | 0 .../sample-app/python/tests/__init__.py | 0 .../sample-app/python/tests/unit/__init__.py | 0 ...test_%name.PythonModule%_stack.template.py | 0 .../sample-app/typescript/.template.gitignore | 0 .../sample-app/typescript/.template.npmignore | 0 .../sample-app/typescript/README.template.md | 0 .../typescript/bin/%name%.template.ts | 0 .../sample-app/typescript/cdk.template.json | 0 .../sample-app/typescript/jest.config.js | 0 .../typescript/lib/%name%-stack.template.ts | 0 .../typescript/package.template.json | 0 .../typescript/test/%name%.test.template.ts | 0 .../sample-app/typescript/tsconfig.json | 0 .../v2/app/csharp/.template.gitignore | 342 + .../init-templates/v2/app/csharp/README.md | 14 + .../v2/app/csharp/add-project.hook.ts | 33 + .../v2/app/csharp/cdk.template.json | 3 + .../src/%name.PascalCased%.template.sln | 18 + .../%name.PascalCased%.template.csproj | 19 + .../%name.PascalCased%Stack.template.cs | 12 + .../%name.PascalCased%/GlobalSuppressions.cs | 1 + .../%name.PascalCased%/Program.template.cs | 17 + .../v2/app/fsharp/.template.gitignore | 342 + .../init-templates/v2/app/fsharp/README.md | 18 + .../v2/app/fsharp/add-project.hook.ts | 33 + .../v2/app/fsharp/cdk.template.json | 3 + .../src/%name.PascalCased%.template.sln | 18 + .../%name.PascalCased%.template.fsproj | 24 + .../%name.PascalCased%Stack.template.fs | 8 + .../%name.PascalCased%/Program.template.fs | 11 + .../lib/init-templates/v2/app/info.json | 4 + .../v2/app/java/.template.gitignore | 13 + .../lib/init-templates/v2/app/java/README.md | 18 + .../lib/init-templates/v2/app/java/cdk.json | 3 + .../v2/app/java/pom.template.xml | 66 + .../myorg/%name.PascalCased%App.template.java | 15 + .../%name.PascalCased%Stack.template.java | 17 + .../%name.PascalCased%Test.template.java | 28 + .../v2/app/javascript/.template.gitignore | 8 + .../v2/app/javascript/.template.npmignore | 3 + .../v2/app/javascript/README.md | 12 + .../v2/app/javascript/bin/%name%.template.js | 7 + .../v2/app/javascript/cdk.template.json | 3 + .../javascript/lib/%name%-stack.template.js | 17 + .../v2/app/javascript/package.template.json | 20 + .../javascript/test/%name%.test.template.js | 11 + .../%name.PythonModule%_stack.template.py | 9 + .../python/%name.PythonModule%/__init__.py | 0 .../v2/app/python/.template.gitignore | 10 + .../v2/app/python/README.template.md | 58 + .../v2/app/python/app.template.py | 11 + .../v2/app/python/cdk.template.json | 3 + .../v2/app/python/requirements.txt | 1 + .../v2/app/python/setup.template.py | 45 + .../init-templates/v2/app/python/source.bat | 13 + .../v2/app/typescript/.template.gitignore | 11 + .../v2/app/typescript/.template.npmignore | 6 + .../v2/app/typescript/README.md | 14 + .../v2/app/typescript/bin/%name%.template.ts | 7 + .../v2/app/typescript/cdk.template.json | 3 + .../v2/app/typescript/jest.config.js | 7 + .../typescript/lib/%name%-stack.template.ts | 9 + .../v2/app/typescript/package.template.json | 27 + .../typescript/test/%name%.test.template.ts | 11 + .../v2/app/typescript/tsconfig.json | 23 + .../lib/init-templates/v2/lib/info.json | 4 + .../v2/lib/typescript/.template.gitignore | 11 + .../v2/lib/typescript/.template.npmignore | 6 + .../v2/lib/typescript/README.template.md | 12 + .../v2/lib/typescript/jest.config.js | 7 + .../v2/lib/typescript/lib/index.template.ts | 14 + .../v2/lib/typescript/package.template.json | 26 + .../typescript/test/%name%.test.template.ts | 12 + .../v2/lib/typescript/tsconfig.json | 24 + .../v2/sample-app/csharp/.template.gitignore | 342 + .../v2/sample-app/csharp/README.template.md | 19 + .../v2/sample-app/csharp/add-project.hook.ts | 33 + .../v2/sample-app/csharp/cdk.template.json | 3 + .../src/%name.PascalCased%.template.sln | 18 + .../%name.PascalCased%.template.csproj | 19 + .../%name.PascalCased%Stack.template.cs | 23 + .../%name.PascalCased%/GlobalSuppressions.cs | 1 + .../%name.PascalCased%/Program.template.cs | 15 + .../v2/sample-app/fsharp/.template.gitignore | 342 + .../v2/sample-app/fsharp/README.template.md | 20 + .../v2/sample-app/fsharp/add-project.hook.ts | 33 + .../v2/sample-app/fsharp/cdk.template.json | 3 + .../src/%name.PascalCased%.template.sln | 18 + .../%name.PascalCased%.template.fsproj | 24 + .../%name.PascalCased%Stack.template.fs | 14 + .../%name.PascalCased%/Program.template.fs | 11 + .../init-templates/v2/sample-app/info.json | 4 + .../v2/sample-app/java/.template.gitignore | 13 + .../v2/sample-app/java/README.template.md | 19 + .../v2/sample-app/java/cdk.json | 3 + .../v2/sample-app/java/pom.template.xml | 61 + .../myorg/%name.PascalCased%App.template.java | 13 + .../%name.PascalCased%Stack.template.java | 29 + .../%name.PascalCased%StackTest.template.java | 27 + .../sample-app/javascript/.template.gitignore | 8 + .../sample-app/javascript/.template.npmignore | 3 + .../sample-app/javascript/README.template.md | 13 + .../javascript/bin/%name%.template.js | 6 + .../sample-app/javascript/cdk.template.json | 3 + .../javascript/lib/%name%-stack.template.js | 25 + .../javascript/package.template.json | 20 + .../javascript/test/%name%.test.template.js | 12 + .../v2/sample-app/javascript/tsconfig.json | 26 + .../%name.PythonModule%_stack.template.py | 24 + .../python/%name.PythonModule%/__init__.py | 0 .../v2/sample-app/python/.template.gitignore | 22 + .../v2/sample-app/python/README.template.md | 65 + .../v2/sample-app/python/app.template.py | 11 + .../v2/sample-app/python/cdk.template.json | 3 + .../v2/sample-app/python/requirements.txt | 2 + .../v2/sample-app/python/setup.template.py | 45 + .../v2/sample-app/python/source.bat | 13 + .../v2/sample-app/python/tests/__init__.py | 0 .../sample-app/python/tests/unit/__init__.py | 0 ...test_%name.PythonModule%_stack.template.py | 19 + .../sample-app/typescript/.template.gitignore | 11 + .../sample-app/typescript/.template.npmignore | 6 + .../sample-app/typescript/README.template.md | 15 + .../typescript/bin/%name%.template.ts | 6 + .../sample-app/typescript/cdk.template.json | 3 + .../v2/sample-app/typescript/jest.config.js | 7 + .../typescript/lib/%name%-stack.template.ts | 18 + .../typescript/package.template.json | 26 + .../typescript/test/%name%.test.template.ts | 12 + .../v2/sample-app/typescript/tsconfig.json | 23 + packages/aws-cdk/lib/init.ts | 37 +- packages/aws-cdk/lib/settings.ts | 2 + packages/aws-cdk/package.json | 8 +- .../aws-cdk/test/api/cloud-executable.test.ts | 19 + packages/aws-cdk/test/init.test.ts | 155 +- packages/aws-cdk/test/integ/cli/app/app.js | 117 +- .../aws-cdk/test/integ/cli/cdk-helpers.ts | 13 +- .../aws-cdk/test/integ/cli/cli.integtest.ts | 11 + packages/aws-cdk/tsconfig.json | 4 +- packages/cdk-assets/package.json | 4 +- packages/decdk/lib/declarative-stack.ts | 2 +- packages/decdk/package.json | 3 + packages/monocdk/package.json | 5 +- tools/cdk-build-tools/package.json | 2 +- tools/eslint-plugin-cdk/package.json | 2 +- tools/nodeunit-shim/package.json | 2 +- tools/yarn-cling/package.json | 2 +- version.v1.json | 2 +- yarn.lock | 130 +- 486 files changed, 13278 insertions(+), 4011 deletions(-) create mode 100644 packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts create mode 100644 packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js create mode 100644 packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts create mode 100644 packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts create mode 100644 packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json create mode 100644 packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts create mode 100644 packages/@aws-cdk/aws-databrew/.eslintrc.js create mode 100644 packages/@aws-cdk/aws-databrew/.gitignore create mode 100644 packages/@aws-cdk/aws-databrew/.npmignore create mode 100644 packages/@aws-cdk/aws-databrew/LICENSE create mode 100644 packages/@aws-cdk/aws-databrew/NOTICE create mode 100644 packages/@aws-cdk/aws-databrew/README.md create mode 100644 packages/@aws-cdk/aws-databrew/jest.config.js create mode 100644 packages/@aws-cdk/aws-databrew/lib/index.ts create mode 100644 packages/@aws-cdk/aws-databrew/package.json create mode 100644 packages/@aws-cdk/aws-databrew/test/databrew.test.ts create mode 100644 packages/@aws-cdk/aws-networkfirewall/.eslintrc.js create mode 100644 packages/@aws-cdk/aws-networkfirewall/.gitignore create mode 100644 packages/@aws-cdk/aws-networkfirewall/.npmignore create mode 100644 packages/@aws-cdk/aws-networkfirewall/LICENSE create mode 100644 packages/@aws-cdk/aws-networkfirewall/NOTICE create mode 100644 packages/@aws-cdk/aws-networkfirewall/README.md create mode 100644 packages/@aws-cdk/aws-networkfirewall/jest.config.js create mode 100644 packages/@aws-cdk/aws-networkfirewall/lib/index.ts create mode 100644 packages/@aws-cdk/aws-networkfirewall/package.json create mode 100644 packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts create mode 100644 packages/@aws-cdk/aws-signer/.eslintrc.js create mode 100644 packages/@aws-cdk/aws-signer/.gitignore create mode 100644 packages/@aws-cdk/aws-signer/.npmignore create mode 100644 packages/@aws-cdk/aws-signer/LICENSE create mode 100644 packages/@aws-cdk/aws-signer/NOTICE create mode 100644 packages/@aws-cdk/aws-signer/README.md create mode 100644 packages/@aws-cdk/aws-signer/jest.config.js create mode 100644 packages/@aws-cdk/aws-signer/lib/index.ts create mode 100644 packages/@aws-cdk/aws-signer/package.json create mode 100644 packages/@aws-cdk/aws-signer/test/signer.test.ts create mode 100644 packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/README.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/csharp/src/%name.PascalCased%/Program.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/README.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/fsharp/src/%name.PascalCased%/Program.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/info.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/README.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/cdk.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/pom.template.xml (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/README.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/bin/%name%.template.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/lib/%name%-stack.template.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/javascript/test/%name%.test.template.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/%name.PythonModule%/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/app.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/requirements.txt (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/setup.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/python/source.bat (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/README.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/bin/%name%.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/jest.config.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/lib/%name%-stack.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/test/%name%.test.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/app/typescript/tsconfig.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/info.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/jest.config.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/lib/index.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/test/%name%.test.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/lib/typescript/tsconfig.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/csharp/src/%name.PascalCased%/Program.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/info.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/cdk.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/pom.template.xml (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/bin/%name%.template.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/lib/%name%-stack.template.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/test/%name%.test.template.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/javascript/tsconfig.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/%name.PythonModule%/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/app.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/requirements.txt (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/setup.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/source.bat (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/tests/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/tests/unit/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/bin/%name%.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/jest.config.js (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/lib/%name%-stack.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/test/%name%.test.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{ => v1}/sample-app/typescript/tsconfig.json (100%) create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/info.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/README.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/source.bat create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/info.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/info.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/__init__.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts create mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index b12a80d025350..286ca89cb1c53 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -1,7 +1,7 @@ --- name: "\U0001F41B Bug Report" about: Report a bug -title: "[module] " +title: "(module name): short issue description" labels: bug, needs-triage --- diff --git a/.github/ISSUE_TEMPLATE/doc.md b/.github/ISSUE_TEMPLATE/doc.md index 022c04c22ed80..3c8a1dc691d0e 100644 --- a/.github/ISSUE_TEMPLATE/doc.md +++ b/.github/ISSUE_TEMPLATE/doc.md @@ -1,7 +1,7 @@ --- name: "📕 Documentation Issue" about: Issue in the reference documentation or developer guide -title: "[module] " +title: "(module name): short issue description" labels: feature-request, documentation, needs-triage --- diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index c2d12b48d5750..163f2f54d0b88 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -1,7 +1,7 @@ --- name: "\U0001F680 Feature Request" about: Request a new feature -title: "[module] " +title: "(module name): short issue description" labels: feature-request, needs-triage --- diff --git a/.github/ISSUE_TEMPLATE/general-issues.md b/.github/ISSUE_TEMPLATE/general-issues.md index 372cb49eb540c..dcd6520c0cfda 100644 --- a/.github/ISSUE_TEMPLATE/general-issues.md +++ b/.github/ISSUE_TEMPLATE/general-issues.md @@ -1,7 +1,7 @@ --- name: "\U00002753 General Issue" about: Create a new issue -title: "[module] " +title: "(module name): short issue description" labels: needs-triage, guidance --- diff --git a/.github/workflows/issue-label-assign.yml b/.github/workflows/issue-label-assign.yml index 6184e7c0580f5..00e2ee1d2ecaf 100644 --- a/.github/workflows/issue-label-assign.yml +++ b/.github/workflows/issue-label-assign.yml @@ -2,6 +2,10 @@ name: "Set Issue Label and Assignee" on: issues: types: [opened, edited] + pull_request: + types: [opened, edited] + pull_request_target: + types: [opened, edited] jobs: test: @@ -13,170 +17,169 @@ jobs: title-or-body: 'title' parameters: > [ - {"keywords":["[cli]","[command line]"],"labels":["package/tools"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/alexa-ask]","[alexa-ask]","[alexa ask]"],"labels":["@aws-cdk/alexa-ask"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/app-delivery]","[app-delivery]","[app delivery]"],"labels":["@aws-cdk/app-delivery"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/assert]","[assert]"],"labels":["@aws-cdk/assert"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/assets]","[assets]"],"labels":["@aws-cdk/assets"],"assignees":["eladb"]}, - {"keywords":["[@aws-cdk/aws-accessanalyzer]","[aws-accessanalyzer]","[accessanalyzer]","[access analyzer]"],"labels":["@aws-cdk/aws-accessanalyzer"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-acmpca]","[aws-acmpca]","[acmpca]"],"labels":["@aws-cdk/aws-acmpca"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-amazonmq]","[aws-amazonmq]","[amazonmq]","[amazon mq]","[amazon-mq]"],"labels":["@aws-cdk/aws-amazonmq"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-amplify]","[aws-amplify]","[amplify]"],"labels":["@aws-cdk/aws-amplify"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-apigateway]","[aws-apigateway]","[apigateway]","[api gateway]","[api-gateway]"],"labels":["@aws-cdk/aws-apigateway"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/aws-apigatewayv2]","[aws-apigatewayv2]","[apigatewayv2]","[apigateway v2]","[api-gateway-v2]"],"labels":["@aws-cdk/aws-apigatewayv2"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/aws-apigatewayv2-integrations]","[aws-apigatewayv2-integrations]","[apigatewayv2-integrations]","[apigateway v2 integrations]","[api-gateway-v2-integrations]"],"labels":["@aws-cdk/aws-apigatewayv2-integrations"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/aws-appconfig]","[aws-appconfig]","[appconfig]","[app config]","[app-config]"],"labels":["@aws-cdk/aws-appconfig"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-appflow]","[aws-appflow]","[appflow]","[app flow]","[app-flow]"],"labels":["@aws-cdk/aws-appflow"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-applicationautoscaling]","[aws-applicationautoscaling]","[applicationautoscaling]","[application autoscaling]","[application-autoscaling]"],"labels":["@aws-cdk/aws-applicationautoscaling"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-applicationinsights]","[aws-applicationinsights]","[applicationinsights]","[application insights]","[application-insights]"],"labels":["@aws-cdk/aws-applicationinsights"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-appmesh]","[aws-appmesh]","[appmesh]","[app mesh]","[app-mesh]"],"labels":["@aws-cdk/aws-appmesh"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-appstream]","[aws-appstream]","[appstream]","[app stream]","[app-stream]"],"labels":["@aws-cdk/aws-appstream"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-appsync]","[aws-appsync]","[appsync]","[app sync]","[app-sync]"],"labels":["@aws-cdk/aws-appsync"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-athena]","[aws-athena]","[athena]"],"labels":["@aws-cdk/aws-athena"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-autoscaling]","[aws-autoscaling]","[autoscaling]","[auto scaling]","[auto-scaling]"],"labels":["@aws-cdk/aws-autoscaling"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-autoscaling-api]","[aws-autoscaling-api]","[autoscaling-api]","[autoscaling api]","[autoscaling-api]"],"labels":["@aws-cdk/aws-autoscaling-api"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-autoscaling-common]","[aws-autoscaling-common]","[autoscaling-common]","[autoscaling common]","[autoscaling-common]"],"labels":["@aws-cdk/aws-autoscaling-common"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-autoscaling-hooktargets]","[aws-autoscaling-hooktargets]","[autoscaling-hooktargets]","[autoscaling hooktargets]"],"labels":["@aws-cdk/aws-autoscaling-hooktargets"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-autoscalingplans]","[aws-autoscalingplans]","[autoscalingplans]","[autoscaling plans]", "[autoscaling-plans]"],"labels":["@aws-cdk/aws-autoscalingplans"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-backup]","[aws-backup]","[backup]"],"labels":["@aws-cdk/aws-backup"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-batch]","[aws-batch]","[batch]"],"labels":["@aws-cdk/aws-batch"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-budgets]","[aws-budgets]","[budgets]"],"labels":["@aws-cdk/aws-budgets"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-cassandra]","[aws-cassandra]","[cassandra]"],"labels":["@aws-cdk/aws-cassandra"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-ce]","[aws-ce]","[ce]"],"labels":["@aws-cdk/aws-ce"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-certificatemanager]","[aws-certificatemanager]","[certificatemanager]","[certificate manager]","[certificate-manager]","[acm]"],"labels":["@aws-cdk/aws-certificatemanager"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-chatbot]","[aws-chatbot]","[chatbot]"],"labels":["@aws-cdk/aws-chatbot"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-cloud9]","[aws-cloud9]","[cloud9]","[cloud 9]"],"labels":["@aws-cdk/aws-cloud9"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-cloudformation]","[aws-cloudformation]","[cloudformation]","[cloud formation]"],"labels":["@aws-cdk/aws-cloudformation"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-cloudfront]","[aws-cloudfront]","[cloudfront]","[cloud front]"],"labels":["@aws-cdk/aws-cloudfront"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-cloudfront-origins]","[aws-cloudfront-origins]","[cloudfront-origins]","[cloudfront origins]"],"labels":["@aws-cdk/aws-cloudfront-origins"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-cloudtrail]","[aws-cloudtrail]","[cloudtrail]","[cloud trail]"],"labels":["@aws-cdk/aws-cloudtrail"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-cloudwatch]","[aws-cloudwatch]","[cloudwatch]","[cloud watch]"],"labels":["@aws-cdk/aws-cloudwatch"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-cloudwatch-actions]","[aws-cloudwatch-actions]","[cloudwatch-actions]","[cloudwatch actions]"],"labels":["@aws-cdk/aws-cloudwatch-actions"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-codeartifact]","[aws-codeartifact]","[codeartifact]","[code artifact]","[code-artifact]"],"labels":["@aws-cdk/aws-codeartifact"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-codebuild]","[aws-codebuild]","[codebuild]","[code build]","[code-build]"],"labels":["@aws-cdk/aws-codebuild"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codecommit]","[aws-codecommit]","[codecommit]","[code commit]", "[code-commit]"],"labels":["@aws-cdk/aws-codecommit"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codedeploy]","[aws-codedeploy]","[codedeploy]","[code deploy]","[code-deploy]"],"labels":["@aws-cdk/aws-codedeploy"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codeguruprofiler]","[aws-codeguruprofiler]","[codeguruprofiler]","[codeguru profiler]","[codeguru-profiler]"],"labels":["@aws-cdk/aws-codeguruprofiler"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codegurureviewer]","[aws-codegurureviewer]","[codegurureviewer]","[codeguru reviewer]","[codeguru-reviewer]"],"labels":["@aws-cdk/aws-codegurureviewer"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-codepipeline]","[aws-codepipeline]","[codepipeline]","[code pipeline]","[code-pipeline]"],"labels":["@aws-cdk/aws-codepipeline"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codepipeline-actions]","[aws-codepipeline-actions]","[codepipeline-actions]","[codepipeline actions]"],"labels":["@aws-cdk/aws-codepipeline-actions"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codestar]","[aws-codestar]","[codestar]"],"labels":["@aws-cdk/aws-codestar"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codestarconnections]","[aws-codestarconnections]","[codestarconnections]","[codestar connections]","[codestar-connections]"],"labels":["@aws-cdk/aws-codestarconnections"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-codestarnotifications]","[aws-codestarnotifications]","[codestarnotifications]","[codestar notifications]","[codestar-notifications]"],"labels":["@aws-cdk/aws-codestarnotifications"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-cognito]","[aws-cognito]","[cognito]"],"labels":["@aws-cdk/aws-cognito"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/aws-config]","[aws-config]","[config]"],"labels":["@aws-cdk/aws-config"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-datapipeline]","[aws-datapipeline]","[datapipeline]","[data pipeline]","[data-pipeline]"],"labels":["@aws-cdk/aws-datapipeline"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-dax]","[aws-dax]","[dax]"],"labels":["@aws-cdk/aws-dax"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-detective]","[aws-detective]","[detective]"],"labels":["@aws-cdk/aws-detective"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-directoryservice]","[aws-directoryservice]","[directoryservice]","[directory service]","[directory-service]"],"labels":["@aws-cdk/aws-directoryservice"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-dlm]","[aws-dlm]","[dlm]"],"labels":["@aws-cdk/aws-dlm"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-dms]","[aws-dms]","[dms]"],"labels":["@aws-cdk/aws-dms"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-docdb]","[aws-docdb]","[docdb]","[doc db]","[doc-db]"],"labels":["@aws-cdk/aws-docdb"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-dynamodb]","[aws-dynamodb]","[dynamodb]","[dynamo db]","[dynamo-db]"],"labels":["@aws-cdk/aws-dynamodb"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-dynamodb-global]","[aws-dynamodb-global]","[dynamodb-global]","[dynamodb global]"],"labels":["@aws-cdk/aws-dynamodb-global"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-ec2]","[aws-ec2]","[ec2]","[vpc]"],"labels":["@aws-cdk/aws-ec2"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-ecr]","[aws-ecr]","[ecr]"],"labels":["@aws-cdk/aws-ecr"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-ecr-assets]","[aws-ecr-assets]","[ecr-assets]","[ecr assets]","[ecrassets]"],"labels":["@aws-cdk/aws-ecr-assets"],"assignees":["eladb"]}, - {"keywords":["[@aws-cdk/aws-efs]","[aws-efs]","[efs]"],"labels":["@aws-cdk/aws-efs"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-eks]","[aws-eks]","[eks]"],"labels":["@aws-cdk/aws-eks"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-elasticache]","[aws-elasticache]","[elasticache]","[elastic cache]","[elastic-cache]"],"labels":["@aws-cdk/aws-elasticache"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-elasticbeanstalk]","[aws-elasticbeanstalk]","[elasticbeanstalk]","[elastic beanstalk]","[elastic-beanstalk]"],"labels":["@aws-cdk/aws-elasticbeanstalk"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-elasticloadbalancing]","[aws-elasticloadbalancing]","[elasticloadbalancing]","[elastic loadbalancing]","[elastic-loadbalancing]","[elb]"],"labels":["@aws-cdk/aws-elasticloadbalancing"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-elasticloadbalancingv2]","[aws-elasticloadbalancingv2]","[elasticloadbalancingv2]","[elastic-loadbalancing-v2]","[elbv2]","[elb v2]"],"labels":["@aws-cdk/aws-elasticloadbalancingv2"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-elasticloadbalancingv2-targets]","[aws-elasticloadbalancingv2-targets]","[elasticloadbalancingv2-targets]","[elasticloadbalancingv2 targets]","[elbv2 targets]"],"labels":["@aws-cdk/aws-elasticloadbalancingv2-targets"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-elasticsearch]","[aws-elasticsearch]","[elasticsearch]","[elastic search]","[elastic-search]"],"labels":["@aws-cdk/aws-elasticsearch"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-emr]","[aws-emr]","[emr]"],"labels":["@aws-cdk/aws-emr"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-events]","[aws-events]","[events]","[eventbridge]","event-bridge]"],"labels":["@aws-cdk/aws-events"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-events-targets]","[aws-events-targets]","[events-targets]","[events targets]"],"labels":["@aws-cdk/aws-events-targets"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-eventschemas]","[aws-eventschemas]","[eventschemas]","[event schemas]"],"labels":["@aws-cdk/aws-eventschemas"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-fms]","[aws-fms]","[fms]"],"labels":["@aws-cdk/aws-fms"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-fsx]","[aws-fsx]","[fsx]"],"labels":["@aws-cdk/aws-fsx"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-gamelift]","[aws-gamelift]","[gamelift]","[game lift]"],"labels":["@aws-cdk/aws-gamelift"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-globalaccelerator]","[aws-globalaccelerator]","[globalaccelerator]","[global accelerator]","[global-accelerator]"],"labels":["@aws-cdk/aws-globalaccelerator"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-glue]","[aws-glue]","[glue]"],"labels":["@aws-cdk/aws-glue"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-greengrass]","[aws-greengrass]","[greengrass]","[green grass]","[green-grass]"],"labels":["@aws-cdk/aws-greengrass"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-guardduty]","[aws-guardduty]","[guardduty]","[guard duty]","[guard-duty]"],"labels":["@aws-cdk/aws-guardduty"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-iam]","[aws-iam]","[iam]"],"labels":["@aws-cdk/aws-iam"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/aws-imagebuilder]","[aws-imagebuilder]","[imagebuilder]","[image builder]","[image-builder]"],"labels":["@aws-cdk/aws-imagebuilder"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-inspector]","[aws-inspector]","[inspector]"],"labels":["@aws-cdk/aws-inspector"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-iot]","[aws-iot]","[iot]"],"labels":["@aws-cdk/aws-iot"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-iot1click]","[aws-iot1click]","[iot1click]","[iot 1click]"],"labels":["@aws-cdk/aws-iot1click"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-iotanalytics]","[aws-iotanalytics]","[iotanalytics]","[iot analytics]","[iot-analytics]"],"labels":["@aws-cdk/aws-iotanalytics"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-iotevents]","[aws-iotevents]","[iotevents]","[iot events]","[iot-events]"],"labels":["@aws-cdk/aws-iotevents"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-iotsitewise]","[aws-iotsitewise]","[iotsitewise]","[iot sitewise]","[iot-sitewise]","[iot-site-wise]","[iot site wise]"],"labels":["@aws-cdk/aws-iotsitewise"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-iotthingsgraph]","[aws-iotthingsgraph]","[iotthingsgraph]","[iot things graph]","[iot-things-graph]"],"labels":["@aws-cdk/aws-iotthingsgraph"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-ivs]","[aws-ivs]","[Interactive Video Service]","[ivs]"],"labels":["@aws-cdk/aws-ivs"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-kendra]","[aws-kendra]","[kendra]"],"labels":["@aws-cdk/aws-kendra"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-kinesis]","[aws-kinesis]","[kinesis]"],"labels":["@aws-cdk/aws-kinesis"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-kinesisanalytics]","[aws-kinesisanalytics]","[kinesisanalytics]","[kinesis analytics]","[kinesis-analytics]"],"labels":["@aws-cdk/aws-kinesisanalytics"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-kinesisfirehose]","[aws-kinesisfirehose]","[kinesisfirehose]","[kinesis firehose]","[kinesis-firehose]"],"labels":["@aws-cdk/aws-kinesisfirehose"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-kms]","[aws-kms]","[kms]"],"labels":["@aws-cdk/aws-kms"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-lakeformation]","[aws-lakeformation]","[lakeformation]","[lake formation]","[lake-formation]"],"labels":["@aws-cdk/aws-lakeformation"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-lambda]","[aws-lambda]","[lambda]"],"labels":["@aws-cdk/aws-lambda"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/aws-lambda-event-sources]","[aws-lambda-event-sources]","[lambda-event-sources]","[lambda event sources]"],"labels":["@aws-cdk/aws-lambda-event-sources"],"assignees":["nija-at"]}, - {"keywords":["[@aws-cdk/aws-lambda-nodejs]","[aws-lambda-nodejs]","[lambda-nodejs]","[lambda nodejs]"],"labels":["@aws-cdk/aws-lambda-nodejs"],"assignees":["eladb"]}, - {"keywords":["[@aws-cdk/aws-lambda-python]","[aws-lambda-python]","[lambda-python]","[lambda python]"],"labels":["@aws-cdk/aws-lambda-python"],"assignees":["eladb"]}, - {"keywords":["[@aws-cdk/aws-logs]","[aws-logs]","[logs]"],"labels":["@aws-cdk/aws-logs"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-logs-destinations]","[aws-logs-destinations]","[logs-destinations]","[logs destinations]"],"labels":["@aws-cdk/aws-logs-destinations"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-macie]","[aws-macie]","[macie]"],"labels":["@aws-cdk/aws-macie"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-managedblockchain]","[aws-managedblockchain]","[managedblockchain]","[managed blockchain]","[managed-blockchain]"],"labels":["@aws-cdk/aws-managedblockchain"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-mediaconvert]","[aws-mediaconvert]","[mediaconvert]","[media convert]","[media-convert]"],"labels":["@aws-cdk/aws-mediaconvert"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-medialive]","[aws-medialive]","[medialive]","[media live]","[media-live]"],"labels":["@aws-cdk/aws-medialive"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-mediastore]","[aws-mediastore]","[mediastore]","[media store]","[media-store]"],"labels":["@aws-cdk/aws-mediastore"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-mediapackage]","[aws-mediapackage]","[mediapackage]","[media package]","[media-package]"],"labels":["@aws-cdk/aws-mediapackage"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-msk]","[aws-msk]","[msk]"],"labels":["@aws-cdk/aws-msk"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-neptune]","[aws-neptune]","[neptune]"],"labels":["@aws-cdk/aws-neptune"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-networkmanager]","[aws-networkmanager]","[networkmanager]","[network manager]","[network-manager]"],"labels":["@aws-cdk/aws-networkmanager"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-opsworks]","[aws-opsworks]","[opsworks]","[ops works]","[ops-works]"],"labels":["@aws-cdk/aws-opsworks"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-opsworkscm]","[aws-opsworkscm]","[opsworkscm]","[opsworks cm]","[opsworks-cm]"],"labels":["@aws-cdk/aws-opsworkscm"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-personalize]","[aws-personalize]","[personalize]"],"labels":["@aws-cdk/aws-personalize"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-pinpoint]","[aws-pinpoint]","[pinpoint]"],"labels":["@aws-cdk/aws-pinpoint"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-pinpointemail]","[aws-pinpointemail]","[pinpointemail]","[pinpoint email]","[pinpoint-email]"],"labels":["@aws-cdk/aws-pinpointemail"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-qldb]","[aws-qldb]","[qldb]"],"labels":["@aws-cdk/aws-qldb"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-ram]","[aws-ram]","[ram]"],"labels":["@aws-cdk/aws-ram"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-rds]","[aws-rds]","[rds]"],"labels":["@aws-cdk/aws-rds"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-redshift]","[aws-redshift]","[redshift]","[red shift]","[red-shift]"],"labels":["@aws-cdk/aws-redshift"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-resourcegroups]","[aws-resourcegroups]","[resourcegroups]","[resource groups]","[resource-groups]"],"labels":["@aws-cdk/aws-resourcegroups"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-robomaker]","[aws-robomaker]","[robomaker]","[robo maker]","[robo-maker]"],"labels":["@aws-cdk/aws-robomaker"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-route53]","[aws-route53]","[route53]","[route 53]","[route-53]"],"labels":["@aws-cdk/aws-route53"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-route53-patterns]","[aws-route53-patterns]","[route53-patterns]","[route53 patterns]","[route-53-patterns]"],"labels":["@aws-cdk/aws-route53-patterns"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-route53-targets]","[aws-route53-targets]","[route53-targets]","[route53 targets]","[route-53-targets]"],"labels":["@aws-cdk/aws-route53-targets"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-route53resolver]","[aws-route53resolver]","[route53resolver]","[route53 resolver]","[route-53-resolver]"],"labels":["@aws-cdk/aws-route53resolver"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-s3]","[aws-s3]","[s3]"],"labels":["@aws-cdk/aws-s3"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-s3-assets]","[aws-s3-assets]","[s3-assets]","[s3 assets]"],"labels":["@aws-cdk/aws-s3-assets"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-s3-deployment]","[aws-s3-deployment]","[s3-deployment]","[s3 deployment]"],"labels":["@aws-cdk/aws-s3-deployment"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-s3-notifications]","[aws-s3-notifications]","[s3-notifications]","[s3 notifications]"],"labels":["@aws-cdk/aws-s3-notifications"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-sagemaker]","[aws-sagemaker]","[sagemaker]","[sage maker]","[sage-maker]"],"labels":["@aws-cdk/aws-sagemaker"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-sam]","[aws-sam]","[sam]"],"labels":["@aws-cdk/aws-sam"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-sdb]","[aws-sdb]","[sdb]"],"labels":["@aws-cdk/aws-sdb"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-secretsmanager]","[aws-secretsmanager]","[secretsmanager]","[secrets manager]","[secrets-manager]"],"labels":["@aws-cdk/aws-secretsmanager"],"assignees":["njlynch"]}, - {"keywords":["[@aws-cdk/aws-securityhub]","[aws-securityhub]","[securityhub]","[security hub]","[security-hub]"],"labels":["@aws-cdk/aws-securityhub"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-servicecatalog]","[aws-servicecatalog]","[servicecatalog]","[service catalog]","[service-catalog]"],"labels":["@aws-cdk/aws-servicecatalog"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-servicediscovery]","[aws-servicediscovery]","[servicediscovery]","[service discovery]","[service-discovery]"],"labels":["@aws-cdk/aws-servicediscovery"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-ses]","[aws-ses]","[ses]"],"labels":["@aws-cdk/aws-ses"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-ses-actions]","[aws-ses-actions]","[ses-actions]","[ses actions]"],"labels":["@aws-cdk/aws-ses-actions"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-sns]","[aws-sns]","[sns]"],"labels":["@aws-cdk/aws-sns"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-sns-subscriptions]","[aws-sns-subscriptions]","[sns-subscriptions]","[sns subscriptions]"],"labels":["@aws-cdk/aws-sns-subscriptions"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-sqs]","[aws-sqs]","[sqs]"],"labels":["@aws-cdk/aws-sqs"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-ssm]","[aws-ssm]","[ssm]"],"labels":["@aws-cdk/aws-ssm"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["[@aws-cdk/aws-sso]","[aws-sso]","[sso]"],"labels":["@aws-cdk/aws-sso"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-stepfunctions]","[aws-stepfunctions]","[stepfunctions]","[step functions]","[step-functions]"],"labels":["@aws-cdk/aws-stepfunctions"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-stepfunctions-tasks]","[aws-stepfunctions-tasks]","[stepfunctions-tasks]","[stepfunctions tasks]"],"labels":["@aws-cdk/aws-stepfunctions-tasks"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-synthetics]","[aws-synthetics]","[synthetics]"],"labels":["@aws-cdk/aws-synthetics"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/aws-timestream]","[aws-timestream]","[timestream]"],"labels":["@aws-cdk/aws-timestream"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/aws-transfer]","[aws-transfer]","[transfer]"],"labels":["@aws-cdk/aws-transfer"],"assignees":["iliapolo"]}, - {"keywords":["[@aws-cdk/aws-waf]","[aws-waf]","[waf]"],"labels":["@aws-cdk/aws-waf"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-wafregional]","[aws-wafregional]","[wafregional]","[waf regional]","[waf-regional]"],"labels":["@aws-cdk/aws-wafregional"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-wafv2]","[aws-wafv2]","[wafv2]","[waf v2]","[waf-v2]"],"labels":["@aws-cdk/aws-wafv2"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/aws-workspaces]","[aws-workspaces]","[workspaces]"],"labels":["@aws-cdk/aws-workspaces"],"assignees":["NetaNir"]}, - {"keywords":["[@aws-cdk/cfnspec]","[cfnspec]","[cfn spec]","[cfn-spec]"],"labels":["@aws-cdk/cfnspec"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/cloud-assembly-schema]","[cloud-assembly-schema]","[cloud assembly schema]"],"labels":["@aws-cdk/cloud-assembly-schema"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/cloudformation-diff]","[cloudformation-diff]","[cloudformation diff]","[cfn diff]"],"labels":["@aws-cdk/cloudformation-diff"],"assignees":["shivlaks"]}, - {"keywords":["[@aws-cdk/cloudformation-include]","[cloudformation-include]","[cloudformation include]","[cfn include]","[cfn-include]"],"labels":["@aws-cdk/cloudformation-include"],"assignees":["skinny85"]}, - {"keywords":["[@aws-cdk/core]","[core]"],"labels":["@aws-cdk/core"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/custom-resources]","[custom-resources]","[custom resources]"],"labels":["@aws-cdk/custom-resources"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/cx-api]","[cx-api]","[cx api]"],"labels":["@aws-cdk/cx-api"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/pipelines]","[pipelines]","[cdk pipelines]","[cdk-pipelines]"],"labels":["@aws-cdk/pipelines"],"assignees":["rix0rrr"]}, - {"keywords":["[@aws-cdk/region-info]","[region-info]","[region info]"],"labels":["@aws-cdk/region-info"],"assignees":["RomainMuller"]} + {"keywords":["(cli)","(command line)"],"labels":["package/tools"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/alexa-ask)","(alexa-ask)","(alexa ask)"],"labels":["@aws-cdk/alexa-ask"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/app-delivery)","(app-delivery)","(app delivery)"],"labels":["@aws-cdk/app-delivery"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/assert)","(assert)"],"labels":["@aws-cdk/assert"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/assets)","(assets)"],"labels":["@aws-cdk/assets"],"assignees":["eladb"]}, + {"keywords":["(@aws-cdk/aws-accessanalyzer)","(aws-accessanalyzer)","(accessanalyzer)","(access analyzer)"],"labels":["@aws-cdk/aws-accessanalyzer"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-acmpca)","(aws-acmpca)","(acmpca)"],"labels":["@aws-cdk/aws-acmpca"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-amazonmq)","(aws-amazonmq)","(amazonmq)","(amazon mq)","(amazon-mq)"],"labels":["@aws-cdk/aws-amazonmq"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-amplify)","(aws-amplify)","(amplify)"],"labels":["@aws-cdk/aws-amplify"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-apigateway)","(aws-apigateway)","(apigateway)","(api gateway)","(api-gateway)"],"labels":["@aws-cdk/aws-apigateway"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/aws-apigatewayv2)","(aws-apigatewayv2)","(apigatewayv2)","(apigateway v2)","(api-gateway-v2)"],"labels":["@aws-cdk/aws-apigatewayv2"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/aws-apigatewayv2-integrations)","(aws-apigatewayv2-integrations)","(apigatewayv2-integrations)","(apigateway v2 integrations)","(api-gateway-v2-integrations)"],"labels":["@aws-cdk/aws-apigatewayv2-integrations"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/aws-appconfig)","(aws-appconfig)","(appconfig)","(app config)","(app-config)"],"labels":["@aws-cdk/aws-appconfig"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-appflow)","(aws-appflow)","(appflow)","(app flow)","(app-flow)"],"labels":["@aws-cdk/aws-appflow"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-applicationautoscaling)","(aws-applicationautoscaling)","(applicationautoscaling)","(application autoscaling)","(application-autoscaling)"],"labels":["@aws-cdk/aws-applicationautoscaling"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-applicationinsights)","(aws-applicationinsights)","(applicationinsights)","(application insights)","(application-insights)"],"labels":["@aws-cdk/aws-applicationinsights"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-appmesh)","(aws-appmesh)","(appmesh)","(app mesh)","(app-mesh)"],"labels":["@aws-cdk/aws-appmesh"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-appstream)","(aws-appstream)","(appstream)","(app stream)","(app-stream)"],"labels":["@aws-cdk/aws-appstream"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-appsync)","(aws-appsync)","(appsync)","(app sync)","(app-sync)"],"labels":["@aws-cdk/aws-appsync"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-athena)","(aws-athena)","(athena)"],"labels":["@aws-cdk/aws-athena"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-autoscaling)","(aws-autoscaling)","(autoscaling)","(auto scaling)","(auto-scaling)"],"labels":["@aws-cdk/aws-autoscaling"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-autoscaling-api)","(aws-autoscaling-api)","(autoscaling-api)","(autoscaling api)","(autoscaling-api)"],"labels":["@aws-cdk/aws-autoscaling-api"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-autoscaling-common)","(aws-autoscaling-common)","(autoscaling-common)","(autoscaling common)","(autoscaling-common)"],"labels":["@aws-cdk/aws-autoscaling-common"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-autoscaling-hooktargets)","(aws-autoscaling-hooktargets)","(autoscaling-hooktargets)","(autoscaling hooktargets)"],"labels":["@aws-cdk/aws-autoscaling-hooktargets"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-autoscalingplans)","(aws-autoscalingplans)","(autoscalingplans)","(autoscaling plans)", "(autoscaling-plans)"],"labels":["@aws-cdk/aws-autoscalingplans"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-backup)","(aws-backup)","(backup)"],"labels":["@aws-cdk/aws-backup"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-batch)","(aws-batch)","(batch)"],"labels":["@aws-cdk/aws-batch"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-budgets)","(aws-budgets)","(budgets)"],"labels":["@aws-cdk/aws-budgets"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-cassandra)","(aws-cassandra)","(cassandra)"],"labels":["@aws-cdk/aws-cassandra"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-ce)","(aws-ce)","(ce)"],"labels":["@aws-cdk/aws-ce"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-certificatemanager)","(aws-certificatemanager)","(certificatemanager)","(certificate manager)","(certificate-manager)","(acm)"],"labels":["@aws-cdk/aws-certificatemanager"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-chatbot)","(aws-chatbot)","(chatbot)"],"labels":["@aws-cdk/aws-chatbot"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-cloud9)","(aws-cloud9)","(cloud9)","(cloud 9)"],"labels":["@aws-cdk/aws-cloud9"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-cloudformation)","(aws-cloudformation)","(cloudformation)","(cloud formation)"],"labels":["@aws-cdk/aws-cloudformation"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-cloudfront)","(aws-cloudfront)","(cloudfront)","(cloud front)"],"labels":["@aws-cdk/aws-cloudfront"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-cloudfront-origins)","(aws-cloudfront-origins)","(cloudfront-origins)","(cloudfront origins)"],"labels":["@aws-cdk/aws-cloudfront-origins"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-cloudtrail)","(aws-cloudtrail)","(cloudtrail)","(cloud trail)"],"labels":["@aws-cdk/aws-cloudtrail"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-cloudwatch)","(aws-cloudwatch)","(cloudwatch)","(cloud watch)"],"labels":["@aws-cdk/aws-cloudwatch"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-cloudwatch-actions)","(aws-cloudwatch-actions)","(cloudwatch-actions)","(cloudwatch actions)"],"labels":["@aws-cdk/aws-cloudwatch-actions"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-codeartifact)","(aws-codeartifact)","(codeartifact)","(code artifact)","(code-artifact)"],"labels":["@aws-cdk/aws-codeartifact"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-codebuild)","(aws-codebuild)","(codebuild)","(code build)","(code-build)"],"labels":["@aws-cdk/aws-codebuild"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codecommit)","(aws-codecommit)","(codecommit)","(code commit)", "(code-commit)"],"labels":["@aws-cdk/aws-codecommit"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codedeploy)","(aws-codedeploy)","(codedeploy)","(code deploy)","(code-deploy)"],"labels":["@aws-cdk/aws-codedeploy"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codeguruprofiler)","(aws-codeguruprofiler)","(codeguruprofiler)","(codeguru profiler)","(codeguru-profiler)"],"labels":["@aws-cdk/aws-codeguruprofiler"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codegurureviewer)","(aws-codegurureviewer)","(codegurureviewer)","(codeguru reviewer)","(codeguru-reviewer)"],"labels":["@aws-cdk/aws-codegurureviewer"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-codepipeline)","(aws-codepipeline)","(codepipeline)","(code pipeline)","(code-pipeline)"],"labels":["@aws-cdk/aws-codepipeline"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codepipeline-actions)","(aws-codepipeline-actions)","(codepipeline-actions)","(codepipeline actions)"],"labels":["@aws-cdk/aws-codepipeline-actions"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codestar)","(aws-codestar)","(codestar)"],"labels":["@aws-cdk/aws-codestar"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codestarconnections)","(aws-codestarconnections)","(codestarconnections)","(codestar connections)","(codestar-connections)"],"labels":["@aws-cdk/aws-codestarconnections"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-codestarnotifications)","(aws-codestarnotifications)","(codestarnotifications)","(codestar notifications)","(codestar-notifications)"],"labels":["@aws-cdk/aws-codestarnotifications"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-cognito)","(aws-cognito)","(cognito)"],"labels":["@aws-cdk/aws-cognito"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/aws-config)","(aws-config)","(config)"],"labels":["@aws-cdk/aws-config"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-datapipeline)","(aws-datapipeline)","(datapipeline)","(data pipeline)","(data-pipeline)"],"labels":["@aws-cdk/aws-datapipeline"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-dax)","(aws-dax)","(dax)"],"labels":["@aws-cdk/aws-dax"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-detective)","(aws-detective)","(detective)"],"labels":["@aws-cdk/aws-detective"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-directoryservice)","(aws-directoryservice)","(directoryservice)","(directory service)","(directory-service)"],"labels":["@aws-cdk/aws-directoryservice"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-dlm)","(aws-dlm)","(dlm)"],"labels":["@aws-cdk/aws-dlm"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-dms)","(aws-dms)","(dms)"],"labels":["@aws-cdk/aws-dms"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-docdb)","(aws-docdb)","(docdb)","(doc db)","(doc-db)"],"labels":["@aws-cdk/aws-docdb"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-dynamodb)","(aws-dynamodb)","(dynamodb)","(dynamo db)","(dynamo-db)"],"labels":["@aws-cdk/aws-dynamodb"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-dynamodb-global)","(aws-dynamodb-global)","(dynamodb-global)","(dynamodb global)"],"labels":["@aws-cdk/aws-dynamodb-global"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-ec2)","(aws-ec2)","(ec2)","(vpc)"],"labels":["@aws-cdk/aws-ec2"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-ecr)","(aws-ecr)","(ecr)"],"labels":["@aws-cdk/aws-ecr"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-ecr-assets)","(aws-ecr-assets)","(ecr-assets)","(ecr assets)","(ecrassets)"],"labels":["@aws-cdk/aws-ecr-assets"],"assignees":["eladb"]}, + {"keywords":["(@aws-cdk/aws-efs)","(aws-efs)","(efs)"],"labels":["@aws-cdk/aws-efs"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-eks)","(aws-eks)","(eks)"],"labels":["@aws-cdk/aws-eks"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-elasticache)","(aws-elasticache)","(elasticache)","(elastic cache)","(elastic-cache)"],"labels":["@aws-cdk/aws-elasticache"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-elasticbeanstalk)","(aws-elasticbeanstalk)","(elasticbeanstalk)","(elastic beanstalk)","(elastic-beanstalk)"],"labels":["@aws-cdk/aws-elasticbeanstalk"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-elasticloadbalancing)","(aws-elasticloadbalancing)","(elasticloadbalancing)","(elastic loadbalancing)","(elastic-loadbalancing)","(elb)"],"labels":["@aws-cdk/aws-elasticloadbalancing"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-elasticloadbalancingv2)","(aws-elasticloadbalancingv2)","(elasticloadbalancingv2)","(elastic-loadbalancing-v2)","(elbv2)","(elb v2)"],"labels":["@aws-cdk/aws-elasticloadbalancingv2"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-elasticloadbalancingv2-targets)","(aws-elasticloadbalancingv2-targets)","(elasticloadbalancingv2-targets)","(elasticloadbalancingv2 targets)","(elbv2 targets)"],"labels":["@aws-cdk/aws-elasticloadbalancingv2-targets"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-elasticsearch)","(aws-elasticsearch)","(elasticsearch)","(elastic search)","(elastic-search)"],"labels":["@aws-cdk/aws-elasticsearch"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-emr)","(aws-emr)","(emr)"],"labels":["@aws-cdk/aws-emr"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-events)","(aws-events)","(events)","(eventbridge)","event-bridge)"],"labels":["@aws-cdk/aws-events"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-events-targets)","(aws-events-targets)","(events-targets)","(events targets)"],"labels":["@aws-cdk/aws-events-targets"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-eventschemas)","(aws-eventschemas)","(eventschemas)","(event schemas)"],"labels":["@aws-cdk/aws-eventschemas"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-fms)","(aws-fms)","(fms)"],"labels":["@aws-cdk/aws-fms"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-fsx)","(aws-fsx)","(fsx)"],"labels":["@aws-cdk/aws-fsx"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-gamelift)","(aws-gamelift)","(gamelift)","(game lift)"],"labels":["@aws-cdk/aws-gamelift"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-globalaccelerator)","(aws-globalaccelerator)","(globalaccelerator)","(global accelerator)","(global-accelerator)"],"labels":["@aws-cdk/aws-globalaccelerator"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-glue)","(aws-glue)","(glue)"],"labels":["@aws-cdk/aws-glue"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-greengrass)","(aws-greengrass)","(greengrass)","(green grass)","(green-grass)"],"labels":["@aws-cdk/aws-greengrass"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-guardduty)","(aws-guardduty)","(guardduty)","(guard duty)","(guard-duty)"],"labels":["@aws-cdk/aws-guardduty"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-iam)","(aws-iam)","(iam)"],"labels":["@aws-cdk/aws-iam"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/aws-imagebuilder)","(aws-imagebuilder)","(imagebuilder)","(image builder)","(image-builder)"],"labels":["@aws-cdk/aws-imagebuilder"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-inspector)","(aws-inspector)","(inspector)"],"labels":["@aws-cdk/aws-inspector"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-iot)","(aws-iot)","(iot)"],"labels":["@aws-cdk/aws-iot"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-iot1click)","(aws-iot1click)","(iot1click)","(iot 1click)"],"labels":["@aws-cdk/aws-iot1click"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-iotanalytics)","(aws-iotanalytics)","(iotanalytics)","(iot analytics)","(iot-analytics)"],"labels":["@aws-cdk/aws-iotanalytics"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-iotevents)","(aws-iotevents)","(iotevents)","(iot events)","(iot-events)"],"labels":["@aws-cdk/aws-iotevents"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-iotsitewise)","(aws-iotsitewise)","(iotsitewise)","(iot sitewise)","(iot-sitewise)","(iot-site-wise)","(iot site wise)"],"labels":["@aws-cdk/aws-iotsitewise"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-iotthingsgraph)","(aws-iotthingsgraph)","(iotthingsgraph)","(iot things graph)","(iot-things-graph)"],"labels":["@aws-cdk/aws-iotthingsgraph"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-ivs)","(aws-ivs)","(Interactive Video Service)","(ivs)"],"labels":["@aws-cdk/aws-ivs"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-kendra)","(aws-kendra)","(kendra)"],"labels":["@aws-cdk/aws-kendra"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-kinesis)","(aws-kinesis)","(kinesis)"],"labels":["@aws-cdk/aws-kinesis"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-kinesisanalytics)","(aws-kinesisanalytics)","(kinesisanalytics)","(kinesis analytics)","(kinesis-analytics)"],"labels":["@aws-cdk/aws-kinesisanalytics"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-kinesisfirehose)","(aws-kinesisfirehose)","(kinesisfirehose)","(kinesis firehose)","(kinesis-firehose)"],"labels":["@aws-cdk/aws-kinesisfirehose"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-kms)","(aws-kms)","(kms)"],"labels":["@aws-cdk/aws-kms"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-lakeformation)","(aws-lakeformation)","(lakeformation)","(lake formation)","(lake-formation)"],"labels":["@aws-cdk/aws-lakeformation"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-lambda)","(aws-lambda)","(lambda)"],"labels":["@aws-cdk/aws-lambda"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/aws-lambda-event-sources)","(aws-lambda-event-sources)","(lambda-event-sources)","(lambda event sources)"],"labels":["@aws-cdk/aws-lambda-event-sources"],"assignees":["nija-at"]}, + {"keywords":["(@aws-cdk/aws-lambda-nodejs)","(aws-lambda-nodejs)","(lambda-nodejs)","(lambda nodejs)"],"labels":["@aws-cdk/aws-lambda-nodejs"],"assignees":["eladb"]}, + {"keywords":["(@aws-cdk/aws-lambda-python)","(aws-lambda-python)","(lambda-python)","(lambda python)"],"labels":["@aws-cdk/aws-lambda-python"],"assignees":["eladb"]}, + {"keywords":["(@aws-cdk/aws-logs)","(aws-logs)","(logs)"],"labels":["@aws-cdk/aws-logs"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-logs-destinations)","(aws-logs-destinations)","(logs-destinations)","(logs destinations)"],"labels":["@aws-cdk/aws-logs-destinations"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-macie)","(aws-macie)","(macie)"],"labels":["@aws-cdk/aws-macie"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-managedblockchain)","(aws-managedblockchain)","(managedblockchain)","(managed blockchain)","(managed-blockchain)"],"labels":["@aws-cdk/aws-managedblockchain"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-mediaconvert)","(aws-mediaconvert)","(mediaconvert)","(media convert)","(media-convert)"],"labels":["@aws-cdk/aws-mediaconvert"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-medialive)","(aws-medialive)","(medialive)","(media live)","(media-live)"],"labels":["@aws-cdk/aws-medialive"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-mediastore)","(aws-mediastore)","(mediastore)","(media store)","(media-store)"],"labels":["@aws-cdk/aws-mediastore"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-mediapackage)","(aws-mediapackage)","(mediapackage)","(media package)","(media-package)"],"labels":["@aws-cdk/aws-mediapackage"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-msk)","(aws-msk)","(msk)"],"labels":["@aws-cdk/aws-msk"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-neptune)","(aws-neptune)","(neptune)"],"labels":["@aws-cdk/aws-neptune"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-networkmanager)","(aws-networkmanager)","(networkmanager)","(network manager)","(network-manager)"],"labels":["@aws-cdk/aws-networkmanager"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-opsworks)","(aws-opsworks)","(opsworks)","(ops works)","(ops-works)"],"labels":["@aws-cdk/aws-opsworks"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-opsworkscm)","(aws-opsworkscm)","(opsworkscm)","(opsworks cm)","(opsworks-cm)"],"labels":["@aws-cdk/aws-opsworkscm"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-personalize)","(aws-personalize)","(personalize)"],"labels":["@aws-cdk/aws-personalize"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-pinpoint)","(aws-pinpoint)","(pinpoint)"],"labels":["@aws-cdk/aws-pinpoint"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-pinpointemail)","(aws-pinpointemail)","(pinpointemail)","(pinpoint email)","(pinpoint-email)"],"labels":["@aws-cdk/aws-pinpointemail"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-qldb)","(aws-qldb)","(qldb)"],"labels":["@aws-cdk/aws-qldb"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-ram)","(aws-ram)","(ram)"],"labels":["@aws-cdk/aws-ram"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-rds)","(aws-rds)","(rds)"],"labels":["@aws-cdk/aws-rds"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-redshift)","(aws-redshift)","(redshift)","(red shift)","(red-shift)"],"labels":["@aws-cdk/aws-redshift"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-resourcegroups)","(aws-resourcegroups)","(resourcegroups)","(resource groups)","(resource-groups)"],"labels":["@aws-cdk/aws-resourcegroups"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-robomaker)","(aws-robomaker)","(robomaker)","(robo maker)","(robo-maker)"],"labels":["@aws-cdk/aws-robomaker"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-route53)","(aws-route53)","(route53)","(route 53)","(route-53)"],"labels":["@aws-cdk/aws-route53"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-route53-patterns)","(aws-route53-patterns)","(route53-patterns)","(route53 patterns)","(route-53-patterns)"],"labels":["@aws-cdk/aws-route53-patterns"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-route53-targets)","(aws-route53-targets)","(route53-targets)","(route53 targets)","(route-53-targets)"],"labels":["@aws-cdk/aws-route53-targets"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-route53resolver)","(aws-route53resolver)","(route53resolver)","(route53 resolver)","(route-53-resolver)"],"labels":["@aws-cdk/aws-route53resolver"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-s3)","(aws-s3)","(s3)"],"labels":["@aws-cdk/aws-s3"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-s3-assets)","(aws-s3-assets)","(s3-assets)","(s3 assets)"],"labels":["@aws-cdk/aws-s3-assets"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-s3-deployment)","(aws-s3-deployment)","(s3-deployment)","(s3 deployment)"],"labels":["@aws-cdk/aws-s3-deployment"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-s3-notifications)","(aws-s3-notifications)","(s3-notifications)","(s3 notifications)"],"labels":["@aws-cdk/aws-s3-notifications"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-sagemaker)","(aws-sagemaker)","(sagemaker)","(sage maker)","(sage-maker)"],"labels":["@aws-cdk/aws-sagemaker"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-sam)","(aws-sam)","(sam)"],"labels":["@aws-cdk/aws-sam"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-sdb)","(aws-sdb)","(sdb)"],"labels":["@aws-cdk/aws-sdb"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-secretsmanager)","(aws-secretsmanager)","(secretsmanager)","(secrets manager)","(secrets-manager)"],"labels":["@aws-cdk/aws-secretsmanager"],"assignees":["njlynch"]}, + {"keywords":["(@aws-cdk/aws-securityhub)","(aws-securityhub)","(securityhub)","(security hub)","(security-hub)"],"labels":["@aws-cdk/aws-securityhub"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-servicecatalog)","(aws-servicecatalog)","(servicecatalog)","(service catalog)","(service-catalog)"],"labels":["@aws-cdk/aws-servicecatalog"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-servicediscovery)","(aws-servicediscovery)","(servicediscovery)","(service discovery)","(service-discovery)"],"labels":["@aws-cdk/aws-servicediscovery"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-ses)","(aws-ses)","(ses)"],"labels":["@aws-cdk/aws-ses"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-ses-actions)","(aws-ses-actions)","(ses-actions)","(ses actions)"],"labels":["@aws-cdk/aws-ses-actions"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-sns)","(aws-sns)","(sns)"],"labels":["@aws-cdk/aws-sns"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-sns-subscriptions)","(aws-sns-subscriptions)","(sns-subscriptions)","(sns subscriptions)"],"labels":["@aws-cdk/aws-sns-subscriptions"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-sqs)","(aws-sqs)","(sqs)"],"labels":["@aws-cdk/aws-sqs"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-ssm)","(aws-ssm)","(ssm)"],"labels":["@aws-cdk/aws-ssm"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["(@aws-cdk/aws-sso)","(aws-sso)","(sso)"],"labels":["@aws-cdk/aws-sso"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-stepfunctions)","(aws-stepfunctions)","(stepfunctions)","(step functions)","(step-functions)"],"labels":["@aws-cdk/aws-stepfunctions"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-stepfunctions-tasks)","(aws-stepfunctions-tasks)","(stepfunctions-tasks)","(stepfunctions tasks)"],"labels":["@aws-cdk/aws-stepfunctions-tasks"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-synthetics)","(aws-synthetics)","(synthetics)"],"labels":["@aws-cdk/aws-synthetics"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/aws-timestream)","(aws-timestream)","(timestream)"],"labels":["@aws-cdk/aws-timestream"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/aws-transfer)","(aws-transfer)","(transfer)"],"labels":["@aws-cdk/aws-transfer"],"assignees":["iliapolo"]}, + {"keywords":["(@aws-cdk/aws-waf)","(aws-waf)","(waf)"],"labels":["@aws-cdk/aws-waf"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-wafregional)","(aws-wafregional)","(wafregional)","(waf regional)","(waf-regional)"],"labels":["@aws-cdk/aws-wafregional"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-wafv2)","(aws-wafv2)","(wafv2)","(waf v2)","(waf-v2)"],"labels":["@aws-cdk/aws-wafv2"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/aws-workspaces)","(aws-workspaces)","(workspaces)"],"labels":["@aws-cdk/aws-workspaces"],"assignees":["NetaNir"]}, + {"keywords":["(@aws-cdk/cfnspec)","(cfnspec)","(cfn spec)","(cfn-spec)"],"labels":["@aws-cdk/cfnspec"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/cloud-assembly-schema)","(cloud-assembly-schema)","(cloud assembly schema)"],"labels":["@aws-cdk/cloud-assembly-schema"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/cloudformation-diff)","(cloudformation-diff)","(cloudformation diff)","(cfn diff)"],"labels":["@aws-cdk/cloudformation-diff"],"assignees":["shivlaks"]}, + {"keywords":["(@aws-cdk/cloudformation-include)","(cloudformation-include)","(cloudformation include)","(cfn include)","(cfn-include)"],"labels":["@aws-cdk/cloudformation-include"],"assignees":["skinny85"]}, + {"keywords":["(@aws-cdk/core)","(core)"],"labels":["@aws-cdk/core"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/custom-resources)","(custom-resources)","(custom resources)"],"labels":["@aws-cdk/custom-resources"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/cx-api)","(cx-api)","(cx api)"],"labels":["@aws-cdk/cx-api"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/pipelines)","(pipelines)","(cdk pipelines)","(cdk-pipelines)"],"labels":["@aws-cdk/pipelines"],"assignees":["rix0rrr"]}, + {"keywords":["(@aws-cdk/region-info)","(region-info)","(region info)"],"labels":["@aws-cdk/region-info"],"assignees":["RomainMuller"]} ] - diff --git a/CHANGELOG.md b/CHANGELOG.md index c1423ba20377a..485b074cc5d91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,69 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.75.0](https://github.com/aws/aws-cdk/compare/v1.74.0...v1.75.0) (2020-11-24) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **appmesh:** renames gateway listener static methods to use shorter names +* **appmesh:** renames gateway route static methods to use shorter names +* **appmesh:** changes Route's spec to a union-like class. RouteSpec is now defined using protocol variant static methods +* **lambda-nodejs:** local bundling now requires `esbuild` to be installed. +* **lambda-nodejs**: `projectRoot` has been replaced by `depsLockFilePath`. It should point to your dependency lock file (`package-lock.json` or `yarn.lock`) +* **lambda-nodejs**: `parcelEnvironment` has been renamed to `bundlingEnvironment` +* **lambda-nodejs**: `sourceMaps` has been renamed to `sourceMap` +* **appmesh:** `IVirtualNode` no longer has the `addBackends()` method. A backend can be added to `VirtualNode` using the `addBackend()` method which accepts a single `IVirtualService` +* **appmesh**: `IVirtualNode` no longer has the `addListeners()` method. A listener can be added to `VirtualNode` using the `addListener()` method which accepts a single `VirtualNodeListener` +* **appmesh**: `VirtualNode` no longer has a default listener. It is valid to have a `VirtualNode` without any listeners +* **appmesh**: the construction property `listener` of `VirtualNode` has been renamed to `listeners`, and its type changed to an array of listeners +* **appmesh**: the struct `VirtualNodeListener` has been removed. To create Virtual Node listeners, use the static factory methods of the `VirtualNodeListener` class + +### Features + +* **applicationautoscaling:** Add KAFKA to ServiceNamespace ([#11394](https://github.com/aws/aws-cdk/issues/11394)) ([b5c3f84](https://github.com/aws/aws-cdk/commit/b5c3f84c8be855107d3ea6738bbf8511f2ecdb8e)) +* **appmesh:** add listener timeout to Virtual Nodes ([#10793](https://github.com/aws/aws-cdk/issues/10793)) ([62baa7b](https://github.com/aws/aws-cdk/commit/62baa7b51b49c1a669c7144e5883375fe9ab5d35)) +* **appmesh:** change Route's spec to a union-like class ([#11343](https://github.com/aws/aws-cdk/issues/11343)) ([f0de91f](https://github.com/aws/aws-cdk/commit/f0de91fcf5e956e00f930d0aadcc5516a9125922)) +* **appmesh:** updates gateway resources to use shorter static method names ([#11560](https://github.com/aws/aws-cdk/issues/11560)) ([df4d1d3](https://github.com/aws/aws-cdk/commit/df4d1d3c44b7559e36cbc0adcd51d0b2250fc4e7)) +* **cfnspec:** cloudformation spec v20.0.0 ([#11319](https://github.com/aws/aws-cdk/issues/11319)) ([8c17a35](https://github.com/aws/aws-cdk/commit/8c17a35746271d38289f6e200aea35b201b8a93d)) +* **cfnspec:** cloudformation spec v20.2.0 ([#11429](https://github.com/aws/aws-cdk/issues/11429)) ([025992b](https://github.com/aws/aws-cdk/commit/025992b0014aca493a669be518f4f423d3f39a57)) +* **cfnspec:** cloudformation spec v20.3.0 ([#11539](https://github.com/aws/aws-cdk/issues/11539)) ([3246b67](https://github.com/aws/aws-cdk/commit/3246b670730c4369469f6a43683a27f24c732825)) +* **cli:** add `--no-lookups` flag to disable context lookups ([#11489](https://github.com/aws/aws-cdk/issues/11489)) ([0445a6e](https://github.com/aws/aws-cdk/commit/0445a6ec0105510f73292d311fd32b610bf23d2e)), closes [#11461](https://github.com/aws/aws-cdk/issues/11461) +* **codebuild:** allow setting the Project's logging configuration ([#11444](https://github.com/aws/aws-cdk/issues/11444)) ([6a4b22d](https://github.com/aws/aws-cdk/commit/6a4b22d6db5884dca3cb5c1c8d5312f6edc55dee)), closes [#3856](https://github.com/aws/aws-cdk/issues/3856) +* **codeguruprofiler:** CodeGuruProfiler Construct Library is now in Developer Preview ([#11558](https://github.com/aws/aws-cdk/issues/11558)) ([1da6715](https://github.com/aws/aws-cdk/commit/1da671528472b3bee655bea89bae7273fc21a3bd)) +* **codepipeline-actions:** Add deployment timeout to EcsDeployAction ([#11407](https://github.com/aws/aws-cdk/issues/11407)) ([7d9d575](https://github.com/aws/aws-cdk/commit/7d9d5757db2acedb507da8bb84c65cc06d018b91)) +* **core:** add easy importValue to CfnOutput ([#11368](https://github.com/aws/aws-cdk/issues/11368)) ([c71a4e9](https://github.com/aws/aws-cdk/commit/c71a4e9644fdd64fa00a6d804c921b32bd1816d1)), closes [#11360](https://github.com/aws/aws-cdk/issues/11360) +* **ecs:** allow HTTPS connections from LB to task ([#11381](https://github.com/aws/aws-cdk/issues/11381)) ([0f6e2da](https://github.com/aws/aws-cdk/commit/0f6e2daa248aed9300f5b6c3019cdcb168ee4951)) +* **ecs:** environment files for containers in EC2 task definitions ([8cb74ea](https://github.com/aws/aws-cdk/commit/8cb74eacb3c1a8658d8ec231e339c827c5b1d6e4)) +* **ecs:** secret JSON field for Fargate tasks ([#11348](https://github.com/aws/aws-cdk/issues/11348)) ([03e7cd5](https://github.com/aws/aws-cdk/commit/03e7cd5ebaf07be22f8fff8edacbc384989ebf7c)), closes [/github.com/aws/containers-roadmap/issues/385#issuecomment-722696672](https://github.com/aws//github.com/aws/containers-roadmap/issues/385/issues/issuecomment-722696672) [#11341](https://github.com/aws/aws-cdk/issues/11341) +* **efs:** import access point - `fromAccessPointAttributes()` ([#10712](https://github.com/aws/aws-cdk/issues/10712)) ([ec72c85](https://github.com/aws/aws-cdk/commit/ec72c859c31a069406994433fe430f56ff0e5ff3)) +* **events-targets:** add CloudWatch LogGroup Target ([#10598](https://github.com/aws/aws-cdk/issues/10598)) ([98e9b59](https://github.com/aws/aws-cdk/commit/98e9b5956b3bff6db1cee615cd0e14dcb50d4726)), closes [#9953](https://github.com/aws/aws-cdk/issues/9953) +* **iam:** specify initial PolicyDocument for inline Policy ([#11430](https://github.com/aws/aws-cdk/issues/11430)) ([a8c4f17](https://github.com/aws/aws-cdk/commit/a8c4f178e08cef4f306f54976076c21de2252a55)), closes [#11236](https://github.com/aws/aws-cdk/issues/11236) +* **lambda-nodejs:** esbuild bundling ([#11289](https://github.com/aws/aws-cdk/issues/11289)) ([7a82850](https://github.com/aws/aws-cdk/commit/7a82850d8bec45f18791e269e988c5261d5238d4)), closes [#10286](https://github.com/aws/aws-cdk/issues/10286) [#9130](https://github.com/aws/aws-cdk/issues/9130) [#9312](https://github.com/aws/aws-cdk/issues/9312) [#11222](https://github.com/aws/aws-cdk/issues/11222) +* **logs:** Add KMS key support to LogGroup ([#11363](https://github.com/aws/aws-cdk/issues/11363)) ([21ccfce](https://github.com/aws/aws-cdk/commit/21ccfce514e10cfcdde36148b45f085d3494c540)), closes [#11211](https://github.com/aws/aws-cdk/issues/11211) +* **stepfunctions-tasks:** support overriding all properties of CodeBuild StartBuild integration ([#10356](https://github.com/aws/aws-cdk/issues/10356)) ([58efbad](https://github.com/aws/aws-cdk/commit/58efbad743464439ce8eb97a6c6c3e07b531d93c)), closes [#10302](https://github.com/aws/aws-cdk/issues/10302) + + +### Bug Fixes + +* **autoscaling:** `targetRequestsPerSecond` is actually requests per minute ([#11457](https://github.com/aws/aws-cdk/issues/11457)) ([39e277f](https://github.com/aws/aws-cdk/commit/39e277f65666e96fe1ad662254327967f666dbad)), closes [#11446](https://github.com/aws/aws-cdk/issues/11446) +* **aws-custom-resource:** module fails loading when bundled with parcel ([#11487](https://github.com/aws/aws-cdk/issues/11487)) ([421d4e4](https://github.com/aws/aws-cdk/commit/421d4e4e0c73875db2193847ea0b09349c3635de)) +* **cli:** credential provider plugins cannot be used with modern synthesis ([#11350](https://github.com/aws/aws-cdk/issues/11350)) ([9e91306](https://github.com/aws/aws-cdk/commit/9e91306f53faec31cf7e79f543c216a146406efc)) +* **cloudfront:** origin ID exceeds undocumented 128 character limit ([#11523](https://github.com/aws/aws-cdk/issues/11523)) ([90f0b9d](https://github.com/aws/aws-cdk/commit/90f0b9d466772c4b049b6318c449a490ca7431d8)), closes [#11504](https://github.com/aws/aws-cdk/issues/11504) +* **core:** DefaultStackSynthesizer supports object prefix for s3 assets ([#11327](https://github.com/aws/aws-cdk/issues/11327)) ([1b5f218](https://github.com/aws/aws-cdk/commit/1b5f21861d6b43ac36a8caf590b267bb1a12c0c8)) +* **core:** missing context in Stages is not filled by CLI ([#11461](https://github.com/aws/aws-cdk/issues/11461)) ([a4a555a](https://github.com/aws/aws-cdk/commit/a4a555a9f5e8844a377d8de5041219346d0eb65c)), closes [#9226](https://github.com/aws/aws-cdk/issues/9226) +* **core:** reusing StackSynthesizer leads to unsynthesized Stacks ([#11635](https://github.com/aws/aws-cdk/issues/11635)) ([f03c889](https://github.com/aws/aws-cdk/commit/f03c88974dc89eca8fca798f0640188508bd3623)), closes [#11528](https://github.com/aws/aws-cdk/issues/11528) +* **efs:** cannot use encryption key imported from another account ([#11524](https://github.com/aws/aws-cdk/issues/11524)) ([3578d84](https://github.com/aws/aws-cdk/commit/3578d8434f842a5b5a7290b1d0108818cdaae0f6)), closes [#7641](https://github.com/aws/aws-cdk/issues/7641) +* **eks:** cluster creation fails when configured with an imported public subnet and private endpoint ([#11620](https://github.com/aws/aws-cdk/issues/11620)) ([2c045ce](https://github.com/aws/aws-cdk/commit/2c045ce410e220311f10049da0d9789073eddb37)) +* **iam:** attach policy to imported User ([#11493](https://github.com/aws/aws-cdk/issues/11493)) ([0a8971c](https://github.com/aws/aws-cdk/commit/0a8971c7112735eb70f04633411f3557d2412ff0)), closes [#10913](https://github.com/aws/aws-cdk/issues/10913) [#11046](https://github.com/aws/aws-cdk/issues/11046) [#10527](https://github.com/aws/aws-cdk/issues/10527) +* **init:** TypeScript code is not being recompiled automatically ([#11470](https://github.com/aws/aws-cdk/issues/11470)) ([9843e71](https://github.com/aws/aws-cdk/commit/9843e71219bfe8b5ca675ac322e3dc5b3ab6381c)) +* **lambda:** failed to add permission to an imported lambda from another account ([#11369](https://github.com/aws/aws-cdk/issues/11369)) ([715a030](https://github.com/aws/aws-cdk/commit/715a0300ea44c7cfcb6ae9973bd4ca16585c8fa5)), closes [#11278](https://github.com/aws/aws-cdk/issues/11278) [#11141](https://github.com/aws/aws-cdk/issues/11141) [#11141](https://github.com/aws/aws-cdk/issues/11141) +* **pipelines:** synthesizes incorrect paths on Windows ([#11464](https://github.com/aws/aws-cdk/issues/11464)) ([2ca31a8](https://github.com/aws/aws-cdk/commit/2ca31a87a8cbf0c5267b3d3b39c8dc75b142488e)), closes [#11359](https://github.com/aws/aws-cdk/issues/11359) [#11405](https://github.com/aws/aws-cdk/issues/11405) [#11424](https://github.com/aws/aws-cdk/issues/11424) +* **pipelines:** wrong runOrder for manual approval when using `extraRunOrderSpace` ([#11511](https://github.com/aws/aws-cdk/issues/11511)) ([9b72fc8](https://github.com/aws/aws-cdk/commit/9b72fc8fe0b6238ff4d43a2e5f544bb655bb8908)) +* **stepfunctions:** metric* helpers not available on imported state machines ([#11509](https://github.com/aws/aws-cdk/issues/11509)) ([83c0543](https://github.com/aws/aws-cdk/commit/83c05431e4c254db173cd36dd564c360808ccbde)) +* **stepfunctions-tasks:** encryption is required for AthenaStartQueryExecution ([#11355](https://github.com/aws/aws-cdk/issues/11355)) ([f26a592](https://github.com/aws/aws-cdk/commit/f26a592e609674d528990aad14fb8884112ad64d)) +* **stepfunctions-tasks:** incorrect policy for Athena prevents database deletions ([#11427](https://github.com/aws/aws-cdk/issues/11427)) ([58e6576](https://github.com/aws/aws-cdk/commit/58e6576a90f722929495b7cd9f1d67f93bf9c31e)), closes [#11357](https://github.com/aws/aws-cdk/issues/11357) + ## [1.74.0](https://github.com/aws/aws-cdk/compare/v1.73.0...v1.74.0) (2020-11-17) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index abb37f4e9df01..ee31c4a12528b 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -102,4 +102,4 @@ }, "maturity": "stable", "stability": "stable" -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index 895778bc83e4f..4b034de9b4480 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -71,7 +71,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "@types/sinon": "^9.0.8", + "@types/sinon": "^9.0.9", "aws-cdk": "0.0.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-amplify/lib/app.ts b/packages/@aws-cdk/aws-amplify/lib/app.ts index e2b4d4085eae5..8e7217a59cc58 100644 --- a/packages/@aws-cdk/aws-amplify/lib/app.ts +++ b/packages/@aws-cdk/aws-amplify/lib/app.ts @@ -219,7 +219,7 @@ export class App extends Resource implements IApp, iam.IGrantable { buildSpec: props.autoBranchCreation.buildSpec && props.autoBranchCreation.buildSpec.toBuildSpec(), enableAutoBranchCreation: true, enableAutoBuild: props.autoBranchCreation.autoBuild === undefined ? true : props.autoBranchCreation.autoBuild, - environmentVariables: Lazy.anyValue({ produce: () => renderEnvironmentVariables(this.autoBranchEnvironmentVariables ) }, { omitEmptyArray: true }), // eslint-disable-line max-len + environmentVariables: Lazy.any({ produce: () => renderEnvironmentVariables(this.autoBranchEnvironmentVariables ) }, { omitEmptyArray: true }), // eslint-disable-line max-len enablePullRequestPreview: props.autoBranchCreation.pullRequestPreview === undefined ? true : props.autoBranchCreation.pullRequestPreview, pullRequestEnvironmentName: props.autoBranchCreation.pullRequestEnvironmentName, stage: props.autoBranchCreation.stage, @@ -227,9 +227,9 @@ export class App extends Resource implements IApp, iam.IGrantable { enableBranchAutoDeletion: props.autoBranchDeletion, basicAuthConfig: props.basicAuth && props.basicAuth.bind(this, 'AppBasicAuth'), buildSpec: props.buildSpec && props.buildSpec.toBuildSpec(), - customRules: Lazy.anyValue({ produce: () => this.customRules }, { omitEmptyArray: true }), + customRules: Lazy.any({ produce: () => this.customRules }, { omitEmptyArray: true }), description: props.description, - environmentVariables: Lazy.anyValue({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), + environmentVariables: Lazy.any({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), iamServiceRole: role.roleArn, name: props.appName || this.node.id, oauthToken: sourceCodeProviderOptions?.oauthToken?.toString(), diff --git a/packages/@aws-cdk/aws-amplify/lib/branch.ts b/packages/@aws-cdk/aws-amplify/lib/branch.ts index 31434b929e391..e26fe6c4d46a2 100644 --- a/packages/@aws-cdk/aws-amplify/lib/branch.ts +++ b/packages/@aws-cdk/aws-amplify/lib/branch.ts @@ -141,7 +141,7 @@ export class Branch extends Resource implements IBranch { description: props.description, enableAutoBuild: props.autoBuild === undefined ? true : props.autoBuild, enablePullRequestPreview: props.pullRequestPreview === undefined ? true : props.pullRequestPreview, - environmentVariables: Lazy.anyValue({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), + environmentVariables: Lazy.any({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), pullRequestEnvironmentName: props.pullRequestEnvironmentName, stage: props.stage, }); diff --git a/packages/@aws-cdk/aws-amplify/lib/domain.ts b/packages/@aws-cdk/aws-amplify/lib/domain.ts index c8bb702f9b414..b657ebdefb247 100644 --- a/packages/@aws-cdk/aws-amplify/lib/domain.ts +++ b/packages/@aws-cdk/aws-amplify/lib/domain.ts @@ -105,7 +105,7 @@ export class Domain extends Resource { const domain = new CfnDomain(this, 'Resource', { appId: props.app.appId, domainName, - subDomainSettings: Lazy.anyValue({ produce: () => this.renderSubDomainSettings() }, { omitEmptyArray: true }), + subDomainSettings: Lazy.any({ produce: () => this.renderSubDomainSettings() }, { omitEmptyArray: true }), }); this.arn = domain.attrArn; diff --git a/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts b/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts index 82f7696fe2fa2..a354c8a4b3196 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts @@ -118,7 +118,7 @@ abstract class LambdaAuthorizer extends Authorizer implements IAuthorizer { * Throws an error, during token resolution, if no RestApi is attached to this authorizer. */ protected lazyRestApiId() { - return Lazy.stringValue({ + return Lazy.string({ produce: () => { if (!this.restApiId) { throw new Error(`Authorizer (${this.node.path}) must be attached to a RestApi`); diff --git a/packages/@aws-cdk/aws-apigateway/lib/deployment.ts b/packages/@aws-cdk/aws-apigateway/lib/deployment.ts index 877af8df471b3..a286e978fdafb 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/deployment.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/deployment.ts @@ -78,7 +78,7 @@ export class Deployment extends Resource { } this.api = props.api; - this.deploymentId = Lazy.stringValue({ produce: () => this.resource.ref }); + this.deploymentId = Lazy.string({ produce: () => this.resource.ref }); if (props.api instanceof RestApiBase) { props.api._attachDeployment(this); @@ -141,7 +141,7 @@ class LatestDeploymentResource extends CfnDeployment { this.api = props.restApi; this.originalLogicalId = this.stack.getLogicalId(this); - this.overrideLogicalId(Lazy.stringValue({ produce: () => this.calculateLogicalId() })); + this.overrideLogicalId(Lazy.uncachedString({ produce: () => this.calculateLogicalId() })); } /** diff --git a/packages/@aws-cdk/aws-apigateway/lib/integration.ts b/packages/@aws-cdk/aws-apigateway/lib/integration.ts index 9d08a02b57bc2..475358d672540 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integration.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integration.ts @@ -204,7 +204,7 @@ export class Integration { const options = this.props.options; if (options?.connectionType === ConnectionType.VPC_LINK && uri === undefined) { - uri = Lazy.stringValue({ + uri = Lazy.string({ // needs to be a lazy since the targets can be added to the VpcLink construct after initialization. produce: () => { const vpcLink = options.vpcLink; diff --git a/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts b/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts index 2960d9c9431d8..6374bb404902a 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts @@ -78,7 +78,7 @@ export class AwsIntegration extends Integration { super({ type, integrationHttpMethod: props.integrationHttpMethod || 'POST', - uri: cdk.Lazy.stringValue({ + uri: cdk.Lazy.string({ produce: () => { if (!this.scope) { throw new Error('AwsIntegration must be used in API'); } return cdk.Stack.of(this.scope).formatArn({ diff --git a/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts b/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts index 895b36323f1d7..399484510f343 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts @@ -63,7 +63,7 @@ export class LambdaIntegration extends AwsIntegration { this.handler.addPermission(`ApiPermission.${desc}`, { principal, scope: method, - sourceArn: Lazy.stringValue({ produce: () => method.methodArn }), + sourceArn: Lazy.string({ produce: () => method.methodArn }), }); // add permission to invoke from the console diff --git a/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts b/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts index e39efd410fe80..ad807d4a7d2d0 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts @@ -156,7 +156,7 @@ export class UsagePlan extends Resource { let resource: CfnUsagePlan; resource = new CfnUsagePlan(this, 'Resource', { - apiStages: Lazy.anyValue({ produce: () => this.renderApiStages(this.apiStages) }), + apiStages: Lazy.any({ produce: () => this.renderApiStages(this.apiStages) }), description: props.description, quota: this.renderQuota(props), throttle: this.renderThrottle(props.throttle), diff --git a/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts b/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts index dc7576b22961c..f7d137f2c9e1a 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts @@ -66,13 +66,13 @@ export class VpcLink extends Resource implements IVpcLink { constructor(scope: Construct, id: string, props: VpcLinkProps = {}) { super(scope, id, { physicalName: props.vpcLinkName || - Lazy.stringValue({ produce: () => Names.nodeUniqueId(this.node) }), + Lazy.string({ produce: () => Names.nodeUniqueId(this.node) }), }); const cfnResource = new CfnVpcLink(this, 'Resource', { name: this.physicalName, description: props.description, - targetArns: Lazy.listValue({ produce: () => this.renderTargets() }), + targetArns: Lazy.list({ produce: () => this.renderTargets() }), }); this.vpcLinkId = cfnResource.ref; diff --git a/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts b/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts index 77f8b887eae57..55e5ab8859734 100644 --- a/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts +++ b/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts @@ -147,7 +147,7 @@ describe('deployment', () => { // tokens supported, and are resolved upon synthesis const value = 'hello hello'; - deployment.addToLogicalId({ foo: Lazy.stringValue({ produce: () => value }) }); + deployment.addToLogicalId({ foo: Lazy.string({ produce: () => value }) }); const template2 = synthesize(); expect(template2.Resources.deployment333819758d91bed959c6bd6268ba84f6d33e888e).toBeDefined(); diff --git a/packages/@aws-cdk/aws-apigateway/test/stage.test.ts b/packages/@aws-cdk/aws-apigateway/test/stage.test.ts index 1584850913deb..a2575edbaa07b 100644 --- a/packages/@aws-cdk/aws-apigateway/test/stage.test.ts +++ b/packages/@aws-cdk/aws-apigateway/test/stage.test.ts @@ -319,7 +319,7 @@ describe('stage', () => { // WHEN const testLogGroup = new logs.LogGroup(stack, 'LogGroup'); - const testFormat = apigateway.AccessLogFormat.custom(cdk.Lazy.stringValue({ produce: () => 'test' })); + const testFormat = apigateway.AccessLogFormat.custom(cdk.Lazy.string({ produce: () => 'test' })); // THEN expect(() => new apigateway.Stage(stack, 'my-stage', { diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts index 9549ff5c6598c..60ab5b3bbaede 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts @@ -125,7 +125,7 @@ export class ScalableTarget extends Resource implements IScalableTarget { resourceId: props.resourceId, roleArn: this.role.roleArn, scalableDimension: props.scalableDimension, - scheduledActions: Lazy.anyValue({ produce: () => this.actions }, { omitEmptyArray: true }), + scheduledActions: Lazy.any({ produce: () => this.actions }, { omitEmptyArray: true }), serviceNamespace: props.serviceNamespace, }); diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts index 95242ed9e8cdf..4cb7aa2328ebc 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts @@ -90,7 +90,7 @@ export class StepScalingAction extends cdk.Construct { cooldown: props.cooldown && props.cooldown.toSeconds(), minAdjustmentMagnitude: props.minAdjustmentMagnitude, metricAggregationType: props.metricAggregationType, - stepAdjustments: cdk.Lazy.anyValue({ produce: () => this.adjustments }), + stepAdjustments: cdk.Lazy.any({ produce: () => this.adjustments }), } as CfnScalingPolicy.StepScalingPolicyConfigurationProperty, }); diff --git a/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts b/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts index c042f305994d1..68622c2f60181 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts @@ -40,8 +40,8 @@ export = { serviceNamespace: appscaling.ServiceNamespace.DYNAMODB, scalableDimension: 'test:TestCount', resourceId: 'test:this/test', - minCapacity: cdk.Lazy.numberValue({ produce: () => 10 }), - maxCapacity: cdk.Lazy.numberValue({ produce: () => 1 }), + minCapacity: cdk.Lazy.number({ produce: () => 10 }), + maxCapacity: cdk.Lazy.number({ produce: () => 1 }), }); // THEN: no exception diff --git a/packages/@aws-cdk/aws-appmesh/README.md b/packages/@aws-cdk/aws-appmesh/README.md index 4bed6a9598541..7de09d776eff5 100644 --- a/packages/@aws-cdk/aws-appmesh/README.md +++ b/packages/@aws-cdk/aws-appmesh/README.md @@ -263,7 +263,7 @@ Create a virtual gateway with the constructor: ```typescript const gateway = new appmesh.VirtualGateway(stack, 'gateway', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ + listeners: [appmesh.VirtualGatewayListener.http({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -280,7 +280,7 @@ Add a virtual gateway directly to the mesh: const gateway = mesh.addVirtualGateway('gateway', { accessLog: appmesh.AccessLog.fromFilePath('/dev/stdout'), virtualGatewayName: 'virtualGateway', - listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ + listeners: [appmesh.VirtualGatewayListener.http({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -302,7 +302,7 @@ By default, an HTTP based route will match on `/`. All matches must start with a ```typescript gateway.addGatewayRoute('gateway-route-http', { - routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, match: { prefixMatch: '/', @@ -316,7 +316,7 @@ You cannot omit the field, and must specify a match for these routes. ```typescript gateway.addGatewayRoute('gateway-route-grpc', { - routeSpec: appmesh.GatewayRouteSpec.grpcRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.grpc({ routeTarget: virtualService, match: { serviceName: 'my-service.default.svc.cluster.local', diff --git a/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts b/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts index b75890ece1453..525bc4d2ba7e0 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts @@ -29,7 +29,7 @@ export interface GrpcGatewayRouteMatch { /** * Properties specific for HTTP Based GatewayRoutes */ -export interface HttpRouteSpecProps { +export interface HttpGatewayRouteSpecOptions { /** * The criterion for determining a request match for this GatewayRoute * @@ -46,7 +46,7 @@ export interface HttpRouteSpecProps { /** * Properties specific for a GRPC GatewayRoute */ -export interface GrpcRouteSpecProps { +export interface GrpcGatewayRouteSpecOptions { /** * The criterion for determining a request match for this GatewayRoute */ @@ -91,28 +91,28 @@ export abstract class GatewayRouteSpec { /** * Creates an HTTP Based GatewayRoute * - * @param props - no http gateway route + * @param options - no http gateway route */ - public static httpRouteSpec(props: HttpRouteSpecProps): GatewayRouteSpec { - return new HttpGatewayRouteSpec(props, Protocol.HTTP); + public static http(options: HttpGatewayRouteSpecOptions): GatewayRouteSpec { + return new HttpGatewayRouteSpec(options, Protocol.HTTP); } /** * Creates an HTTP2 Based GatewayRoute * - * @param props - no http2 gateway route + * @param options - no http2 gateway route */ - public static http2RouteSpec(props: HttpRouteSpecProps): GatewayRouteSpec { - return new HttpGatewayRouteSpec(props, Protocol.HTTP2); + public static http2(options: HttpGatewayRouteSpecOptions): GatewayRouteSpec { + return new HttpGatewayRouteSpec(options, Protocol.HTTP2); } /** * Creates an GRPC Based GatewayRoute * - * @param props - no grpc gateway route + * @param options - no grpc gateway route */ - public static grpcRouteSpec(props: GrpcRouteSpecProps): GatewayRouteSpec { - return new GrpcGatewayRouteSpec(props); + public static grpc(options: GrpcGatewayRouteSpecOptions): GatewayRouteSpec { + return new GrpcGatewayRouteSpec(options); } /** @@ -140,11 +140,11 @@ class HttpGatewayRouteSpec extends GatewayRouteSpec { */ readonly routeType: Protocol; - constructor(props: HttpRouteSpecProps, protocol: Protocol.HTTP | Protocol.HTTP2) { + constructor(options: HttpGatewayRouteSpecOptions, protocol: Protocol.HTTP | Protocol.HTTP2) { super(); - this.routeTarget = props.routeTarget; + this.routeTarget = options.routeTarget; this.routeType = protocol; - this.match = props.match; + this.match = options.match; } public bind(_scope: cdk.Construct): GatewayRouteSpecConfig { @@ -184,10 +184,10 @@ class GrpcGatewayRouteSpec extends GatewayRouteSpec { */ readonly routeTarget: IVirtualService; - constructor(props: GrpcRouteSpecProps) { + constructor(options: GrpcGatewayRouteSpecOptions) { super(); - this.match = props.match; - this.routeTarget = props.routeTarget; + this.match = options.match; + this.routeTarget = options.routeTarget; } public bind(_scope: cdk.Construct): GatewayRouteSpecConfig { diff --git a/packages/@aws-cdk/aws-appmesh/lib/mesh.ts b/packages/@aws-cdk/aws-appmesh/lib/mesh.ts index 869d2198fdd0c..cc0596695aae2 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/mesh.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/mesh.ts @@ -186,7 +186,7 @@ export class Mesh extends MeshBase { constructor(scope: Construct, id: string, props: MeshProps = {}) { super(scope, id, { - physicalName: props.meshName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.meshName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); const mesh = new CfnMesh(this, 'Resource', { diff --git a/packages/@aws-cdk/aws-appmesh/lib/route.ts b/packages/@aws-cdk/aws-appmesh/lib/route.ts index f2fb9ab58232a..7b9bd2aeb94d2 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/route.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/route.ts @@ -110,7 +110,7 @@ export class Route extends cdk.Resource implements IRoute { constructor(scope: Construct, id: string, props: RouteProps) { super(scope, id, { - physicalName: props.routeName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.routeName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); this.virtualRouter = props.virtualRouter; diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts index a690c022f8c32..7b111dbc0a67d 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts @@ -6,7 +6,7 @@ import { HealthCheck, Protocol } from './shared-interfaces'; /** * Represents the properties needed to define HTTP Listeners for a VirtualGateway */ -export interface HttpGatewayListenerProps { +export interface HttpGatewayListenerOptions { /** * Port to listen for connections on * @@ -25,7 +25,7 @@ export interface HttpGatewayListenerProps { /** * Represents the properties needed to define GRPC Listeners for a VirtualGateway */ -export interface GrpcGatewayListenerProps { +export interface GrpcGatewayListenerOptions { /** * Port to listen for connections on * @@ -58,70 +58,29 @@ export abstract class VirtualGatewayListener { /** * Returns an HTTP Listener for a VirtualGateway */ - public static httpGatewayListener(props: HttpGatewayListenerProps = {}): VirtualGatewayListener { - return new HttpGatewayListener(props); + public static http(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { + return new HttpGatewayListener(options); } /** * Returns an HTTP2 Listener for a VirtualGateway */ - public static http2GatewayListener(props: HttpGatewayListenerProps = {}): VirtualGatewayListener { - return new Http2GatewayListener(props); + public static http2(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { + return new Http2GatewayListener(options); } /** * Returns a GRPC Listener for a VirtualGateway */ - public static grpcGatewayListener(props: GrpcGatewayListenerProps = {}): VirtualGatewayListener { - return new GrpcGatewayListener(props); + public static grpc(options: GrpcGatewayListenerOptions = {}): VirtualGatewayListener { + return new GrpcGatewayListener(options); } - /** - * Protocol the listener implements - */ - protected abstract protocol: Protocol; - - /** - * Port to listen for connections on - */ - protected abstract port: number; - - /** - * Health checking strategy upstream nodes should use when communicating with the listener - */ - protected abstract healthCheck?: HealthCheck; - /** * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ public abstract bind(scope: cdk.Construct): VirtualGatewayListenerConfig; - - protected renderHealthCheck(hc: HealthCheck): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty | undefined { - if (hc.protocol === Protocol.TCP) { - throw new Error('TCP health checks are not permitted for gateway listeners'); - } - - if (hc.protocol === Protocol.GRPC && hc.path) { - throw new Error('The path property cannot be set with Protocol.GRPC'); - } - - const protocol = hc.protocol? hc.protocol : this.protocol; - - const healthCheck: CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty = { - healthyThreshold: hc.healthyThreshold || 2, - intervalMillis: (hc.interval || cdk.Duration.seconds(5)).toMilliseconds(), // min - path: hc.path || ((protocol === Protocol.HTTP || protocol === Protocol.HTTP2) ? '/' : undefined), - port: hc.port || this.port, - protocol: hc.protocol || this.protocol, - timeoutMillis: (hc.timeout || cdk.Duration.seconds(2)).toMilliseconds(), - unhealthyThreshold: hc.unhealthyThreshold || 2, - }; - - validateHealthChecks(healthCheck); - - return healthCheck; - } } /** @@ -147,10 +106,10 @@ class HttpGatewayListener extends VirtualGatewayListener { */ protected protocol: Protocol = Protocol.HTTP; - constructor(props: HttpGatewayListenerProps = {}) { + constructor(options: HttpGatewayListenerOptions = {}) { super(); - this.port = props.port ? props.port : 8080; - this.healthCheck = props.healthCheck; + this.port = options.port ? options.port : 8080; + this.healthCheck = options.healthCheck; } /** @@ -164,7 +123,7 @@ class HttpGatewayListener extends VirtualGatewayListener { port: this.port, protocol: this.protocol, }, - healthCheck: this.healthCheck ? this.renderHealthCheck(this.healthCheck): undefined, + healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, }, }; } @@ -174,8 +133,8 @@ class HttpGatewayListener extends VirtualGatewayListener { * Represents the properties needed to define an HTTP2 Listener for a VirtualGateway */ class Http2GatewayListener extends HttpGatewayListener { - constructor(props: HttpGatewayListenerProps = {}) { - super(props); + constructor(options: HttpGatewayListenerOptions = {}) { + super(options); this.protocol = Protocol.HTTP2; } } @@ -203,10 +162,10 @@ class GrpcGatewayListener extends VirtualGatewayListener { */ protected protocol: Protocol = Protocol.GRPC; - constructor(props: HttpGatewayListenerProps = {}) { + constructor(options: HttpGatewayListenerOptions = {}) { super(); - this.port = props.port ? props.port : 8080; - this.healthCheck = props.healthCheck; + this.port = options.port ? options.port : 8080; + this.healthCheck = options.healthCheck; } /** @@ -220,8 +179,36 @@ class GrpcGatewayListener extends VirtualGatewayListener { port: this.port, protocol: Protocol.GRPC, }, - healthCheck: this.healthCheck? this.renderHealthCheck(this.healthCheck): undefined, + healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, }, }; } -} \ No newline at end of file +} + +function renderHealthCheck( + hc: HealthCheck, listenerProtocol: Protocol, listenerPort: number): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty { + + if (hc.protocol === Protocol.TCP) { + throw new Error('TCP health checks are not permitted for gateway listeners'); + } + + if (hc.protocol === Protocol.GRPC && hc.path) { + throw new Error('The path property cannot be set with Protocol.GRPC'); + } + + const protocol = hc.protocol? hc.protocol : listenerProtocol; + + const healthCheck: CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty = { + healthyThreshold: hc.healthyThreshold || 2, + intervalMillis: (hc.interval || cdk.Duration.seconds(5)).toMilliseconds(), // min + path: hc.path || ((protocol === Protocol.HTTP || protocol === Protocol.HTTP2) ? '/' : undefined), + port: hc.port || listenerPort, + protocol: hc.protocol || listenerProtocol, + timeoutMillis: (hc.timeout || cdk.Duration.seconds(2)).toMilliseconds(), + unhealthyThreshold: hc.unhealthyThreshold || 2, + }; + + validateHealthChecks(healthCheck); + + return healthCheck; +} diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts index 337807c9153da..4a0c5fef1af75 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts @@ -161,7 +161,7 @@ export class VirtualGateway extends VirtualGatewayBase { if (!props.listeners) { // Use listener default of http listener port 8080 if no listener is defined - this.listeners.push(VirtualGatewayListener.httpGatewayListener().bind(this)); + this.listeners.push(VirtualGatewayListener.http().bind(this)); } else { props.listeners.forEach(listener => this.listeners.push(listener.bind(this))); } diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts index fd8b2cadc87db..e868ce69936c7 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts @@ -180,7 +180,7 @@ export class VirtualNode extends VirtualNodeBase { constructor(scope: Construct, id: string, props: VirtualNodeProps) { super(scope, id, { - physicalName: props.virtualNodeName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.virtualNodeName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); this.mesh = props.mesh; @@ -193,8 +193,8 @@ export class VirtualNode extends VirtualNodeBase { virtualNodeName: this.physicalName, meshName: this.mesh.meshName, spec: { - backends: cdk.Lazy.anyValue({ produce: () => this.backends }, { omitEmptyArray: true }), - listeners: cdk.Lazy.anyValue({ produce: () => this.listeners.map(listener => listener.listener) }, { omitEmptyArray: true }), + backends: cdk.Lazy.any({ produce: () => this.backends }, { omitEmptyArray: true }), + listeners: cdk.Lazy.any({ produce: () => this.listeners.map(listener => listener.listener) }, { omitEmptyArray: true }), serviceDiscovery: { dns: props.dnsHostName !== undefined ? { hostname: props.dnsHostName } : undefined, awsCloudMap: props.cloudMapService !== undefined ? { diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts index 65c3921a844fd..b202c4c1ca3ae 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts @@ -141,7 +141,7 @@ export class VirtualRouter extends VirtualRouterBase { constructor(scope: Construct, id: string, props: VirtualRouterProps) { super(scope, id, { - physicalName: props.virtualRouterName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.virtualRouterName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); this.mesh = props.mesh; diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts index 374d342040784..677eb96b3e4a8 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts @@ -123,7 +123,7 @@ export class VirtualService extends cdk.Resource implements IVirtualService { constructor(scope: Construct, id: string, props: VirtualServiceProps) { super(scope, id, { - physicalName: props.virtualServiceName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.virtualServiceName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); if (props.virtualNode && props.virtualRouter) { diff --git a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts index 782ca6cee1f83..1a064b5ce7031 100644 --- a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts +++ b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts @@ -131,7 +131,7 @@ const gateway = mesh.addVirtualGateway('gateway1', { new appmesh.VirtualGateway(stack, 'gateway2', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ + listeners: [appmesh.VirtualGatewayListener.http({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -140,19 +140,19 @@ new appmesh.VirtualGateway(stack, 'gateway2', { }); gateway.addGatewayRoute('gateway1-route-http', { - routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, }), }); gateway.addGatewayRoute('gateway1-route-http2', { - routeSpec: appmesh.GatewayRouteSpec.http2RouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http2({ routeTarget: virtualService, }), }); gateway.addGatewayRoute('gateway1-route-grpc', { - routeSpec: appmesh.GatewayRouteSpec.grpcRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.grpc({ routeTarget: virtualService, match: { serviceName: virtualService.virtualServiceName, diff --git a/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts b/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts index 2f08e58bb873a..a741ec0b0d1d8 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts @@ -16,7 +16,7 @@ export = { }); const virtualGateway = new appmesh.VirtualGateway(stack, 'gateway-1', { - listeners: [appmesh.VirtualGatewayListener.httpGatewayListener()], + listeners: [appmesh.VirtualGatewayListener.http()], mesh: mesh, }); @@ -27,21 +27,21 @@ export = { // Add an HTTP Route virtualGateway.addGatewayRoute('gateway-http-route', { - routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, }), gatewayRouteName: 'gateway-http-route', }); virtualGateway.addGatewayRoute('gateway-http2-route', { - routeSpec: appmesh.GatewayRouteSpec.http2RouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http2({ routeTarget: virtualService, }), gatewayRouteName: 'gateway-http2-route', }); virtualGateway.addGatewayRoute('gateway-grpc-route', { - routeSpec: appmesh.GatewayRouteSpec.grpcRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.grpc({ routeTarget: virtualService, match: { serviceName: virtualService.virtualServiceName, @@ -122,7 +122,7 @@ export = { }); const virtualService = mesh.addVirtualService('testVirtualService'); - test.throws(() => appmesh.GatewayRouteSpec.httpRouteSpec({ + test.throws(() => appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, match: { prefixPath: 'wrong', diff --git a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts index f5c020426c9b9..8e76b0f5c85f5 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts @@ -21,7 +21,7 @@ export = { new appmesh.VirtualGateway(stack, 'httpGateway', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ + listeners: [appmesh.VirtualGatewayListener.http({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -31,7 +31,7 @@ export = { new appmesh.VirtualGateway(stack, 'http2Gateway', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.http2GatewayListener({ + listeners: [appmesh.VirtualGatewayListener.http2({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -113,7 +113,7 @@ export = { new appmesh.VirtualGateway(stack, 'testGateway', { virtualGatewayName: 'test-gateway', - listeners: [appmesh.VirtualGatewayListener.grpcGatewayListener({ + listeners: [appmesh.VirtualGatewayListener.grpc({ port: 80, healthCheck: { }, @@ -174,7 +174,7 @@ export = { virtualGateway.addGatewayRoute('testGatewayRoute', { gatewayRouteName: 'test-gateway-route', - routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, }), }); @@ -218,13 +218,13 @@ export = { const virtualGateway = mesh.addVirtualGateway('gateway'); virtualGateway.addGatewayRoute('testGatewayRoute', { gatewayRouteName: 'test-gateway-route', - routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, }), }); virtualGateway.addGatewayRoute('testGatewayRoute2', { gatewayRouteName: 'test-gateway-route-2', - routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ + routeSpec: appmesh.GatewayRouteSpec.http({ routeTarget: virtualService, }), }); diff --git a/packages/@aws-cdk/aws-appsync/lib/schema.ts b/packages/@aws-cdk/aws-appsync/lib/schema.ts index ec5bbfa14241d..3ab8a800d16fb 100644 --- a/packages/@aws-cdk/aws-appsync/lib/schema.ts +++ b/packages/@aws-cdk/aws-appsync/lib/schema.ts @@ -80,7 +80,7 @@ export class Schema { this.schema = new CfnGraphQLSchema(api, 'Schema', { apiId: api.apiId, definition: this.mode === SchemaMode.CODE ? - Lazy.stringValue({ + Lazy.string({ produce: () => this.types.reduce((acc, type) => { return `${acc}${type._bindToGraphqlApi(api).toString()}\n`; }, `${this.declareSchema()}${this.definition}`), }) diff --git a/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts b/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts index cf5f6acbcbf71..0d5dd3f147235 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts @@ -936,8 +936,8 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements // use delayed evaluation const imageConfig = props.machineImage.getImage(this); this.userData = props.userData ?? imageConfig.userData; - const userDataToken = Lazy.stringValue({ produce: () => Fn.base64(this.userData.render()) }); - const securityGroupsToken = Lazy.listValue({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); + const userDataToken = Lazy.string({ produce: () => Fn.base64(this.userData.render()) }); + const securityGroupsToken = Lazy.list({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); const launchConfig = new CfnLaunchConfiguration(this, 'LaunchConfig', { imageId: imageConfig.imageId, @@ -1014,10 +1014,10 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements maxSize: Tokenization.stringifyNumber(maxCapacity), desiredCapacity: desiredCapacity !== undefined ? Tokenization.stringifyNumber(desiredCapacity) : undefined, launchConfigurationName: launchConfig.ref, - loadBalancerNames: Lazy.listValue({ produce: () => this.loadBalancerNames }, { omitEmpty: true }), - targetGroupArns: Lazy.listValue({ produce: () => this.targetGroupArns }, { omitEmpty: true }), + loadBalancerNames: Lazy.list({ produce: () => this.loadBalancerNames }, { omitEmpty: true }), + targetGroupArns: Lazy.list({ produce: () => this.targetGroupArns }, { omitEmpty: true }), notificationConfigurations: this.renderNotificationConfiguration(), - metricsCollection: Lazy.anyValue({ produce: () => this.renderMetricsCollection() }), + metricsCollection: Lazy.any({ produce: () => this.renderMetricsCollection() }), vpcZoneIdentifier: subnetIds, healthCheckType: props.healthCheck && props.healthCheck.type, healthCheckGracePeriod: props.healthCheck && props.healthCheck.gracePeriod && props.healthCheck.gracePeriod.toSeconds(), diff --git a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts index 76ba4685c0a38..9b9939d740d16 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts @@ -79,7 +79,7 @@ export class StepScalingAction extends CoreConstruct { adjustmentType: props.adjustmentType, minAdjustmentMagnitude: props.minAdjustmentMagnitude, metricAggregationType: props.metricAggregationType, - stepAdjustments: Lazy.anyValue({ produce: () => this.adjustments }), + stepAdjustments: Lazy.any({ produce: () => this.adjustments }), }); this.scalingPolicyArn = resource.ref; diff --git a/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts b/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts index 4e4e800828780..737566c369b76 100644 --- a/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts +++ b/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts @@ -170,9 +170,9 @@ nodeunitShim({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.M4, ec2.InstanceSize.MICRO), machineImage: new ec2.AmazonLinuxImage(), vpc, - minCapacity: cdk.Lazy.numberValue({ produce: () => 5 }), - maxCapacity: cdk.Lazy.numberValue({ produce: () => 1 }), - desiredCapacity: cdk.Lazy.numberValue({ produce: () => 20 }), + minCapacity: cdk.Lazy.number({ produce: () => 5 }), + maxCapacity: cdk.Lazy.number({ produce: () => 1 }), + desiredCapacity: cdk.Lazy.number({ produce: () => 20 }), }); // THEN: no exception diff --git a/packages/@aws-cdk/aws-backup/lib/plan.ts b/packages/@aws-cdk/aws-backup/lib/plan.ts index 3476b56817dc1..70240e778969b 100644 --- a/packages/@aws-cdk/aws-backup/lib/plan.ts +++ b/packages/@aws-cdk/aws-backup/lib/plan.ts @@ -125,7 +125,7 @@ export class BackupPlan extends Resource implements IBackupPlan { const plan = new CfnBackupPlan(this, 'Resource', { backupPlan: { backupPlanName: props.backupPlanName || id, - backupPlanRule: Lazy.anyValue({ produce: () => this.rules }, { omitEmptyArray: true }), + backupPlanRule: Lazy.any({ produce: () => this.rules }, { omitEmptyArray: true }), }, }); diff --git a/packages/@aws-cdk/aws-backup/lib/selection.ts b/packages/@aws-cdk/aws-backup/lib/selection.ts index fb3278ec42404..401af8314b6e1 100644 --- a/packages/@aws-cdk/aws-backup/lib/selection.ts +++ b/packages/@aws-cdk/aws-backup/lib/selection.ts @@ -96,10 +96,10 @@ export class BackupSelection extends Resource implements iam.IGrantable { backupSelection: { iamRoleArn: role.roleArn, selectionName: props.backupSelectionName || this.node.id, - listOfTags: Lazy.anyValue({ + listOfTags: Lazy.any({ produce: () => this.listOfTags, }, { omitEmptyArray: true }), - resources: Lazy.listValue({ + resources: Lazy.list({ produce: () => [...this.resources, ...this.backupableResourcesCollector.resources], }, { omitEmpty: true }), }, @@ -130,7 +130,7 @@ export class BackupSelection extends Resource implements iam.IGrantable { Aspects.of(resource.construct).add(this.backupableResourcesCollector); // Cannot push `this.backupableResourcesCollector.resources` to // `this.resources` here because it has not been evaluated yet. - // Will be concatenated to `this.resources` in a `Lazy.listValue` + // Will be concatenated to `this.resources` in a `Lazy.list` // in the constructor instead. } } diff --git a/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts b/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts index 655361ba5b4b7..f1a5cd442e9d1 100644 --- a/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts +++ b/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts @@ -98,7 +98,7 @@ export class DnsValidatedCertificate extends cdk.Resource implements ICertificat serviceToken: requestorFunction.functionArn, properties: { DomainName: props.domainName, - SubjectAlternativeNames: cdk.Lazy.listValue({ produce: () => props.subjectAlternativeNames }, { omitEmpty: true }), + SubjectAlternativeNames: cdk.Lazy.list({ produce: () => props.subjectAlternativeNames }, { omitEmpty: true }), HostedZoneId: this.hostedZoneId, Region: props.region, Route53Endpoint: props.route53Endpoint, diff --git a/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts b/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts index 5bbeadf007f1e..ab43a486ae7d1 100644 --- a/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts +++ b/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts @@ -66,7 +66,7 @@ test('needs validation domain supplied if domain contains a token', () => { const stack = new Stack(); expect(() => { - const domainName = Lazy.stringValue({ produce: () => 'example.com' }); + const domainName = Lazy.string({ produce: () => 'example.com' }); new Certificate(stack, 'Certificate', { domainName, }); @@ -76,7 +76,7 @@ test('needs validation domain supplied if domain contains a token', () => { test('validationdomains can be given for a Token', () => { const stack = new Stack(); - const domainName = Lazy.stringValue({ produce: () => 'my.example.com' }); + const domainName = Lazy.string({ produce: () => 'my.example.com' }); new Certificate(stack, 'Certificate', { domainName, validationDomains: { diff --git a/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts b/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts index 6db44400cfa89..93ac7d4b9913a 100644 --- a/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts +++ b/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts @@ -157,7 +157,7 @@ export class CustomResource extends core.CustomResource { properties: props.properties, removalPolicy: props.removalPolicy, resourceType: props.resourceType, - serviceToken: core.Lazy.stringValue({ produce: () => props.provider.bind(this).serviceToken }), + serviceToken: core.Lazy.string({ produce: () => props.provider.bind(this).serviceToken }), }); } } diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index ac39d79cf3ff3..425a01b99f55a 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "pkglint": "0.0.0" diff --git a/packages/@aws-cdk/aws-cloudfront/.gitignore b/packages/@aws-cdk/aws-cloudfront/.gitignore index 832d814be5d7a..e65361cd8269a 100644 --- a/packages/@aws-cdk/aws-cloudfront/.gitignore +++ b/packages/@aws-cdk/aws-cloudfront/.gitignore @@ -15,4 +15,6 @@ nyc.config.js !.eslintrc.js !jest.config.js -junit.xml \ No newline at end of file +!lib/experimental/edge-function/index.js + +junit.xml diff --git a/packages/@aws-cdk/aws-cloudfront/README.md b/packages/@aws-cdk/aws-cloudfront/README.md index a75dc7aa9dce4..d752286bac5d5 100644 --- a/packages/@aws-cdk/aws-cloudfront/README.md +++ b/packages/@aws-cdk/aws-cloudfront/README.md @@ -251,8 +251,12 @@ or authorize requests based on headers or authorization tokens. The following shows a Lambda@Edge function added to the default behavior and triggered on every request: -```typescript -const myFunc = new lambda.Function(...); +```ts +const myFunc = new cloudfront.experimental.EdgeFunction(this, 'MyFunction', { + runtime: lambda.Runtime.NODEJS_10_X, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')), +}); new cloudfront.Distribution(this, 'myDist', { defaultBehavior: { origin: new origins.S3Origin(myBucket), @@ -266,9 +270,23 @@ new cloudfront.Distribution(this, 'myDist', { }); ``` +> **Note:** Lambda@Edge functions must be created in the `us-east-1` region, regardless of the region of the CloudFront distribution and stack. +> To make it easier to request functions for Lambda@Edge, the `EdgeFunction` construct can be used. +> The `EdgeFunction` construct will automatically request a function in `us-east-1`, regardless of the region of the current stack. +> `EdgeFunction` has the same interface as `Function` and can be created and used interchangably. + +If the stack is in `us-east-1`, a "normal" `lambda.Function` can be used instead of an `EdgeFunction`. + +```ts +const myFunc = new lambda.Function(this, 'MyFunction', { + runtime: lambda.Runtime.NODEJS_10_X, + handler: 'index.handler', + code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')), +}); +``` + Lambda@Edge functions can also be associated with additional behaviors, -either at Distribution creation time, -or after. +either at or after Distribution creation time. ```typescript // assigning at Distribution creation diff --git a/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts b/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts index b3c9db91d700c..0eacc04f44cc7 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts @@ -277,11 +277,11 @@ export class Distribution extends Resource implements IDistribution { const distribution = new CfnDistribution(this, 'Resource', { distributionConfig: { enabled: props.enabled ?? true, - origins: Lazy.anyValue({ produce: () => this.renderOrigins() }), - originGroups: Lazy.anyValue({ produce: () => this.renderOriginGroups() }), + origins: Lazy.any({ produce: () => this.renderOrigins() }), + originGroups: Lazy.any({ produce: () => this.renderOriginGroups() }), defaultCacheBehavior: this.defaultBehavior._renderBehavior(), aliases: props.domainNames, - cacheBehaviors: Lazy.anyValue({ produce: () => this.renderCacheBehaviors() }), + cacheBehaviors: Lazy.any({ produce: () => this.renderCacheBehaviors() }), comment: props.comment, customErrorResponses: this.renderErrorResponses(), defaultRootObject: props.defaultRootObject, diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts new file mode 100644 index 0000000000000..1a93ec84c0584 --- /dev/null +++ b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts @@ -0,0 +1,262 @@ +import * as crypto from 'crypto'; +import * as path from 'path'; +import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; +import * as ec2 from '@aws-cdk/aws-ec2'; +import * as iam from '@aws-cdk/aws-iam'; +import * as lambda from '@aws-cdk/aws-lambda'; +import * as ssm from '@aws-cdk/aws-ssm'; +import { + BootstraplessSynthesizer, CfnResource, ConstructNode, + CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, + DefaultStackSynthesizer, IStackSynthesizer, Resource, Stack, Stage, Token, +} from '@aws-cdk/core'; +import { Construct } from 'constructs'; + +/** + * Properties for creating a Lambda@Edge function + * @experimental + */ +export interface EdgeFunctionProps extends lambda.FunctionProps { } + +/** + * A Lambda@Edge function. + * + * Convenience resource for requesting a Lambda function in the 'us-east-1' region for use with Lambda@Edge. + * Implements several restrictions enforced by Lambda@Edge. + * + * @resource AWS::Lambda::Function + * @experimental + */ +export class EdgeFunction extends Resource implements lambda.IVersion { + + private static readonly EDGE_REGION: string = 'us-east-1'; + + public readonly edgeArn: string; + public readonly functionName: string; + public readonly functionArn: string; + public readonly grantPrincipal: iam.IPrincipal; + public readonly isBoundToVpc = false; + public readonly permissionsNode: ConstructNode; + public readonly role?: iam.IRole; + public readonly version: string; + + // functionStack needed for `addAlias`. + private readonly functionStack: Stack; + private readonly _edgeFunction: lambda.Function; + + constructor(scope: Construct, id: string, props: EdgeFunctionProps) { + super(scope, id); + + // Create a simple Function if we're already in us-east-1; otherwise create a cross-region stack. + const regionIsUsEast1 = !Token.isUnresolved(this.stack.region) && this.stack.region === 'us-east-1'; + const { functionStack, edgeFunction, edgeArn } = regionIsUsEast1 + ? this.createInRegionFunction(props) + : this.createCrossRegionFunction(id, props); + + this.functionStack = functionStack; + this.edgeArn = edgeArn; + + this.functionArn = edgeArn; + this._edgeFunction = edgeFunction; + this.functionName = this._edgeFunction.functionName; + this.grantPrincipal = this._edgeFunction.role!; + this.permissionsNode = this._edgeFunction.permissionsNode; + this.version = lambda.extractQualifierFromArn(this.functionArn); + + this.node.defaultChild = this._edgeFunction; + } + + public get lambda(): lambda.IFunction { + return this._edgeFunction; + } + + /** + * Convenience method to make `EdgeFunction` conform to the same interface as `Function`. + */ + public get currentVersion(): lambda.IVersion { + return this; + } + + public addAlias(aliasName: string, options: lambda.AliasOptions = {}): lambda.Alias { + return new lambda.Alias(this.functionStack, `Alias${aliasName}`, { + aliasName, + version: this._edgeFunction.currentVersion, + ...options, + }); + } + + /** + * Not supported. Connections are only applicable to VPC-enabled functions. + */ + public get connections(): ec2.Connections { + throw new Error('Lambda@Edge does not support connections'); + } + public get latestVersion(): lambda.IVersion { + throw new Error('$LATEST function version cannot be used for Lambda@Edge'); + } + + public addEventSourceMapping(id: string, options: lambda.EventSourceMappingOptions): lambda.EventSourceMapping { + return this.lambda.addEventSourceMapping(id, options); + } + public addPermission(id: string, permission: lambda.Permission): void { + return this.lambda.addPermission(id, permission); + } + public addToRolePolicy(statement: iam.PolicyStatement): void { + return this.lambda.addToRolePolicy(statement); + } + public grantInvoke(identity: iam.IGrantable): iam.Grant { + return this.lambda.grantInvoke(identity); + } + public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.lambda.metric(metricName, { ...props, region: EdgeFunction.EDGE_REGION }); + } + public metricDuration(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.lambda.metricDuration({ ...props, region: EdgeFunction.EDGE_REGION }); + } + public metricErrors(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.lambda.metricErrors({ ...props, region: EdgeFunction.EDGE_REGION }); + } + public metricInvocations(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.lambda.metricInvocations({ ...props, region: EdgeFunction.EDGE_REGION }); + } + public metricThrottles(props?: cloudwatch.MetricOptions): cloudwatch.Metric { + return this.lambda.metricThrottles({ ...props, region: EdgeFunction.EDGE_REGION }); + } + /** Adds an event source to this function. */ + public addEventSource(source: lambda.IEventSource): void { + return this.lambda.addEventSource(source); + } + public configureAsyncInvoke(options: lambda.EventInvokeConfigOptions): void { + return this.lambda.configureAsyncInvoke(options); + } + + /** Create a function in-region */ + private createInRegionFunction(props: lambda.FunctionProps): FunctionConfig { + const edgeFunction = new lambda.Function(this, 'Fn', props); + addEdgeLambdaToRoleTrustStatement(edgeFunction.role!); + + return { edgeFunction, edgeArn: edgeFunction.currentVersion.edgeArn, functionStack: this.stack }; + } + + /** Create a support stack and function in us-east-1, and a SSM reader in-region */ + private createCrossRegionFunction(id: string, props: lambda.FunctionProps): FunctionConfig { + const parameterNamePrefix = 'EdgeFunctionArn'; + const parameterName = `${parameterNamePrefix}${id}`; + const functionStack = this.edgeStack(); + + const edgeFunction = new lambda.Function(functionStack, id, props); + addEdgeLambdaToRoleTrustStatement(edgeFunction.role!); + + // Store the current version's ARN to be retrieved by the cross region reader below. + new ssm.StringParameter(edgeFunction, 'Parameter', { + parameterName, + stringValue: edgeFunction.currentVersion.edgeArn, + }); + + const edgeArn = this.createCrossRegionArnReader(parameterNamePrefix, parameterName, edgeFunction); + + return { edgeFunction, edgeArn, functionStack }; + } + + private createCrossRegionArnReader(parameterNamePrefix: string, parameterName: string, edgeFunction: lambda.Function): string { + // Prefix of the parameter ARN that applies to all EdgeFunctions. + // This is necessary because the `CustomResourceProvider` is a singleton, and the `policyStatement` + // must work for multiple EdgeFunctions. + const parameterArnPrefix = this.stack.formatArn({ + service: 'ssm', + region: EdgeFunction.EDGE_REGION, + resource: 'parameter', + resourceName: parameterNamePrefix + '*', + }); + + const resourceType = 'Custom::CrossRegionStringParameterReader'; + const serviceToken = CustomResourceProvider.getOrCreate(this, resourceType, { + codeDirectory: path.join(__dirname, 'edge-function'), + runtime: CustomResourceProviderRuntime.NODEJS_12, + policyStatements: [{ + Effect: 'Allow', + Resource: parameterArnPrefix, + Action: ['ssm:GetParameter'], + }], + }); + const resource = new CustomResource(this, 'ArnReader', { + resourceType: resourceType, + serviceToken, + properties: { + Region: EdgeFunction.EDGE_REGION, + ParameterName: parameterName, + // This is used to determine when the function has changed, to refresh the ARN from the custom resource. + RefreshToken: calculateFunctionHash(edgeFunction), + }, + }); + + return resource.getAttString('FunctionArn'); + } + + private edgeStack(): Stack { + const stage = this.node.root; + if (!stage || !Stage.isStage(stage)) { + throw new Error('stacks which use EdgeFunctions must be part of a CDK app or stage'); + } + const region = this.env.region; + if (Token.isUnresolved(region)) { + throw new Error('stacks which use EdgeFunctions must have an explicitly set region'); + } + + const edgeStackId = `edge-lambda-stack-${region}`; + let edgeStack = stage.node.tryFindChild(edgeStackId) as Stack; + if (!edgeStack) { + edgeStack = new Stack(stage, edgeStackId, { + synthesizer: crossRegionSupportSynthesizer(this.stack), + env: { region: EdgeFunction.EDGE_REGION }, + }); + } + this.stack.addDependency(edgeStack); + return edgeStack; + } +} + +/** Result of creating an in-region or cross-region function */ +interface FunctionConfig { + readonly edgeFunction: lambda.Function; + readonly edgeArn: string; + readonly functionStack: Stack; +} + +// Stolen (and modified) from `@aws-cdk/aws-codepipeline`'s `Pipeline`. +function crossRegionSupportSynthesizer(stack: Stack): IStackSynthesizer | undefined { + // If we have the new synthesizer we need a bootstrapless copy of it, + // because we don't want to require bootstrapping the environment + // of the account in this replication region. + // Otherwise, return undefined to use the default. + const scopeStackSynthesizer = stack.synthesizer; + return (scopeStackSynthesizer instanceof DefaultStackSynthesizer) + ? new BootstraplessSynthesizer({ + deployRoleArn: scopeStackSynthesizer.deployRoleArn, + cloudFormationExecutionRoleArn: scopeStackSynthesizer.cloudFormationExecutionRoleArn, + }) + : undefined; +} + +function addEdgeLambdaToRoleTrustStatement(role: iam.IRole) { + if (role instanceof iam.Role && role.assumeRolePolicy) { + const statement = new iam.PolicyStatement(); + const edgeLambdaServicePrincipal = new iam.ServicePrincipal('edgelambda.amazonaws.com'); + statement.addPrincipals(edgeLambdaServicePrincipal); + statement.addActions(edgeLambdaServicePrincipal.assumeRoleAction); + role.assumeRolePolicy.addStatements(statement); + } +} + +// Stolen from @aws-lambda/lib/function-hash.ts, which isn't currently exported. +// This should be DRY'ed up (exported by @aws-lambda) before this is marked as stable. +function calculateFunctionHash(fn: lambda.Function) { + const stack = Stack.of(fn); + const functionResource = fn.node.defaultChild as CfnResource; + // render the cloudformation resource from this function + const config = stack.resolve((functionResource as any)._toCloudFormation()); + + const hash = crypto.createHash('md5'); + hash.update(JSON.stringify(config)); + return hash.digest('hex'); +} diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js new file mode 100644 index 0000000000000..b3bf920efd2e3 --- /dev/null +++ b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js @@ -0,0 +1,19 @@ +var AWS = require('aws-sdk'); + +exports.handler = async function (event) { + const props = event.ResourceProperties; + + console.info(`Reading function ARN from SSM parameter ${props.ParameterName} in region ${props.Region}`); + + if (event.RequestType === 'Create' || event.RequestType === 'Update') { + const ssm = new AWS.SSM({ region: props.Region }); + const ssmParameter = await ssm.getParameter({ Name: props.ParameterName }).promise(); + console.info('Response: %j', ssmParameter); + const functionArn = ssmParameter.Parameter.Value; + return { + Data: { + FunctionArn: functionArn, + }, + }; + } +}; diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts b/packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts new file mode 100644 index 0000000000000..a1362556b10ea --- /dev/null +++ b/packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts @@ -0,0 +1 @@ +export * from './edge-function'; diff --git a/packages/@aws-cdk/aws-cloudfront/lib/index.ts b/packages/@aws-cdk/aws-cloudfront/lib/index.ts index e04d76a72e48d..b0bd550231be3 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/index.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/index.ts @@ -6,5 +6,7 @@ export * from './origin_access_identity'; export * from './origin-request-policy'; export * from './web_distribution'; +export * as experimental from './experimental'; + // AWS::CloudFront CloudFormation Resources: export * from './cloudfront.generated'; diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index 2aa923d6dd5db..d8f146d502e46 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -74,7 +74,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -83,20 +83,26 @@ }, "dependencies": { "@aws-cdk/aws-certificatemanager": "0.0.0", + "@aws-cdk/aws-cloudwatch": "0.0.0", + "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", + "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", "constructs": "^3.2.0" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-certificatemanager": "0.0.0", + "@aws-cdk/aws-cloudwatch": "0.0.0", + "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", + "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", "constructs": "^3.2.0" }, diff --git a/packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts b/packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts new file mode 100644 index 0000000000000..faeffde9edc51 --- /dev/null +++ b/packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts @@ -0,0 +1,202 @@ +import '@aws-cdk/assert/jest'; +import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; +import * as iam from '@aws-cdk/aws-iam'; +import * as lambda from '@aws-cdk/aws-lambda'; +import * as cdk from '@aws-cdk/core'; +import * as cloudfront from '../../lib'; + +let app: cdk.App; +let stack: cdk.Stack; + +beforeEach(() => { + app = new cdk.App(); + stack = new cdk.Stack(app, 'Stack', { + env: { account: '111111111111', region: 'testregion' }, + }); +}); + +describe('stacks', () => { + test('creates a custom resource and supporting resources in main stack', () => { + new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); + + expect(stack).toHaveResource('AWS::IAM::Role', { + AssumeRolePolicyDocument: { + Statement: [{ + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { Service: 'lambda.amazonaws.com' }, + }], + Version: '2012-10-17', + }, + ManagedPolicyArns: [ + { 'Fn::Sub': 'arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole' }, + ], + Policies: [{ + PolicyName: 'Inline', + PolicyDocument: { + Version: '2012-10-17', + Statement: [{ + Effect: 'Allow', + Resource: { + 'Fn::Join': ['', ['arn:', { Ref: 'AWS::Partition' }, ':ssm:us-east-1:111111111111:parameter/EdgeFunctionArn*']], + }, + Action: ['ssm:GetParameter'], + }], + }, + }], + }); + expect(stack).toHaveResourceLike('AWS::Lambda::Function', { + Handler: '__entrypoint__.handler', + Role: { + 'Fn::GetAtt': ['CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825', 'Arn'], + }, + }); + expect(stack).toHaveResource('Custom::CrossRegionStringParameterReader', { + ServiceToken: { + 'Fn::GetAtt': ['CustomCrossRegionStringParameterReaderCustomResourceProviderHandler65B5F33A', 'Arn'], + }, + Region: 'us-east-1', + ParameterName: 'EdgeFunctionArnMyFn', + }); + }); + + test('creates the actual function and supporting resources in us-east-1 stack', () => { + new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); + + const fnStack = getFnStack(); + + expect(fnStack).toHaveResource('AWS::IAM::Role', { + AssumeRolePolicyDocument: { + Statement: [ + { + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { Service: 'lambda.amazonaws.com' }, + }, + { + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { Service: 'edgelambda.amazonaws.com' }, + }, + ], + Version: '2012-10-17', + }, + ManagedPolicyArns: [ + { 'Fn::Join': ['', ['arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole']] }, + ], + }); + expect(fnStack).toHaveResource('AWS::Lambda::Function', { + Code: { ZipFile: 'foo' }, + Handler: 'index.handler', + Role: { 'Fn::GetAtt': ['MyFnServiceRoleF3016589', 'Arn'] }, + Runtime: 'nodejs12.x', + }); + expect(fnStack).toHaveResource('AWS::Lambda::Version', { + FunctionName: { Ref: 'MyFn6F8F742F' }, + }); + expect(fnStack).toHaveResource('AWS::SSM::Parameter', { + Type: 'String', + Value: { Ref: 'MyFnCurrentVersion309B29FC29686ce94039b6e08d1645be854b3ac9' }, + Name: 'EdgeFunctionArnMyFn', + }); + }); + + test('creates minimal constructs if scope region is us-east-1', () => { + app = new cdk.App(); + stack = new cdk.Stack(app, 'Stack', { + env: { account: '111111111111', region: 'us-east-1' }, + }); + new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); + + expect(stack).toHaveResource('AWS::IAM::Role', { + AssumeRolePolicyDocument: { + Statement: [ + { + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { Service: 'lambda.amazonaws.com' }, + }, + { + Action: 'sts:AssumeRole', + Effect: 'Allow', + Principal: { Service: 'edgelambda.amazonaws.com' }, + }, + ], + Version: '2012-10-17', + }, + ManagedPolicyArns: [ + { 'Fn::Join': ['', ['arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole']] }, + ], + }); + expect(stack).toHaveResource('AWS::Lambda::Function', { + Code: { ZipFile: 'foo' }, + Handler: 'index.handler', + Role: { 'Fn::GetAtt': ['MyFnServiceRole3F9D41E1', 'Arn'] }, + Runtime: 'nodejs12.x', + }); + expect(stack).toHaveResource('AWS::Lambda::Version', { + FunctionName: { Ref: 'MyFn223608AD' }, + }); + }); + + test('only one cross-region stack is created for multiple functions', () => { + new cloudfront.experimental.EdgeFunction(stack, 'MyFn1', defaultEdgeFunctionProps()); + new cloudfront.experimental.EdgeFunction(stack, 'MyFn2', defaultEdgeFunctionProps()); + + const fnStack = getFnStack(); + expect(fnStack).toCountResources('AWS::Lambda::Function', 2); + }); +}); + +test('addAlias() creates alias in function stack', () => { + const fn = new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); + + fn.addAlias('MyCurrentAlias'); + + const fnStack = getFnStack(); + expect(fnStack).toHaveResourceLike('AWS::Lambda::Alias', { + Name: 'MyCurrentAlias', + }); +}); + +test('addPermission() creates permissions in function stack', () => { + const fn = new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); + + fn.addPermission('MyPerms', { + action: 'lambda:InvokeFunction', + principal: new iam.AccountPrincipal('123456789012'), + }); + + const fnStack = getFnStack(); + expect(fnStack).toHaveResourceLike('AWS::Lambda::Permission', { + Action: 'lambda:InvokeFunction', + Principal: '123456789012', + }); +}); + +test('metric methods', () => { + const fn = new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); + + const metrics = new Array(); + metrics.push(fn.metricDuration()); + metrics.push(fn.metricErrors()); + metrics.push(fn.metricInvocations()); + metrics.push(fn.metricThrottles()); + + for (const metric of metrics) { + expect(metric.namespace).toEqual('AWS/Lambda'); + expect(metric.region).toEqual('us-east-1'); + } +}); + +function defaultEdgeFunctionProps() { + return { + code: lambda.Code.fromInline('foo'), + handler: 'index.handler', + runtime: lambda.Runtime.NODEJS_12_X, + }; +} + +function getFnStack(region: string = 'testregion'): cdk.Stack { + return app.node.findChild(`edge-lambda-stack-${region}`) as cdk.Stack; +} diff --git a/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json b/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json new file mode 100644 index 0000000000000..aafb7b7e3982f --- /dev/null +++ b/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json @@ -0,0 +1,261 @@ +[ + { + "Resources": { + "LambdaArnReaderAB4FC772": { + "Type": "Custom::CrossRegionStringParameterReader", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "CustomCrossRegionStringParameterReaderCustomResourceProviderHandler65B5F33A", + "Arn" + ] + }, + "Region": "us-east-1", + "ParameterName": "EdgeFunctionArnLambda", + "RefreshToken": "4412ddb0ae449da20173ca211c51fddc" + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + } + ] + }, + "ManagedPolicyArns": [ + { + "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + } + ], + "Policies": [ + { + "PolicyName": "Inline", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":ssm:us-east-1:", + { + "Ref": "AWS::AccountId" + }, + ":parameter/EdgeFunctionArn*" + ] + ] + }, + "Action": [ + "ssm:GetParameter" + ] + } + ] + } + } + ] + } + }, + "CustomCrossRegionStringParameterReaderCustomResourceProviderHandler65B5F33A": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3BucketF1BC72A7" + }, + "S3Key": { + "Fn::Join": [ + "", + [ + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3VersionKey7AD83AC7" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3VersionKey7AD83AC7" + } + ] + } + ] + } + ] + ] + } + }, + "Timeout": 900, + "MemorySize": 128, + "Handler": "__entrypoint__.handler", + "Role": { + "Fn::GetAtt": [ + "CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825", + "Arn" + ] + }, + "Runtime": "nodejs12.x" + }, + "DependsOn": [ + "CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825" + ] + }, + "DistB3B78991": { + "Type": "AWS::CloudFront::Distribution", + "Properties": { + "DistributionConfig": { + "DefaultCacheBehavior": { + "CachePolicyId": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad", + "Compress": true, + "LambdaFunctionAssociations": [ + { + "EventType": "origin-request", + "LambdaFunctionARN": { + "Fn::GetAtt": [ + "LambdaArnReaderAB4FC772", + "FunctionArn" + ] + } + } + ], + "TargetOriginId": "integdistributionlambdacrossregionDistOrigin167A054D5", + "ViewerProtocolPolicy": "allow-all" + }, + "Enabled": true, + "HttpVersion": "http2", + "IPV6Enabled": true, + "Origins": [ + { + "CustomOriginConfig": { + "OriginProtocolPolicy": "https-only" + }, + "DomainName": "www.example.com", + "Id": "integdistributionlambdacrossregionDistOrigin167A054D5" + } + ] + } + } + } + }, + "Parameters": { + "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3BucketF1BC72A7": { + "Type": "String", + "Description": "S3 bucket for asset \"45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241\"" + }, + "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3VersionKey7AD83AC7": { + "Type": "String", + "Description": "S3 key for asset version \"45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241\"" + }, + "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241ArtifactHash1B3D1B80": { + "Type": "String", + "Description": "Artifact hash for asset \"45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241\"" + } + } + }, + { + "Resources": { + "LambdaServiceRoleA8ED4D3B": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "lambda.amazonaws.com" + } + }, + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "edgelambda.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" + ] + ] + } + ] + } + }, + "LambdaD247545B": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "ZipFile": "foo" + }, + "Handler": "index.handler", + "Role": { + "Fn::GetAtt": [ + "LambdaServiceRoleA8ED4D3B", + "Arn" + ] + }, + "Runtime": "nodejs10.x" + }, + "DependsOn": [ + "LambdaServiceRoleA8ED4D3B" + ] + }, + "LambdaCurrentVersionDF706F6A97fb843e9bd06fcd2bb15eeace80e13e": { + "Type": "AWS::Lambda::Version", + "Properties": { + "FunctionName": { + "Ref": "LambdaD247545B" + } + } + }, + "LambdaParameterCDCFFB68": { + "Type": "AWS::SSM::Parameter", + "Properties": { + "Type": "String", + "Value": { + "Ref": "LambdaCurrentVersionDF706F6A97fb843e9bd06fcd2bb15eeace80e13e" + }, + "Name": "EdgeFunctionArnLambda" + } + } + } + } +] \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts b/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts new file mode 100644 index 0000000000000..5814ab3d6ce59 --- /dev/null +++ b/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts @@ -0,0 +1,27 @@ +/// !cdk-integ * +import * as lambda from '@aws-cdk/aws-lambda'; +import * as cdk from '@aws-cdk/core'; +import * as cloudfront from '../lib'; +import { TestOrigin } from './test-origin'; + +const app = new cdk.App(); +const stack = new cdk.Stack(app, 'integ-distribution-lambda-cross-region', { env: { region: 'eu-west-1' } }); + +const lambdaFunction = new cloudfront.experimental.EdgeFunction(stack, 'Lambda', { + code: lambda.Code.fromInline('foo'), + handler: 'index.handler', + runtime: lambda.Runtime.NODEJS_10_X, +}); + +new cloudfront.Distribution(stack, 'Dist', { + defaultBehavior: { + origin: new TestOrigin('www.example.com'), + cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED, + edgeLambdas: [{ + functionVersion: lambdaFunction.currentVersion, + eventType: cloudfront.LambdaEdgeEventType.ORIGIN_REQUEST, + }], + }, +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index 6c2185d179185..c2c820dca66d2 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -74,7 +74,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts b/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts index ae8fd29424786..5c1daacb54dd3 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts @@ -179,9 +179,9 @@ export class Alarm extends AlarmBase { // Actions actionsEnabled: props.actionsEnabled, - alarmActions: Lazy.listValue({ produce: () => this.alarmActionArns }), - insufficientDataActions: Lazy.listValue({ produce: (() => this.insufficientDataActionArns) }), - okActions: Lazy.listValue({ produce: () => this.okActionArns }), + alarmActions: Lazy.list({ produce: () => this.alarmActionArns }), + insufficientDataActions: Lazy.list({ produce: (() => this.insufficientDataActionArns) }), + okActions: Lazy.list({ produce: () => this.okActionArns }), // Metric ...metricProps, diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts b/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts index 8d625ee16f7f6..8b9d61c99ea82 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts @@ -91,7 +91,7 @@ export class CompositeAlarm extends AlarmBase { constructor(scope: Construct, id: string, props: CompositeAlarmProps) { super(scope, id, { - physicalName: props.compositeAlarmName ?? Lazy.stringValue({ produce: () => this.generateUniqueId() }), + physicalName: props.compositeAlarmName ?? Lazy.string({ produce: () => this.generateUniqueId() }), }); if (props.alarmRule.renderAlarmRule().length > 10240) { @@ -105,9 +105,9 @@ export class CompositeAlarm extends AlarmBase { alarmRule: this.alarmRule, alarmDescription: props.alarmDescription, actionsEnabled: props.actionsEnabled, - alarmActions: Lazy.listValue({ produce: () => this.alarmActionArns }), - insufficientDataActions: Lazy.listValue({ produce: (() => this.insufficientDataActionArns) }), - okActions: Lazy.listValue({ produce: () => this.okActionArns }), + alarmActions: Lazy.list({ produce: () => this.alarmActionArns }), + insufficientDataActions: Lazy.list({ produce: (() => this.insufficientDataActionArns) }), + okActions: Lazy.list({ produce: () => this.okActionArns }), }); this.alarmName = this.getResourceNameAttribute(alarm.ref); diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts b/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts index f4a17d634f32f..91813d592463c 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts @@ -94,7 +94,7 @@ export class Dashboard extends Resource { new CfnDashboard(this, 'Resource', { dashboardName: this.physicalName, - dashboardBody: Lazy.stringValue({ + dashboardBody: Lazy.string({ produce: () => { const column = new Column(...this.rows); column.position(0, 0); diff --git a/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts b/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts index 7f9236319d7bb..5f33babced96a 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts @@ -63,7 +63,7 @@ class ObjectBuildSpec extends BuildSpec { public toBuildSpec(): string { // We have to pretty-print the buildspec, otherwise // CodeBuild will not recognize it as an inline buildspec. - return Lazy.stringValue({ + return Lazy.uncachedString({ produce: (ctx: IResolveContext) => Stack.of(ctx.scope).toJsonString(this.spec, 2), }); diff --git a/packages/@aws-cdk/aws-codebuild/lib/project.ts b/packages/@aws-cdk/aws-codebuild/lib/project.ts index 8973dc8f5ea04..7810c82287f4c 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/project.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/project.ts @@ -764,18 +764,18 @@ export class Project extends ProjectBase { artifacts: artifactsConfig.artifactsProperty, serviceRole: this.role.roleArn, environment: this.renderEnvironment(props.environment, environmentVariables), - fileSystemLocations: Lazy.anyValue({ produce: () => this.renderFileSystemLocations() }), + fileSystemLocations: Lazy.any({ produce: () => this.renderFileSystemLocations() }), // lazy, because we have a setter for it in setEncryptionKey // The 'alias/aws/s3' default is necessary because leaving the `encryptionKey` field // empty will not remove existing encryptionKeys during an update (ref. t/D17810523) - encryptionKey: Lazy.stringValue({ produce: () => this._encryptionKey ? this._encryptionKey.keyArn : 'alias/aws/s3' }), + encryptionKey: Lazy.string({ produce: () => this._encryptionKey ? this._encryptionKey.keyArn : 'alias/aws/s3' }), badgeEnabled: props.badge, cache: cache._toCloudFormation(), name: this.physicalName, timeoutInMinutes: props.timeout && props.timeout.toMinutes(), - secondarySources: Lazy.anyValue({ produce: () => this.renderSecondarySources() }), - secondarySourceVersions: Lazy.anyValue({ produce: () => this.renderSecondarySourceVersions() }), - secondaryArtifacts: Lazy.anyValue({ produce: () => this.renderSecondaryArtifacts() }), + secondarySources: Lazy.any({ produce: () => this.renderSecondarySources() }), + secondarySourceVersions: Lazy.any({ produce: () => this.renderSecondarySourceVersions() }), + secondaryArtifacts: Lazy.any({ produce: () => this.renderSecondaryArtifacts() }), triggers: sourceConfig.buildTriggers, sourceVersion: sourceConfig.sourceVersion, vpcConfig: this.configureVpc(props), diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index d43252c66587d..ab06f3d6ae50d 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -80,7 +80,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-codecommit/lib/repository.ts b/packages/@aws-cdk/aws-codecommit/lib/repository.ts index 7345d669ed763..dbb4d3064c9e9 100644 --- a/packages/@aws-cdk/aws-codecommit/lib/repository.ts +++ b/packages/@aws-cdk/aws-codecommit/lib/repository.ts @@ -335,7 +335,7 @@ export class Repository extends RepositoryBase { this.repository = new CfnRepository(this, 'Resource', { repositoryName: props.repositoryName, repositoryDescription: props.description, - triggers: Lazy.anyValue({ produce: () => this.triggers }, { omitEmptyArray: true }), + triggers: Lazy.any({ produce: () => this.triggers }, { omitEmptyArray: true }), }); this.repositoryName = this.getResourceNameAttribute(this.repository.attrName); diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index ba05c7888b5ac..d75a5b1595099 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -80,7 +80,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts b/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts index c8b8152356091..0d6c6a347886a 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts @@ -170,8 +170,8 @@ export class LambdaDeploymentGroup extends cdk.Resource implements ILambdaDeploy deploymentType: 'BLUE_GREEN', deploymentOption: 'WITH_TRAFFIC_CONTROL', }, - alarmConfiguration: cdk.Lazy.anyValue({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), - autoRollbackConfiguration: cdk.Lazy.anyValue({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), + alarmConfiguration: cdk.Lazy.any({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), + autoRollbackConfiguration: cdk.Lazy.any({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), }); this.deploymentGroupName = this.getResourceNameAttribute(resource.ref); @@ -193,8 +193,8 @@ export class LambdaDeploymentGroup extends cdk.Resource implements ILambdaDeploy codeDeployLambdaAliasUpdate: { applicationName: this.application.applicationName, deploymentGroupName: resource.ref, - beforeAllowTrafficHook: cdk.Lazy.stringValue({ produce: () => this.preHook && this.preHook.functionName }), - afterAllowTrafficHook: cdk.Lazy.stringValue({ produce: () => this.postHook && this.postHook.functionName }), + beforeAllowTrafficHook: cdk.Lazy.string({ produce: () => this.preHook && this.preHook.functionName }), + afterAllowTrafficHook: cdk.Lazy.string({ produce: () => this.postHook && this.postHook.functionName }), }, }; diff --git a/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts b/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts index 9a3d912bb1e0d..eb4bbafade216 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts @@ -291,7 +291,7 @@ export class ServerDeploymentGroup extends ServerDeploymentGroupBase { serviceRoleArn: this.role.roleArn, deploymentConfigName: props.deploymentConfig && props.deploymentConfig.deploymentConfigName, - autoScalingGroups: cdk.Lazy.listValue({ produce: () => this._autoScalingGroups.map(asg => asg.autoScalingGroupName) }, { omitEmpty: true }), + autoScalingGroups: cdk.Lazy.list({ produce: () => this._autoScalingGroups.map(asg => asg.autoScalingGroupName) }, { omitEmpty: true }), loadBalancerInfo: this.loadBalancerInfo(props.loadBalancer), deploymentStyle: props.loadBalancer === undefined ? undefined @@ -300,8 +300,8 @@ export class ServerDeploymentGroup extends ServerDeploymentGroupBase { }, ec2TagSet: this.ec2TagSet(props.ec2InstanceTags), onPremisesTagSet: this.onPremiseTagSet(props.onPremiseInstanceTags), - alarmConfiguration: cdk.Lazy.anyValue({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), - autoRollbackConfiguration: cdk.Lazy.anyValue({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), + alarmConfiguration: cdk.Lazy.any({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), + autoRollbackConfiguration: cdk.Lazy.any({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), }); this.deploymentGroupName = this.getResourceNameAttribute(resource.ref); diff --git a/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts b/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts index d47c994c283e4..0537b469c17d5 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts +++ b/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts @@ -177,7 +177,7 @@ export class ProfilingGroup extends ProfilingGroupBase { constructor(scope: Construct, id: string, props: ProfilingGroupProps = {}) { super(scope, id, { - physicalName: props.profilingGroupName ?? Lazy.stringValue({ produce: () => this.generateUniqueId() }), + physicalName: props.profilingGroupName ?? Lazy.string({ produce: () => this.generateUniqueId() }), }); const profilingGroup = new CfnProfilingGroup(this, 'ProfilingGroup', { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts index e14f3184011a0..b3ce90e2aa793 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts @@ -24,7 +24,7 @@ export abstract class Action implements codepipeline.IAction { protected constructor(actionProperties: codepipeline.ActionProperties) { this.customerProvidedNamespace = actionProperties.variablesNamespace; - this.namespaceOrToken = Lazy.stringValue({ + this.namespaceOrToken = Lazy.string({ produce: () => { // make sure the action was bound (= added to a pipeline) if (this.actualNamespace !== undefined) { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts index 53d789b665262..cedc1db5ca90b 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts @@ -174,7 +174,7 @@ export class CodeBuildAction extends Action { }; if ((this.actionProperties.inputs || []).length > 1) { // lazy, because the Artifact name might be generated lazily - configuration.PrimarySource = cdk.Lazy.stringValue({ produce: () => this.props.input.artifactName }); + configuration.PrimarySource = cdk.Lazy.string({ produce: () => this.props.input.artifactName }); } return { configuration, diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts index 771a1b8e3e448..33bc07c148b1e 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts @@ -184,12 +184,12 @@ export class CodeDeployEcsDeployAction extends Action { ApplicationName: this.actionProps.deploymentGroup.application.applicationName, DeploymentGroupName: this.actionProps.deploymentGroup.deploymentGroupName, - TaskDefinitionTemplateArtifact: Lazy.stringValue({ produce: () => taskDefinitionTemplateArtifact.artifactName }), + TaskDefinitionTemplateArtifact: Lazy.string({ produce: () => taskDefinitionTemplateArtifact.artifactName }), TaskDefinitionTemplatePath: this.actionProps.taskDefinitionTemplateFile ? this.actionProps.taskDefinitionTemplateFile.fileName : 'taskdef.json', - AppSpecTemplateArtifact: Lazy.stringValue({ produce: () => appSpecTemplateArtifact.artifactName }), + AppSpecTemplateArtifact: Lazy.string({ produce: () => appSpecTemplateArtifact.artifactName }), AppSpecTemplatePath: this.actionProps.appSpecTemplateFile ? this.actionProps.appSpecTemplateFile.fileName : 'appspec.yaml', @@ -199,7 +199,7 @@ export class CodeDeployEcsDeployAction extends Action { if (this.actionProps.containerImageInputs) { for (let i = 1; i <= this.actionProps.containerImageInputs.length; i++) { const imageInput = this.actionProps.containerImageInputs[i - 1]; - actionConfig.configuration[`Image${i}ArtifactName`] = Lazy.stringValue({ produce: () => imageInput.input.artifactName }); + actionConfig.configuration[`Image${i}ArtifactName`] = Lazy.string({ produce: () => imageInput.input.artifactName }); actionConfig.configuration[`Image${i}ContainerName`] = imageInput.taskDefinitionPlaceholder ? imageInput.taskDefinitionPlaceholder : 'IMAGE'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts index 520af74ba8af2..9aa0ac65a72c9 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts @@ -240,7 +240,7 @@ export = { repository: new codecommit.Repository(stack, 'R', { repositoryName: 'repository', }), - branch: Lazy.stringValue({ produce: () => 'my-branch' }), + branch: Lazy.string({ produce: () => 'my-branch' }), output: sourceOutput, }), ], @@ -291,7 +291,7 @@ export = { repository: new codecommit.Repository(stack, 'R', { repositoryName: 'repository', }), - branch: Lazy.stringValue({ produce: () => 'my-branch' }), + branch: Lazy.string({ produce: () => 'my-branch' }), output: sourceOutput, eventRole: triggerEventTestRole, }); diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts index 84af1c50a7583..035d8ddb63a38 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts @@ -39,7 +39,7 @@ export = { 'properly resolves any Tokens passed in userParameters'(test: Test) { const stack = stackIncludingLambdaInvokeCodePipeline({ userParams: { - key: Lazy.stringValue({ produce: () => Aws.REGION }), + key: Lazy.string({ produce: () => Aws.REGION }), }, }); diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts index 6b9dc716961e5..fc069cffae6d3 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts @@ -182,13 +182,13 @@ export = { const bucket = new s3.Bucket(stack, 'MyBucket'); const sourceStage = minimalPipeline(stack, { bucket, - bucketKey: Lazy.stringValue({ produce: () => 'my-bucket-key1' }), + bucketKey: Lazy.string({ produce: () => 'my-bucket-key1' }), trigger: cpactions.S3Trigger.EVENTS, }); sourceStage.addAction(new cpactions.S3SourceAction({ actionName: 'Source2', bucket, - bucketKey: Lazy.stringValue({ produce: () => 'my-bucket-key2' }), + bucketKey: Lazy.string({ produce: () => 'my-bucket-key2' }), trigger: cpactions.S3Trigger.EVENTS, output: new codepipeline.Artifact(), })); diff --git a/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts b/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts index 487cc7c422189..5317676a5f0fe 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts @@ -132,17 +132,17 @@ export class ArtifactPath { public get location() { const artifactName = this.artifact.artifactName ? this.artifact.artifactName - : Lazy.stringValue({ produce: () => this.artifact.artifactName }); + : Lazy.string({ produce: () => this.artifact.artifactName }); return `${artifactName}::${this.fileName}`; } } function artifactAttribute(artifact: Artifact, attributeName: string) { - const lazyArtifactName = Lazy.stringValue({ produce: () => artifact.artifactName }); + const lazyArtifactName = Lazy.string({ produce: () => artifact.artifactName }); return Token.asString({ 'Fn::GetArtifactAtt': [lazyArtifactName, attributeName] }); } function artifactGetParam(artifact: Artifact, jsonFile: string, keyName: string) { - const lazyArtifactName = Lazy.stringValue({ produce: () => artifact.artifactName }); + const lazyArtifactName = Lazy.string({ produce: () => artifact.artifactName }); return Token.asString({ 'Fn::GetParam': [lazyArtifactName, jsonFile, keyName] }); } diff --git a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts index e59de17b454b3..ba7fd8d87233d 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts @@ -283,9 +283,9 @@ export class Pipeline extends PipelineBase { }); const codePipeline = new CfnPipeline(this, 'Resource', { - artifactStore: Lazy.anyValue({ produce: () => this.renderArtifactStoreProperty() }), - artifactStores: Lazy.anyValue({ produce: () => this.renderArtifactStoresProperty() }), - stages: Lazy.anyValue({ produce: () => this.renderStages() }), + artifactStore: Lazy.any({ produce: () => this.renderArtifactStoreProperty() }), + artifactStores: Lazy.any({ produce: () => this.renderArtifactStoresProperty() }), + stages: Lazy.any({ produce: () => this.renderStages() }), roleArn: this.role.roleArn, restartExecutionOnUpdate: props && props.restartExecutionOnUpdate, name: this.physicalName, diff --git a/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts b/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts index a0f16972e1575..e9ed5a6995f02 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts @@ -142,8 +142,8 @@ export class Stage implements IStage { } private renderAction(action: FullActionDescriptor): CfnPipeline.ActionDeclarationProperty { - const outputArtifacts = cdk.Lazy.anyValue({ produce: () => this.renderArtifacts(action.outputs) }, { omitEmptyArray: true }); - const inputArtifacts = cdk.Lazy.anyValue({ produce: () => this.renderArtifacts(action.inputs) }, { omitEmptyArray: true }); + const outputArtifacts = cdk.Lazy.any({ produce: () => this.renderArtifacts(action.outputs) }, { omitEmptyArray: true }); + const inputArtifacts = cdk.Lazy.any({ produce: () => this.renderArtifacts(action.inputs) }, { omitEmptyArray: true }); return { name: action.actionName, inputArtifacts, diff --git a/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts b/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts index ab2f56471f1dd..8e8c2652caa9c 100644 --- a/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts @@ -31,7 +31,7 @@ export class FakeSourceAction implements codepipeline.IAction { outputs: [props.output, ...props.extraOutputs || []], }; this.variables = { - firstVariable: Lazy.stringValue({ produce: () => `#{${this.actionProperties.variablesNamespace}.FirstVariable}` }), + firstVariable: Lazy.string({ produce: () => `#{${this.actionProperties.variablesNamespace}.FirstVariable}` }), }; } diff --git a/packages/@aws-cdk/aws-cognito/lib/user-pool.ts b/packages/@aws-cdk/aws-cognito/lib/user-pool.ts index 0e652fb2c0b76..3730c7c97a301 100644 --- a/packages/@aws-cdk/aws-cognito/lib/user-pool.ts +++ b/packages/@aws-cdk/aws-cognito/lib/user-pool.ts @@ -736,7 +736,7 @@ export class UserPool extends UserPoolBase { usernameAttributes: signIn.usernameAttrs, aliasAttributes: signIn.aliasAttrs, autoVerifiedAttributes: signIn.autoVerifyAttrs, - lambdaConfig: Lazy.anyValue({ produce: () => undefinedIfNoKeys(this.triggers) }), + lambdaConfig: Lazy.any({ produce: () => undefinedIfNoKeys(this.triggers) }), smsConfiguration: this.smsConfiguration(props), adminCreateUserConfig, emailVerificationMessage, diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index e41f34a5206af..785b16e45bb37 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -89,7 +89,6 @@ "@aws-cdk/custom-resources": "0.0.0", "constructs": "^3.2.0", "punycode": "^2.1.1" - }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { diff --git a/packages/@aws-cdk/aws-config/lib/managed-rules.ts b/packages/@aws-cdk/aws-config/lib/managed-rules.ts index cfbe2645367c6..4bc7b7fa8c015 100644 --- a/packages/@aws-cdk/aws-config/lib/managed-rules.ts +++ b/packages/@aws-cdk/aws-config/lib/managed-rules.ts @@ -78,7 +78,7 @@ export class CloudFormationStackDriftDetectionCheck extends ManagedRule { ...props, identifier: ManagedRuleIdentifiers.CLOUDFORMATION_STACK_DRIFT_DETECTION_CHECK, inputParameters: { - cloudformationRoleArn: Lazy.stringValue({ produce: () => this.role.roleArn }), + cloudformationRoleArn: Lazy.string({ produce: () => this.role.roleArn }), }, }); diff --git a/packages/@aws-cdk/aws-config/lib/rule.ts b/packages/@aws-cdk/aws-config/lib/rule.ts index ac4044ac4ae99..2b6ad35d08859 100644 --- a/packages/@aws-cdk/aws-config/lib/rule.ts +++ b/packages/@aws-cdk/aws-config/lib/rule.ts @@ -265,7 +265,7 @@ export class ManagedRule extends RuleNew { description: props.description, inputParameters: props.inputParameters, maximumExecutionFrequency: props.maximumExecutionFrequency, - scope: Lazy.anyValue({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) + scope: Lazy.any({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) source: { owner: 'AWS', sourceIdentifier: props.identifier, @@ -371,7 +371,7 @@ export class CustomRule extends RuleNew { description: props.description, inputParameters: props.inputParameters, maximumExecutionFrequency: props.maximumExecutionFrequency, - scope: Lazy.anyValue({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) + scope: Lazy.any({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) source: { owner: 'CUSTOM_LAMBDA', sourceDetails, diff --git a/packages/@aws-cdk/aws-databrew/.eslintrc.js b/packages/@aws-cdk/aws-databrew/.eslintrc.js new file mode 100644 index 0000000000000..61dd8dd001f63 --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-databrew/.gitignore b/packages/@aws-cdk/aws-databrew/.gitignore new file mode 100644 index 0000000000000..62ebc95d75ce6 --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/.gitignore @@ -0,0 +1,19 @@ +*.js +*.js.map +*.d.ts +tsconfig.json +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk +nyc.config.js +!.eslintrc.js +!jest.config.js +junit.xml diff --git a/packages/@aws-cdk/aws-databrew/.npmignore b/packages/@aws-cdk/aws-databrew/.npmignore new file mode 100644 index 0000000000000..e4486030fcb17 --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/.npmignore @@ -0,0 +1,28 @@ +# Don't include original .ts files when doing `npm pack` +*.ts +!*.d.ts +coverage +.nyc_output +*.tgz + +dist +.LAST_PACKAGE +.LAST_BUILD +!*.js + +# Include .jsii +!.jsii + +*.snk + +*.tsbuildinfo + +tsconfig.json + +.eslintrc.js +jest.config.js + +# exclude cdk artifacts +**/cdk.out +junit.xml +test/ diff --git a/packages/@aws-cdk/aws-databrew/LICENSE b/packages/@aws-cdk/aws-databrew/LICENSE new file mode 100644 index 0000000000000..b71ec1688783a --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-databrew/NOTICE b/packages/@aws-cdk/aws-databrew/NOTICE new file mode 100644 index 0000000000000..bfccac9a7f69c --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-databrew/README.md b/packages/@aws-cdk/aws-databrew/README.md new file mode 100644 index 0000000000000..d3ad1b0618ed8 --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/README.md @@ -0,0 +1,16 @@ +## AWS::DataBrew Construct Library + +--- + +![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) + +> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use. + +--- + + +This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. + +```ts +import databrew = require('@aws-cdk/aws-databrew'); +``` diff --git a/packages/@aws-cdk/aws-databrew/jest.config.js b/packages/@aws-cdk/aws-databrew/jest.config.js new file mode 100644 index 0000000000000..54e28beb9798b --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-databrew/lib/index.ts b/packages/@aws-cdk/aws-databrew/lib/index.ts new file mode 100644 index 0000000000000..1e8de6dfda21a --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::DataBrew CloudFormation Resources: +export * from './databrew.generated'; diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json new file mode 100644 index 0000000000000..8440ca093db74 --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -0,0 +1,97 @@ +{ + "name": "@aws-cdk/aws-databrew", + "version": "0.0.0", + "description": "The CDK Construct Library for AWS::DataBrew", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "projectReferences": true, + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DataBrew", + "packageId": "Amazon.CDK.AWS.DataBrew", + "signAssembly": true, + "assemblyOriginatorKeyFile": "../../key.snk", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "java": { + "package": "software.amazon.awscdk.services.databrew", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "databrew" + } + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 1" + ], + "distName": "aws-cdk.aws-databrew", + "module": "aws_cdk.aws_databrew" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-databrew" + }, + "homepage": "https://github.com/aws/aws-cdk", + "scripts": { + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "cdk-integ", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", + "cfn2ts": "cfn2ts", + "build+test+package": "npm run build+test && npm run package", + "build+test": "npm run build && npm test", + "compat": "cdk-compat", + "gen": "cfn2ts" + }, + "cdk-build": { + "cloudformation": "AWS::DataBrew", + "jest": true, + "env": { + "AWSLINT_BASE_CONSTRUCT": "true" + } + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "AWS::DataBrew", + "aws-databrew" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "0.0.0", + "cdk-build-tools": "0.0.0", + "cfn2ts": "0.0.0", + "pkglint": "0.0.0" + }, + "dependencies": { + "@aws-cdk/core": "0.0.0" + }, + "peerDependencies": { + "@aws-cdk/core": "0.0.0" + }, + "engines": { + "node": ">= 10.13.0 <13 || >=13.7.0" + }, + "stability": "experimental", + "maturity": "cfn-only", + "awscdkio": { + "announce": false + }, + "private": true +} diff --git a/packages/@aws-cdk/aws-databrew/test/databrew.test.ts b/packages/@aws-cdk/aws-databrew/test/databrew.test.ts new file mode 100644 index 0000000000000..e394ef336bfb4 --- /dev/null +++ b/packages/@aws-cdk/aws-databrew/test/databrew.test.ts @@ -0,0 +1,6 @@ +import '@aws-cdk/assert/jest'; +import {} from '../lib'; + +test('No tests are specified for this package', () => { + expect(true).toBe(true); +}); diff --git a/packages/@aws-cdk/aws-dynamodb/lib/table.ts b/packages/@aws-cdk/aws-dynamodb/lib/table.ts index f67175c62c5b9..780d240abbc55 100644 --- a/packages/@aws-cdk/aws-dynamodb/lib/table.ts +++ b/packages/@aws-cdk/aws-dynamodb/lib/table.ts @@ -558,9 +558,9 @@ abstract class TableBase extends Resource implements ITable { actions, resourceArns: [ this.tableArn, - Lazy.stringValue({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), + Lazy.string({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), ...this.regionalArns, - ...this.regionalArns.map(arn => Lazy.stringValue({ + ...this.regionalArns.map(arn => Lazy.string({ produce: () => this.hasIndex ? `${arn}/index/*` : Aws.NO_VALUE, })), ], @@ -873,9 +873,9 @@ abstract class TableBase extends Resource implements ITable { ): iam.Grant { if (opts.tableActions) { const resources = [this.tableArn, - Lazy.stringValue({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), + Lazy.string({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), ...this.regionalArns, - ...this.regionalArns.map(arn => Lazy.stringValue({ + ...this.regionalArns.map(arn => Lazy.string({ produce: () => this.hasIndex ? `${arn}/index/*` : Aws.NO_VALUE, }))]; const ret = iam.Grant.addToPrincipal({ @@ -1059,8 +1059,8 @@ export class Table extends TableBase { tableName: this.physicalName, keySchema: this.keySchema, attributeDefinitions: this.attributeDefinitions, - globalSecondaryIndexes: Lazy.anyValue({ produce: () => this.globalSecondaryIndexes }, { omitEmptyArray: true }), - localSecondaryIndexes: Lazy.anyValue({ produce: () => this.localSecondaryIndexes }, { omitEmptyArray: true }), + globalSecondaryIndexes: Lazy.any({ produce: () => this.globalSecondaryIndexes }, { omitEmptyArray: true }), + localSecondaryIndexes: Lazy.any({ produce: () => this.localSecondaryIndexes }, { omitEmptyArray: true }), pointInTimeRecoverySpecification: props.pointInTimeRecovery ? { pointInTimeRecoveryEnabled: props.pointInTimeRecovery } : undefined, billingMode: this.billingMode === BillingMode.PAY_PER_REQUEST ? this.billingMode : undefined, provisionedThroughput: this.billingMode === BillingMode.PAY_PER_REQUEST ? undefined : { diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index 4d090b7ece65d..1de117ceae58c 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/jest": "^26.0.15", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-ec2/lib/instance.ts b/packages/@aws-cdk/aws-ec2/lib/instance.ts index 07ada4670aa9a..a7e56280fa4dd 100644 --- a/packages/@aws-cdk/aws-ec2/lib/instance.ts +++ b/packages/@aws-cdk/aws-ec2/lib/instance.ts @@ -324,8 +324,8 @@ export class Instance extends Resource implements IInstance { // use delayed evaluation const imageConfig = props.machineImage.getImage(this); this.userData = props.userData ?? imageConfig.userData; - const userDataToken = Lazy.stringValue({ produce: () => Fn.base64(this.userData.render()) }); - const securityGroupsToken = Lazy.listValue({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); + const userDataToken = Lazy.string({ produce: () => Fn.base64(this.userData.render()) }); + const securityGroupsToken = Lazy.list({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); const { subnets } = props.vpc.selectSubnets(props.vpcSubnets); let subnet; @@ -385,7 +385,7 @@ export class Instance extends Resource implements IInstance { // Trigger replacement (via new logical ID) on user data change, if specified or cfn-init is being used. const originalLogicalId = Stack.of(this).getLogicalId(this.instance); - this.instance.overrideLogicalId(Lazy.stringValue({ + this.instance.overrideLogicalId(Lazy.uncachedString({ produce: () => { let logicalId = originalLogicalId; if (props.userDataCausesReplacement ?? props.initOptions) { diff --git a/packages/@aws-cdk/aws-ec2/lib/security-group.ts b/packages/@aws-cdk/aws-ec2/lib/security-group.ts index db733fcb816d4..62a0ceb19e0ca 100644 --- a/packages/@aws-cdk/aws-ec2/lib/security-group.ts +++ b/packages/@aws-cdk/aws-ec2/lib/security-group.ts @@ -395,8 +395,8 @@ export class SecurityGroup extends SecurityGroupBase { this.securityGroup = new CfnSecurityGroup(this, 'Resource', { groupName: this.physicalName, groupDescription, - securityGroupIngress: Lazy.anyValue({ produce: () => this.directIngressRules }, { omitEmptyArray: true } ), - securityGroupEgress: Lazy.anyValue({ produce: () => this.directEgressRules }, { omitEmptyArray: true } ), + securityGroupIngress: Lazy.any({ produce: () => this.directIngressRules }, { omitEmptyArray: true } ), + securityGroupEgress: Lazy.any({ produce: () => this.directEgressRules }, { omitEmptyArray: true } ), vpcId: props.vpc.vpcId, }); diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts b/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts index f66045e9ffd3c..e17632ac2acb0 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts @@ -192,7 +192,7 @@ export class GatewayVpcEndpoint extends VpcEndpoint implements IGatewayVpcEndpoi } const endpoint = new CfnVPCEndpoint(this, 'Resource', { - policyDocument: Lazy.anyValue({ produce: () => this.policyDocument }), + policyDocument: Lazy.any({ produce: () => this.policyDocument }), routeTableIds, serviceName: props.service.name, vpcEndpointType: VpcEndpointType.GATEWAY, @@ -318,7 +318,7 @@ export class InterfaceVpcEndpointAwsService implements IInterfaceVpcEndpointServ public readonly privateDnsDefault?: boolean = true; constructor(name: string, prefix?: string, port?: number) { - const region = Lazy.stringValue({ + const region = Lazy.uncachedString({ produce: (context) => Stack.of(context.scope).region, }); this.name = `${prefix || 'com.amazonaws'}.${region}.${name}`; @@ -482,7 +482,7 @@ export class InterfaceVpcEndpoint extends VpcEndpoint implements IInterfaceVpcEn const endpoint = new CfnVPCEndpoint(this, 'Resource', { privateDnsEnabled: props.privateDnsEnabled ?? props.service.privateDnsDefault ?? true, - policyDocument: Lazy.anyValue({ produce: () => this.policyDocument }), + policyDocument: Lazy.any({ produce: () => this.policyDocument }), securityGroupIds: securityGroups.map(s => s.securityGroupId), serviceName: props.service.name, vpcEndpointType: VpcEndpointType.INTERFACE, diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc.ts b/packages/@aws-cdk/aws-ec2/lib/vpc.ts index 7cbf02c76a452..f6ce634b18a75 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc.ts @@ -1536,7 +1536,7 @@ export class Subnet extends Resource implements ISubnet { // subnet.attrNetworkAclAssociationId is the default ACL after the subnet // was just created. However, the ACL can be replaced at a later time. this._networkAcl = NetworkAcl.fromNetworkAclId(this, 'Acl', subnet.attrNetworkAclAssociationId); - this.subnetNetworkAclAssociationId = Lazy.stringValue({ produce: () => this._networkAcl.networkAclId }); + this.subnetNetworkAclAssociationId = Lazy.string({ produce: () => this._networkAcl.networkAclId }); this.node.defaultChild = subnet; const table = new CfnRouteTable(this, 'RouteTable', { diff --git a/packages/@aws-cdk/aws-ec2/test/security-group.test.ts b/packages/@aws-cdk/aws-ec2/test/security-group.test.ts index 1a72a6a715d2c..9851d87235c41 100644 --- a/packages/@aws-cdk/aws-ec2/test/security-group.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/security-group.test.ts @@ -163,11 +163,11 @@ nodeunitShim({ const ports = [ Port.tcp(1234), - Port.tcp(Lazy.numberValue({ produce: () => 5000 })), + Port.tcp(Lazy.number({ produce: () => 5000 })), Port.allTcp(), Port.tcpRange(80, 90), Port.udp(2345), - Port.udp(Lazy.numberValue({ produce: () => 7777 })), + Port.udp(Lazy.number({ produce: () => 7777 })), Port.allUdp(), Port.udpRange(85, 95), Port.icmpTypeAndCode(5, 1), @@ -192,8 +192,8 @@ nodeunitShim({ 'if tokens are used in ports, `canInlineRule` should be false to avoid cycles'(test: Test) { // GIVEN - const p1 = Lazy.numberValue({ produce: () => 80 }); - const p2 = Lazy.numberValue({ produce: () => 5000 }); + const p1 = Lazy.number({ produce: () => 80 }); + const p2 = Lazy.number({ produce: () => 5000 }); // WHEN const ports = [ diff --git a/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts b/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts index 766a16dea0b1d..5555dc3fa9ed7 100644 --- a/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts @@ -13,7 +13,7 @@ nodeunitShim({ test.throws(() => { Vpc.fromLookup(stack, 'Vpc', { - vpcId: Lazy.stringValue({ produce: () => 'some-id' }), + vpcId: Lazy.string({ produce: () => 'some-id' }), }); }, 'All arguments to Vpc.fromLookup() must be concrete'); diff --git a/packages/@aws-cdk/aws-ec2/test/vpc.test.ts b/packages/@aws-cdk/aws-ec2/test/vpc.test.ts index 9163a210738f8..9ea01086411dd 100644 --- a/packages/@aws-cdk/aws-ec2/test/vpc.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/vpc.test.ts @@ -818,7 +818,7 @@ nodeunitShim({ const stack = new Stack(); test.throws(() => { new Vpc(stack, 'Vpc', { - cidr: Lazy.stringValue({ produce: () => 'abc' }), + cidr: Lazy.string({ produce: () => 'abc' }), }); }, /property must be a concrete CIDR string/); diff --git a/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts b/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts index 7da0621f2aa42..efa1498b41d90 100644 --- a/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts +++ b/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts @@ -238,7 +238,7 @@ nodeunitShim({ 'fails if using tokens in build args keys or values'(test: Test) { // GIVEN - const token = Lazy.stringValue({ produce: () => 'foo' }); + const token = Lazy.string({ produce: () => 'foo' }); const expected = /Cannot use tokens in keys or values of "buildArgs" since they are needed before deployment/; // THEN @@ -257,7 +257,7 @@ nodeunitShim({ 'fails if using token as repositoryName'(test: Test) { // GIVEN - const token = Lazy.stringValue({ produce: () => 'foo' }); + const token = Lazy.string({ produce: () => 'foo' }); // THEN test.throws(() => new DockerImageAsset(stack, 'MyAsset1', { diff --git a/packages/@aws-cdk/aws-ecr/lib/repository.ts b/packages/@aws-cdk/aws-ecr/lib/repository.ts index 53990d1e07934..36e14cf861adc 100644 --- a/packages/@aws-cdk/aws-ecr/lib/repository.ts +++ b/packages/@aws-cdk/aws-ecr/lib/repository.ts @@ -417,8 +417,8 @@ export class Repository extends RepositoryBase { const resource = new CfnRepository(this, 'Resource', { repositoryName: this.physicalName, // It says "Text", but they actually mean "Object". - repositoryPolicyText: Lazy.anyValue({ produce: () => this.policyDocument }), - lifecyclePolicy: Lazy.anyValue({ produce: () => this.renderLifecyclePolicy() }), + repositoryPolicyText: Lazy.any({ produce: () => this.policyDocument }), + lifecyclePolicy: Lazy.any({ produce: () => this.renderLifecyclePolicy() }), imageScanningConfiguration: !props.imageScanOnPush ? undefined : { scanOnPush: true, }, diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index ac4f4cf6f035a..535fb240217ec 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -340,7 +340,7 @@ export abstract class BaseService extends Resource this.resource = new CfnService(this, 'Service', { desiredCount: props.desiredCount, serviceName: this.physicalName, - loadBalancers: Lazy.anyValue({ produce: () => this.loadBalancers }, { omitEmptyArray: true }), + loadBalancers: Lazy.any({ produce: () => this.loadBalancers }, { omitEmptyArray: true }), deploymentConfiguration: { maximumPercent: props.maxHealthyPercent || 200, minimumHealthyPercent: props.minHealthyPercent === undefined ? 50 : props.minHealthyPercent, @@ -351,8 +351,8 @@ export abstract class BaseService extends Resource launchType: props.deploymentController?.type === DeploymentControllerType.EXTERNAL ? undefined : props.launchType, healthCheckGracePeriodSeconds: this.evaluateHealthGracePeriod(props.healthCheckGracePeriod), /* role: never specified, supplanted by Service Linked Role */ - networkConfiguration: Lazy.anyValue({ produce: () => this.networkConfiguration }, { omitEmptyArray: true }), - serviceRegistries: Lazy.anyValue({ produce: () => this.serviceRegistries }, { omitEmptyArray: true }), + networkConfiguration: Lazy.any({ produce: () => this.networkConfiguration }, { omitEmptyArray: true }), + serviceRegistries: Lazy.any({ produce: () => this.serviceRegistries }, { omitEmptyArray: true }), ...additionalProps, }); @@ -606,7 +606,7 @@ export abstract class BaseService extends Resource awsvpcConfiguration: { assignPublicIp: assignPublicIp ? 'ENABLED' : 'DISABLED', subnets: vpc.selectSubnets(vpcSubnets).subnetIds, - securityGroups: Lazy.listValue({ produce: () => [securityGroup!.securityGroupId] }), + securityGroups: Lazy.list({ produce: () => [securityGroup!.securityGroupId] }), }, }; } @@ -714,7 +714,7 @@ export abstract class BaseService extends Resource * healthCheckGracePeriod is not already set */ private evaluateHealthGracePeriod(providedHealthCheckGracePeriod?: Duration): IResolvable { - return Lazy.anyValue({ + return Lazy.any({ produce: () => providedHealthCheckGracePeriod !== undefined ? providedHealthCheckGracePeriod.toSeconds() : this.loadBalancers.length > 0 ? 60 : undefined, diff --git a/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts b/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts index 862193b11fe3b..ff27f00cb79a8 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts @@ -122,9 +122,13 @@ export interface TaskDefinitionProps extends CommonTaskDefinitionProps { * which determines your range of valid values for the memory parameter: * * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) + * * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) + * * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + * * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) + * * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) * * @default - CPU units are not specified. @@ -139,9 +143,13 @@ export interface TaskDefinitionProps extends CommonTaskDefinitionProps { * which determines your range of valid values for the cpu parameter: * * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) + * * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) + * * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) + * * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) + * * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) * * @default - Memory used by task is not specified. @@ -299,9 +307,9 @@ export class TaskDefinition extends TaskDefinitionBase { }); const taskDef = new CfnTaskDefinition(this, 'Resource', { - containerDefinitions: Lazy.anyValue({ produce: () => this.renderContainers() }, { omitEmptyArray: true }), - volumes: Lazy.anyValue({ produce: () => this.renderVolumes() }, { omitEmptyArray: true }), - executionRoleArn: Lazy.stringValue({ produce: () => this.executionRole && this.executionRole.roleArn }), + containerDefinitions: Lazy.any({ produce: () => this.renderContainers() }, { omitEmptyArray: true }), + volumes: Lazy.any({ produce: () => this.renderVolumes() }, { omitEmptyArray: true }), + executionRoleArn: Lazy.string({ produce: () => this.executionRole && this.executionRole.roleArn }), family: this.family, taskRoleArn: this.taskRole.roleArn, requiresCompatibilities: [ @@ -309,7 +317,7 @@ export class TaskDefinition extends TaskDefinitionBase { ...(isFargateCompatible(props.compatibility) ? ['FARGATE'] : []), ], networkMode: this.renderNetworkMode(this.networkMode), - placementConstraints: Lazy.anyValue({ + placementConstraints: Lazy.any({ produce: () => !isFargateCompatible(this.compatibility) ? this.placementConstraints : undefined, }, { omitEmptyArray: true }), diff --git a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts index 0ad416ea61880..341ffe5237b4c 100644 --- a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts @@ -590,7 +590,7 @@ export class ContainerDefinition extends cdk.Construct { command: this.props.command, cpu: this.props.cpu, disableNetworking: this.props.disableNetworking, - dependsOn: cdk.Lazy.anyValue({ produce: () => this.containerDependencies.map(renderContainerDependency) }, { omitEmptyArray: true }), + dependsOn: cdk.Lazy.any({ produce: () => this.containerDependencies.map(renderContainerDependency) }, { omitEmptyArray: true }), dnsSearchDomains: this.props.dnsSearchDomains, dnsServers: this.props.dnsServers, dockerLabels: this.props.dockerLabels, @@ -601,17 +601,17 @@ export class ContainerDefinition extends cdk.Construct { image: this.imageConfig.imageName, memory: this.props.memoryLimitMiB, memoryReservation: this.props.memoryReservationMiB, - mountPoints: cdk.Lazy.anyValue({ produce: () => this.mountPoints.map(renderMountPoint) }, { omitEmptyArray: true }), + mountPoints: cdk.Lazy.any({ produce: () => this.mountPoints.map(renderMountPoint) }, { omitEmptyArray: true }), name: this.containerName, - portMappings: cdk.Lazy.anyValue({ produce: () => this.portMappings.map(renderPortMapping) }, { omitEmptyArray: true }), + portMappings: cdk.Lazy.any({ produce: () => this.portMappings.map(renderPortMapping) }, { omitEmptyArray: true }), privileged: this.props.privileged, readonlyRootFilesystem: this.props.readonlyRootFilesystem, repositoryCredentials: this.imageConfig.repositoryCredentials, startTimeout: this.props.startTimeout && this.props.startTimeout.toSeconds(), stopTimeout: this.props.stopTimeout && this.props.stopTimeout.toSeconds(), - ulimits: cdk.Lazy.anyValue({ produce: () => this.ulimits.map(renderUlimit) }, { omitEmptyArray: true }), + ulimits: cdk.Lazy.any({ produce: () => this.ulimits.map(renderUlimit) }, { omitEmptyArray: true }), user: this.props.user, - volumesFrom: cdk.Lazy.anyValue({ produce: () => this.volumesFrom.map(renderVolumeFrom) }, { omitEmptyArray: true }), + volumesFrom: cdk.Lazy.any({ produce: () => this.volumesFrom.map(renderVolumeFrom) }, { omitEmptyArray: true }), workingDirectory: this.props.workingDirectory, logConfiguration: this.logDriverConfig, environment: this.props.environment && renderKV(this.props.environment, 'name', 'value'), @@ -619,7 +619,7 @@ export class ContainerDefinition extends cdk.Construct { secrets: this.secrets, extraHosts: this.props.extraHosts && renderKV(this.props.extraHosts, 'hostname', 'ipAddress'), healthCheck: this.props.healthCheck && renderHealthCheck(this.props.healthCheck), - links: cdk.Lazy.listValue({ produce: () => this.links }, { omitEmpty: true }), + links: cdk.Lazy.list({ produce: () => this.links }, { omitEmpty: true }), linuxParameters: this.linuxParameters && this.linuxParameters.renderLinuxParameters(), resourceRequirements: (this.props.gpuCount !== undefined) ? renderResourceRequirements(this.props.gpuCount) : undefined, }; diff --git a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts index 151375ba68764..33769c3223b08 100644 --- a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts @@ -197,8 +197,8 @@ export class Ec2Service extends BaseService implements IEc2Service { { cluster: props.cluster.clusterName, taskDefinition: props.deploymentController?.type === DeploymentControllerType.EXTERNAL ? undefined : props.taskDefinition.taskDefinitionArn, - placementConstraints: Lazy.anyValue({ produce: () => this.constraints }, { omitEmptyArray: true }), - placementStrategies: Lazy.anyValue({ produce: () => this.strategies }, { omitEmptyArray: true }), + placementConstraints: Lazy.any({ produce: () => this.constraints }, { omitEmptyArray: true }), + placementStrategies: Lazy.any({ produce: () => this.strategies }, { omitEmptyArray: true }), schedulingStrategy: props.daemon ? 'DAEMON' : 'REPLICA', }, props.taskDefinition); diff --git a/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts b/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts index 4513e55debe63..eba4ac4371ee8 100644 --- a/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts @@ -12,9 +12,13 @@ export interface FargateTaskDefinitionProps extends CommonTaskDefinitionProps { * which determines your range of valid values for the memory parameter: * * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) + * * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) + * * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + * * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) + * * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) * * @default 256 @@ -26,9 +30,13 @@ export interface FargateTaskDefinitionProps extends CommonTaskDefinitionProps { * this field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter: * * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) + * * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) + * * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) + * * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) + * * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) * * @default 512 diff --git a/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts b/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts index fbf77f69b76f3..45e792126fd20 100644 --- a/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts +++ b/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts @@ -107,11 +107,11 @@ export class LinuxParameters extends cdk.Construct { initProcessEnabled: this.initProcessEnabled, sharedMemorySize: this.sharedMemorySize, capabilities: { - add: cdk.Lazy.listValue({ produce: () => this.capAdd }, { omitEmpty: true }), - drop: cdk.Lazy.listValue({ produce: () => this.capDrop }, { omitEmpty: true }), + add: cdk.Lazy.list({ produce: () => this.capAdd }, { omitEmpty: true }), + drop: cdk.Lazy.list({ produce: () => this.capDrop }, { omitEmpty: true }), }, - devices: cdk.Lazy.anyValue({ produce: () => this.devices.map(renderDevice) }, { omitEmptyArray: true }), - tmpfs: cdk.Lazy.anyValue({ produce: () => this.tmpfs.map(renderTmpfs) }, { omitEmptyArray: true }), + devices: cdk.Lazy.any({ produce: () => this.devices.map(renderDevice) }, { omitEmptyArray: true }), + tmpfs: cdk.Lazy.any({ produce: () => this.tmpfs.map(renderTmpfs) }, { omitEmptyArray: true }), }; } } diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts index 2d7687f5855e6..99aeb6da886f9 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts @@ -28,8 +28,8 @@ export = { const stack = new cdk.Stack(); new ecs.FargateTaskDefinition(stack, 'FargateTaskDef', { - cpu: cdk.Lazy.numberValue({ produce: () => 128 }), - memoryLimitMiB: cdk.Lazy.numberValue({ produce: () => 1024 }), + cpu: cdk.Lazy.number({ produce: () => 128 }), + memoryLimitMiB: cdk.Lazy.number({ produce: () => 1024 }), }); // THEN diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts b/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts index b4c5de9af36d6..276937847d558 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts @@ -92,7 +92,7 @@ export class AwsAuth extends Construct { } private synthesizeMapRoles() { - return Lazy.anyValue({ + return Lazy.any({ produce: () => this.stack.toJsonString(this.roleMappings.map(m => ({ rolearn: m.role.roleArn, username: m.mapping.username, @@ -102,7 +102,7 @@ export class AwsAuth extends Construct { } private synthesizeMapUsers() { - return Lazy.anyValue({ + return Lazy.any({ produce: () => this.stack.toJsonString(this.userMappings.map(m => ({ userarn: m.user.userArn, username: m.mapping.username, @@ -112,7 +112,7 @@ export class AwsAuth extends Construct { } private synthesizeMapAccounts() { - return Lazy.anyValue({ + return Lazy.any({ produce: () => this.stack.toJsonString(this.accounts), }); } diff --git a/packages/@aws-cdk/aws-eks/lib/aws-auth.ts b/packages/@aws-cdk/aws-eks/lib/aws-auth.ts index 1d0317758f705..02f2b321933f7 100644 --- a/packages/@aws-cdk/aws-eks/lib/aws-auth.ts +++ b/packages/@aws-cdk/aws-eks/lib/aws-auth.ts @@ -115,7 +115,7 @@ export class AwsAuth extends CoreConstruct { } private synthesizeMapRoles() { - return Lazy.anyValue({ + return Lazy.any({ produce: () => this.stack.toJsonString(this.roleMappings.map(m => ({ rolearn: m.role.roleArn, username: m.mapping.username ?? m.role.roleArn, @@ -125,7 +125,7 @@ export class AwsAuth extends CoreConstruct { } private synthesizeMapUsers() { - return Lazy.anyValue({ + return Lazy.any({ produce: () => this.stack.toJsonString(this.userMappings.map(m => ({ userarn: m.user.userArn, username: m.mapping.username ?? m.user.userArn, @@ -135,7 +135,7 @@ export class AwsAuth extends CoreConstruct { } private synthesizeMapAccounts() { - return Lazy.anyValue({ + return Lazy.any({ produce: () => this.stack.toJsonString(this.accounts), }); } diff --git a/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts b/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts index e41625ea3c808..788210c987dbe 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts @@ -122,7 +122,7 @@ export class ClusterResource extends CoreConstruct { // this role to manage all clusters in the account. this must be lazy since // `props.name` may contain a lazy value that conditionally resolves to a // physical name. - const resourceArns = Lazy.listValue({ + const resourceArns = Lazy.list({ produce: () => { const arn = stack.formatArn(clusterArnComponents(stack.resolve(props.name))); return stack.resolve(props.name) @@ -131,7 +131,7 @@ export class ClusterResource extends CoreConstruct { }, }); - const fargateProfileResourceArn = Lazy.stringValue({ + const fargateProfileResourceArn = Lazy.string({ produce: () => stack.resolve(props.name) ? stack.formatArn({ service: 'eks', resource: 'fargateprofile', resourceName: stack.resolve(props.name) + '/*' }) : '*', diff --git a/packages/@aws-cdk/aws-eks/lib/cluster.ts b/packages/@aws-cdk/aws-eks/lib/cluster.ts index ec6f048a4de58..7974f988aff33 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster.ts @@ -1352,18 +1352,20 @@ export class Cluster extends ClusterBase { private selectPrivateSubnets(): ec2.ISubnet[] { const privateSubnets: ec2.ISubnet[] = []; + const vpcPrivateSubnetIds = this.vpc.privateSubnets.map(s => s.subnetId); + const vpcPublicSubnetIds = this.vpc.publicSubnets.map(s => s.subnetId); for (const placement of this.vpcSubnets) { for (const subnet of this.vpc.selectSubnets(placement).subnets) { - if (this.vpc.privateSubnets.includes(subnet)) { + if (vpcPrivateSubnetIds.includes(subnet.subnetId)) { // definitely private, take it. privateSubnets.push(subnet); continue; } - if (this.vpc.publicSubnets.includes(subnet)) { + if (vpcPublicSubnetIds.includes(subnet.subnetId)) { // definitely public, skip it. continue; } diff --git a/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts b/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts index a070d04af3910..4ce6f094909bd 100644 --- a/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts +++ b/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts @@ -183,7 +183,7 @@ export class FargateProfile extends CoreConstruct implements ITaggable { podExecutionRoleArn: this.podExecutionRole.roleArn, selectors: props.selectors, subnets, - tags: Lazy.anyValue({ produce: () => this.tags.renderTags() }), + tags: Lazy.any({ produce: () => this.tags.renderTags() }), }, }, }); diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index 4d3510784301d..adad2d1310319 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -75,7 +75,7 @@ "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", "@types/yaml": "1.9.6", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-eks/test/test.cluster.ts b/packages/@aws-cdk/aws-eks/test/test.cluster.ts index 170273d0485fe..facdf1880d426 100644 --- a/packages/@aws-cdk/aws-eks/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-eks/test/test.cluster.ts @@ -2106,6 +2106,103 @@ export = { test.done(); }, + 'private endpoint access selects only private subnets from looked up vpc with concrete subnet selection'(test: Test) { + + const vpcId = 'vpc-12345'; + // can't use the regular fixture because it also adds a VPC to the stack, which prevents + // us from setting context. + const stack = new cdk.Stack(new cdk.App(), 'Stack', { + env: { + account: '11112222', + region: 'us-east-1', + }, + }); + stack.node.setContext(`vpc-provider:account=${stack.account}:filter.vpc-id=${vpcId}:region=${stack.region}:returnAsymmetricSubnets=true`, { + vpcId: vpcId, + vpcCidrBlock: '10.0.0.0/16', + subnetGroups: [ + { + name: 'Private', + type: 'Private', + subnets: [ + { + subnetId: 'subnet-private-in-us-east-1a', + cidr: '10.0.1.0/24', + availabilityZone: 'us-east-1a', + routeTableId: 'rtb-06068e4c4049921ef', + }, + ], + }, + { + name: 'Public', + type: 'Public', + subnets: [ + { + subnetId: 'subnet-public-in-us-east-1c', + cidr: '10.0.0.0/24', + availabilityZone: 'us-east-1c', + routeTableId: 'rtb-0ff08e62195198dbb', + }, + ], + }, + ], + }); + const vpc = ec2.Vpc.fromLookup(stack, 'Vpc', { + vpcId: vpcId, + }); + + new eks.Cluster(stack, 'Cluster', { + vpc, + version: CLUSTER_VERSION, + endpointAccess: eks.EndpointAccess.PRIVATE, + vpcSubnets: [{ + subnets: [ + ec2.Subnet.fromSubnetId(stack, 'Private', 'subnet-private-in-us-east-1a'), + ec2.Subnet.fromSubnetId(stack, 'Public', 'subnet-public-in-us-east-1c'), + ], + }], + }); + + const nested = stack.node.tryFindChild('@aws-cdk/aws-eks.KubectlProvider') as cdk.NestedStack; + const template = expect(nested).value; + + test.deepEqual(template.Resources.Handler886CB40B.Properties.VpcConfig.SubnetIds, [ + 'subnet-private-in-us-east-1a', + ]); + + test.done(); + }, + + 'private endpoint access selects only private subnets from managed vpc with concrete subnet selection'(test: Test) { + + const { stack } = testFixture(); + + const vpc = new ec2.Vpc(stack, 'Vpc'); + + new eks.Cluster(stack, 'Cluster', { + vpc, + version: CLUSTER_VERSION, + endpointAccess: eks.EndpointAccess.PRIVATE, + vpcSubnets: [{ + subnets: [ + vpc.privateSubnets[0], + vpc.publicSubnets[1], + ec2.Subnet.fromSubnetId(stack, 'Private', 'subnet-unknown'), + ], + }], + }); + + const nested = stack.node.tryFindChild('@aws-cdk/aws-eks.KubectlProvider') as cdk.NestedStack; + const template = expect(nested).value; + + test.deepEqual(template.Resources.Handler886CB40B.Properties.VpcConfig.SubnetIds, [ + { Ref: 'referencetoStackVpcPrivateSubnet1Subnet8E6A14CBRef' }, + 'subnet-unknown', + ]); + + test.done(); + }, + 'private endpoint access considers specific subnet selection'(test: Test) { const { stack } = testFixture(); new eks.Cluster(stack, 'Cluster', { diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts index 2bb95496a4c74..55c423f157a55 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts @@ -245,7 +245,7 @@ export class LoadBalancer extends Resource implements IConnectable { this.elb = new CfnLoadBalancer(this, 'Resource', { securityGroups: [this.securityGroup.securityGroupId], subnets: selectedSubnets.subnetIds, - listeners: Lazy.anyValue({ produce: () => this.listeners }), + listeners: Lazy.any({ produce: () => this.listeners }), scheme: props.internetFacing ? 'internet-facing' : 'internal', healthCheck: props.healthCheck && healthCheckToJSON(props.healthCheck), crossZone: (props.crossZone === undefined || props.crossZone) ? true : false, diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts index 425e8e8f29a31..13b725a3deb3b 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts @@ -85,7 +85,7 @@ export class AuthenticateCognitoAction extends elbv2.ListenerAction { onUnauthenticatedRequest: options.onUnauthenticatedRequest, scope: options.scope, sessionCookieName: options.sessionCookieName, - sessionTimeout: options.sessionTimeout?.toSeconds(), + sessionTimeout: options.sessionTimeout?.toSeconds().toString(), }, }, options.next); } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts index 9b3e713a6115c..09ae095c46a92 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts @@ -40,7 +40,7 @@ export class ListenerAction implements IListenerAction { onUnauthenticatedRequest: options.onUnauthenticatedRequest, scope: options.scope, sessionCookieName: options.sessionCookieName, - sessionTimeout: options.sessionTimeout?.toSeconds(), + sessionTimeout: options.sessionTimeout?.toSeconds().toString(), }, }, options.next); } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts index fe22b97653430..edc0e04551f46 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts @@ -231,8 +231,8 @@ export class ApplicationListenerRule extends cdk.Construct { const resource = new CfnListenerRule(this, 'Resource', { listenerArn: props.listener.listenerArn, priority: props.priority, - conditions: cdk.Lazy.anyValue({ produce: () => this.renderConditions() }), - actions: cdk.Lazy.anyValue({ produce: () => this.action ? this.action.renderActions() : [] }), + conditions: cdk.Lazy.any({ produce: () => this.renderConditions() }), + actions: cdk.Lazy.any({ produce: () => this.action ? this.action.renderActions() : [] }), }); if (props.hostHeader) { diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts index 3a055b5fce4be..230c02f7ab84f 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts @@ -190,7 +190,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis super(scope, id, { loadBalancerArn: props.loadBalancer.loadBalancerArn, - certificates: Lazy.anyValue({ produce: () => this.certificateArns.map(certificateArn => ({ certificateArn })) }, { omitEmptyArray: true }), + certificates: Lazy.any({ produce: () => this.certificateArns.map(certificateArn => ({ certificateArn })) }, { omitEmptyArray: true }), protocol, port, sslPolicy: props.sslPolicy, diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts index 0b6c9d76a7d8f..d3b428094a344 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts @@ -83,7 +83,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic constructor(scope: Construct, id: string, props: ApplicationLoadBalancerProps) { super(scope, id, props, { type: 'application', - securityGroups: Lazy.listValue({ produce: () => this.connections.securityGroups.map(sg => sg.securityGroupId) }), + securityGroups: Lazy.list({ produce: () => this.connections.securityGroups.map(sg => sg.securityGroupId) }), ipAddressType: props.ipAddressType, }); diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts index b735d6e375870..17170f4402b1a 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts @@ -108,7 +108,7 @@ export abstract class BaseListener extends Resource { const resource = new CfnListener(this, 'Resource', { ...additionalProps, - defaultActions: Lazy.anyValue({ produce: () => this.defaultAction ? this.defaultAction.renderActions() : [] }), + defaultActions: Lazy.any({ produce: () => this.defaultAction ? this.defaultAction.renderActions() : [] }), }); this.listenerArn = resource.ref; diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts index 46526b9376f68..f96b4e7711ccc 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts @@ -209,7 +209,7 @@ export abstract class BaseLoadBalancer extends Resource { name: this.physicalName, subnets: subnetIds, scheme: internetFacing ? 'internet-facing' : 'internal', - loadBalancerAttributes: Lazy.anyValue({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true } ), + loadBalancerAttributes: Lazy.any({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true } ), ...additionalProps, }); if (internetFacing) { diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts index fbe3e54b5b757..f9155bb1430eb 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts @@ -236,25 +236,25 @@ export abstract class TargetGroupBase extends cdk.Construct implements ITargetGr this.resource = new CfnTargetGroup(this, 'Resource', { name: baseProps.targetGroupName, - targetGroupAttributes: cdk.Lazy.anyValue({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true }), - targetType: cdk.Lazy.stringValue({ produce: () => this.targetType }), - targets: cdk.Lazy.anyValue({ produce: () => this.targetsJson }, { omitEmptyArray: true }), - vpcId: cdk.Lazy.stringValue({ produce: () => this.vpc && this.targetType !== TargetType.LAMBDA ? this.vpc.vpcId : undefined }), + targetGroupAttributes: cdk.Lazy.any({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true }), + targetType: cdk.Lazy.string({ produce: () => this.targetType }), + targets: cdk.Lazy.any({ produce: () => this.targetsJson }, { omitEmptyArray: true }), + vpcId: cdk.Lazy.string({ produce: () => this.vpc && this.targetType !== TargetType.LAMBDA ? this.vpc.vpcId : undefined }), // HEALTH CHECK - healthCheckEnabled: cdk.Lazy.anyValue({ produce: () => this.healthCheck && this.healthCheck.enabled }), - healthCheckIntervalSeconds: cdk.Lazy.numberValue({ + healthCheckEnabled: cdk.Lazy.any({ produce: () => this.healthCheck && this.healthCheck.enabled }), + healthCheckIntervalSeconds: cdk.Lazy.number({ produce: () => this.healthCheck && this.healthCheck.interval && this.healthCheck.interval.toSeconds(), }), - healthCheckPath: cdk.Lazy.stringValue({ produce: () => this.healthCheck && this.healthCheck.path }), - healthCheckPort: cdk.Lazy.stringValue({ produce: () => this.healthCheck && this.healthCheck.port }), - healthCheckProtocol: cdk.Lazy.stringValue({ produce: () => this.healthCheck && this.healthCheck.protocol }), - healthCheckTimeoutSeconds: cdk.Lazy.numberValue({ + healthCheckPath: cdk.Lazy.string({ produce: () => this.healthCheck && this.healthCheck.path }), + healthCheckPort: cdk.Lazy.string({ produce: () => this.healthCheck && this.healthCheck.port }), + healthCheckProtocol: cdk.Lazy.string({ produce: () => this.healthCheck && this.healthCheck.protocol }), + healthCheckTimeoutSeconds: cdk.Lazy.number({ produce: () => this.healthCheck && this.healthCheck.timeout && this.healthCheck.timeout.toSeconds(), }), - healthyThresholdCount: cdk.Lazy.numberValue({ produce: () => this.healthCheck && this.healthCheck.healthyThresholdCount }), - unhealthyThresholdCount: cdk.Lazy.numberValue({ produce: () => this.healthCheck && this.healthCheck.unhealthyThresholdCount }), - matcher: cdk.Lazy.anyValue({ + healthyThresholdCount: cdk.Lazy.number({ produce: () => this.healthCheck && this.healthCheck.healthyThresholdCount }), + unhealthyThresholdCount: cdk.Lazy.number({ produce: () => this.healthCheck && this.healthCheck.unhealthyThresholdCount }), + matcher: cdk.Lazy.any({ produce: () => this.healthCheck && this.healthCheck.healthyHttpCodes !== undefined ? { httpCode: this.healthCheck.healthyHttpCodes, } : undefined, diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts index 4931bde8f4a1e..42e50714bdad8 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts @@ -1240,7 +1240,7 @@ export class Domain extends DomainBase implements IDomain { effect: iam.Effect.ALLOW, actions: ['es:ESHttp*'], principals: [new iam.Anyone()], - resources: [cdk.Lazy.stringValue({ produce: () => `${this.domainArn}/*` })], + resources: [cdk.Lazy.string({ produce: () => `${this.domainArn}/*` })], }); const masterUserArn = props.fineGrainedAccessControl?.masterUserArn; diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index e9a59ba3c5009..297de4fca708b 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -76,7 +76,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-events/lib/event-bus.ts b/packages/@aws-cdk/aws-events/lib/event-bus.ts index 6101b44f680f4..27c79c9c7fe3a 100644 --- a/packages/@aws-cdk/aws-events/lib/event-bus.ts +++ b/packages/@aws-cdk/aws-events/lib/event-bus.ts @@ -219,7 +219,7 @@ export class EventBus extends Resource implements IEventBus { constructor(scope: Construct, id: string, props?: EventBusProps) { const { eventBusName, eventSourceName } = EventBus.eventBusProps( - Lazy.stringValue({ produce: () => Names.uniqueId(this) }), + Lazy.string({ produce: () => Names.uniqueId(this) }), props, ); diff --git a/packages/@aws-cdk/aws-events/lib/input.ts b/packages/@aws-cdk/aws-events/lib/input.ts index b3f8938b4d4c7..1fd68a1754119 100644 --- a/packages/@aws-cdk/aws-events/lib/input.ts +++ b/packages/@aws-cdk/aws-events/lib/input.ts @@ -219,7 +219,7 @@ class FieldAwareEventInput extends RuleTargetInput { private unquoteKeyPlaceholders(sub: string) { if (this.inputType !== InputType.Object) { return sub; } - return Lazy.stringValue({ produce: (ctx: IResolveContext) => Token.asString(deepUnquote(ctx.resolve(sub))) }); + return Lazy.uncachedString({ produce: (ctx: IResolveContext) => Token.asString(deepUnquote(ctx.resolve(sub))) }); function deepUnquote(resolved: any): any { if (Array.isArray(resolved)) { diff --git a/packages/@aws-cdk/aws-events/lib/rule.ts b/packages/@aws-cdk/aws-events/lib/rule.ts index 98e629874e382..0079954e73558 100644 --- a/packages/@aws-cdk/aws-events/lib/rule.ts +++ b/packages/@aws-cdk/aws-events/lib/rule.ts @@ -132,8 +132,8 @@ export class Rule extends Resource implements IRule { description: this.description, state: props.enabled == null ? 'ENABLED' : (props.enabled ? 'ENABLED' : 'DISABLED'), scheduleExpression: this.scheduleExpression, - eventPattern: Lazy.anyValue({ produce: () => this._renderEventPattern() }), - targets: Lazy.anyValue({ produce: () => this.renderTargets() }), + eventPattern: Lazy.any({ produce: () => this._renderEventPattern() }), + targets: Lazy.any({ produce: () => this.renderTargets() }), eventBusName: props.eventBus && props.eventBus.eventBusName, }); diff --git a/packages/@aws-cdk/aws-events/test/test.input.ts b/packages/@aws-cdk/aws-events/test/test.input.ts index 9094e02a5b86b..49c38f63ac1e8 100644 --- a/packages/@aws-cdk/aws-events/test/test.input.ts +++ b/packages/@aws-cdk/aws-events/test/test.input.ts @@ -156,7 +156,7 @@ export = { schedule: Schedule.rate(cdk.Duration.minutes(1)), }); - const world = cdk.Lazy.stringValue({ produce: () => 'world' }); + const world = cdk.Lazy.string({ produce: () => 'world' }); // WHEN rule.addTarget(new SomeTarget(RuleTargetInput.fromText(`hello ${world}`))); diff --git a/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts b/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts index f7c1b565af434..a2532aecdffa0 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts +++ b/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts @@ -169,7 +169,7 @@ export class EndpointGroup extends cdk.Resource implements IEndpointGroup { const resource = new ga.CfnEndpointGroup(this, 'Resource', { listenerArn: props.listener.listenerArn, endpointGroupRegion: props.region ?? cdk.Stack.of(this).region, - endpointConfigurations: cdk.Lazy.anyValue({ produce: () => this.renderEndpoints() }, { omitEmptyArray: true }), + endpointConfigurations: cdk.Lazy.any({ produce: () => this.renderEndpoints() }, { omitEmptyArray: true }), }); this.endpointGroupArn = resource.attrEndpointGroupArn; diff --git a/packages/@aws-cdk/aws-iam/lib/group.ts b/packages/@aws-cdk/aws-iam/lib/group.ts index 6fc5963fdbeeb..eca266f6975dd 100644 --- a/packages/@aws-cdk/aws-iam/lib/group.ts +++ b/packages/@aws-cdk/aws-iam/lib/group.ts @@ -170,7 +170,7 @@ export class Group extends GroupBase { const group = new CfnGroup(this, 'Resource', { groupName: this.physicalName, - managedPolicyArns: Lazy.listValue({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), + managedPolicyArns: Lazy.list({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), path: props.path, }); diff --git a/packages/@aws-cdk/aws-iam/lib/managed-policy.ts b/packages/@aws-cdk/aws-iam/lib/managed-policy.ts index 8393f71f58a0d..cc8bddc0e8a17 100644 --- a/packages/@aws-cdk/aws-iam/lib/managed-policy.ts +++ b/packages/@aws-cdk/aws-iam/lib/managed-policy.ts @@ -156,7 +156,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy { */ public static fromAwsManagedPolicyName(managedPolicyName: string): IManagedPolicy { class AwsManagedPolicy implements IManagedPolicy { - public readonly managedPolicyArn = Lazy.stringValue({ + public readonly managedPolicyArn = Lazy.uncachedString({ produce(ctx: IResolveContext) { return Stack.of(ctx.scope).formatArn({ service: 'iam', diff --git a/packages/@aws-cdk/aws-iam/lib/policy.ts b/packages/@aws-cdk/aws-iam/lib/policy.ts index 45cd1fb138927..6c006c6576120 100644 --- a/packages/@aws-cdk/aws-iam/lib/policy.ts +++ b/packages/@aws-cdk/aws-iam/lib/policy.ts @@ -131,7 +131,7 @@ export class Policy extends Resource implements IPolicy { // generatePolicyName will take the last 128 characters of the logical id since // policy names are limited to 128. the last 8 chars are a stack-unique hash, so // that shouod be sufficient to ensure uniqueness within a principal. - Lazy.stringValue({ produce: () => generatePolicyName(scope, resource.logicalId) }), + Lazy.string({ produce: () => generatePolicyName(scope, resource.logicalId) }), }); const self = this; diff --git a/packages/@aws-cdk/aws-iam/lib/role.ts b/packages/@aws-cdk/aws-iam/lib/role.ts index 3a11bd7fae2d9..74e251bd7bc07 100644 --- a/packages/@aws-cdk/aws-iam/lib/role.ts +++ b/packages/@aws-cdk/aws-iam/lib/role.ts @@ -326,7 +326,7 @@ export class Role extends Resource implements IRole { const role = new CfnRole(this, 'Resource', { assumeRolePolicyDocument: this.assumeRolePolicy as any, - managedPolicyArns: Lazy.listValue({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), + managedPolicyArns: Lazy.list({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), policies: _flatten(this.inlinePolicies), path: props.path, permissionsBoundary: this.permissionsBoundary ? this.permissionsBoundary.managedPolicyArn : undefined, diff --git a/packages/@aws-cdk/aws-iam/lib/user.ts b/packages/@aws-cdk/aws-iam/lib/user.ts index c6c0799d2bc8d..a8c3b61443771 100644 --- a/packages/@aws-cdk/aws-iam/lib/user.ts +++ b/packages/@aws-cdk/aws-iam/lib/user.ts @@ -217,7 +217,7 @@ export class User extends Resource implements IIdentity, IUser { const user = new CfnUser(this, 'Resource', { userName: this.physicalName, groups: undefinedIfEmpty(() => this.groups), - managedPolicyArns: Lazy.listValue({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), + managedPolicyArns: Lazy.list({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), path: props.path, permissionsBoundary: this.permissionsBoundary ? this.permissionsBoundary.managedPolicyArn : undefined, loginProfile: this.parseLoginProfile(props), diff --git a/packages/@aws-cdk/aws-iam/lib/util.ts b/packages/@aws-cdk/aws-iam/lib/util.ts index 545d5bc9de439..b5f1700baefe7 100644 --- a/packages/@aws-cdk/aws-iam/lib/util.ts +++ b/packages/@aws-cdk/aws-iam/lib/util.ts @@ -5,7 +5,7 @@ import { IPolicy } from './policy'; const MAX_POLICY_NAME_LEN = 128; export function undefinedIfEmpty(f: () => string[]): string[] { - return Lazy.listValue({ + return Lazy.list({ produce: () => { const array = f(); return (array && array.length > 0) ? array : undefined; diff --git a/packages/@aws-cdk/aws-iam/test/cross-account.test.ts b/packages/@aws-cdk/aws-iam/test/cross-account.test.ts index f3e8a7769d6cf..c3a45ec730580 100644 --- a/packages/@aws-cdk/aws-iam/test/cross-account.test.ts +++ b/packages/@aws-cdk/aws-iam/test/cross-account.test.ts @@ -170,7 +170,7 @@ class FakeResource extends cdk.Resource implements iam.IResourceWithPolicy { new cdk.CfnResource(this, 'Default', { type: 'Test::Fake::Resource', properties: { - ResourcePolicy: cdk.Lazy.anyValue({ produce: () => this.policy }), + ResourcePolicy: cdk.Lazy.any({ produce: () => this.policy }), }, }); } diff --git a/packages/@aws-cdk/aws-iam/test/policy-document.test.ts b/packages/@aws-cdk/aws-iam/test/policy-document.test.ts index 9ce8b5f9ec6c8..d8a9b1337c21c 100644 --- a/packages/@aws-cdk/aws-iam/test/policy-document.test.ts +++ b/packages/@aws-cdk/aws-iam/test/policy-document.test.ts @@ -311,8 +311,8 @@ describe('IAM policy document', () => { const stack = new Stack(); const statement = new PolicyStatement(); - statement.addActions(...Lazy.listValue({ produce: () => ['a', 'b', 'c'] })); - statement.addResources(...Lazy.listValue({ produce: () => ['x', 'y', 'z'] })); + statement.addActions(...Lazy.list({ produce: () => ['a', 'b', 'c'] })); + statement.addResources(...Lazy.list({ produce: () => ['x', 'y', 'z'] })); expect(stack.resolve(statement.toStatementJson())).toEqual({ Effect: 'Allow', @@ -558,7 +558,7 @@ describe('IAM policy document', () => { // WHEN const p = new ArnPrincipal('arn:of:principal').withConditions({ - StringEquals: Lazy.anyValue({ produce: () => ({ goo: 'zar' }) }), + StringEquals: Lazy.any({ produce: () => ({ goo: 'zar' }) }), }); statement.addPrincipals(p); @@ -582,7 +582,7 @@ describe('IAM policy document', () => { const p = new FederatedPrincipal('fed', { StringEquals: { foo: 'bar' }, }).withConditions({ - StringEquals: Lazy.anyValue({ produce: () => ({ goo: 'zar' }) }), + StringEquals: Lazy.any({ produce: () => ({ goo: 'zar' }) }), }); const statement = new PolicyStatement(); @@ -644,12 +644,12 @@ describe('IAM policy document', () => { const p = new PolicyDocument(); const statement1 = new PolicyStatement(); - statement1.addResources(Lazy.stringValue({ produce: () => 'resource' })); - statement1.addActions(Lazy.stringValue({ produce: () => 'action' })); + statement1.addResources(Lazy.string({ produce: () => 'resource' })); + statement1.addActions(Lazy.string({ produce: () => 'action' })); const statement2 = new PolicyStatement(); - statement2.addResources(Lazy.stringValue({ produce: () => 'resource' })); - statement2.addActions(Lazy.stringValue({ produce: () => 'action' })); + statement2.addResources(Lazy.string({ produce: () => 'resource' })); + statement2.addActions(Lazy.string({ produce: () => 'action' })); // WHEN p.addStatements(statement1); diff --git a/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts b/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts index a5044fa6722d2..afe6fb576f298 100644 --- a/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts +++ b/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts @@ -305,7 +305,7 @@ describe('IAM Role.fromRoleArn', () => { }); describe('imported with a dynamic ARN', () => { - const dynamicValue = Lazy.stringValue({ produce: () => 'role-arn' }); + const dynamicValue = Lazy.string({ produce: () => 'role-arn' }); const roleName: any = { 'Fn::Select': [1, { diff --git a/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts b/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts index b8791c99017ec..76e437de0ae34 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts +++ b/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts @@ -144,7 +144,7 @@ export = { // WHEN fn.addEventSource(new sources.KinesisEventSource(stream, { - batchSize: cdk.Lazy.numberValue({ produce: () => 10 }), + batchSize: cdk.Lazy.number({ produce: () => 10 }), startingPosition: lambda.StartingPosition.LATEST, })); diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile b/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile index 1ae008af898bb..a92d2fd2092cc 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile @@ -16,6 +16,11 @@ RUN mkdir /tmp/npm-cache && \ chmod -R 777 /tmp/npm-cache && \ npm config --global set cache /tmp/npm-cache +# Ensure all users can write to yarn cache +RUN mkdir /tmp/yarn-cache && \ + chmod -R 777 /tmp/yarn-cache && \ + yarn config set cache-folder /tmp/yarn-cache + # Disable npm update notifications RUN npm config --global set update-notifier false diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts index 0ee96aa53f74c..afc370fcb200c 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts @@ -92,7 +92,10 @@ export function exec(cmd: string, args: string[], options?: SpawnSyncOptions) { } /** - * Extract dependencies from a package.json + * Extract versions for a list of modules. + * + * First lookup the version in the package.json and then fallback to requiring + * the module's package.json. The fallback is needed for transitive dependencies. */ export function extractDependencies(pkgPath: string, modules: string[]): { [key: string]: string } { const dependencies: { [key: string]: string } = {}; @@ -107,10 +110,13 @@ export function extractDependencies(pkgPath: string, modules: string[]): { [key: }; for (const mod of modules) { - if (!pkgDependencies[mod]) { - throw new Error(`Cannot extract version for module '${mod}' in package.json`); + try { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const version = pkgDependencies[mod] ?? require(`${mod}/package.json`).version; + dependencies[mod] = version; + } catch (err) { + throw new Error(`Cannot extract version for module '${mod}'. Check that it's referenced in your package.json or installed.`); } - dependencies[mod] = pkgDependencies[mod]; } return dependencies; diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts index 8dc9177cffd44..efdbd8b8aa4cc 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts @@ -5,7 +5,7 @@ beforeAll(() => { spawnSync('docker', ['build', '-t', 'esbuild', path.join(__dirname, '../lib')]); }); -test('esbuild is available', async () => { +test('esbuild is available', () => { const proc = spawnSync('docker', [ 'run', 'esbuild', 'esbuild', '--version', @@ -13,7 +13,7 @@ test('esbuild is available', async () => { expect(proc.status).toEqual(0); }); -test('can npm install with non root user', async () => { +test('can npm install with non root user', () => { const proc = spawnSync('docker', [ 'run', '-u', '1000:1000', 'esbuild', @@ -26,7 +26,7 @@ test('can npm install with non root user', async () => { expect(proc.status).toEqual(0); }); -test('can yarn install with non root user', async () => { +test('can yarn install with non root user', () => { const proc = spawnSync('docker', [ 'run', '-u', '500:500', 'esbuild', @@ -38,3 +38,14 @@ test('can yarn install with non root user', async () => { ]); expect(proc.status).toEqual(0); }); + +test('cache folders have the right permissions', () => { + const proc = spawnSync('docker', [ + 'run', 'esbuild', + 'bash', '-c', [ + 'stat -c \'%a\' /tmp/npm-cache', + 'stat -c \'%a\' /tmp/yarn-cache', + ].join(' && '), + ]); + expect(proc.stdout.toString()).toMatch('777\n777'); +}); diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts index dc81c331239a0..6319008d9f2ec 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts @@ -89,7 +89,7 @@ describe('exec', () => { }); describe('extractDependencies', () => { - test('with depencies referenced in package.json', () => { + test('with dependencies referenced in package.json', () => { const deps = extractDependencies( path.join(__dirname, '../package.json'), ['@aws-cdk/aws-lambda', '@aws-cdk/core'], @@ -100,11 +100,21 @@ describe('extractDependencies', () => { ]); }); + test('with transitive dependencies', () => { + expect(extractDependencies( + path.join(__dirname, '../package.json'), + ['typescript'], + )).toEqual({ + // eslint-disable-next-line @typescript-eslint/no-require-imports, import/no-extraneous-dependencies + typescript: require('typescript/package.json').version, + }); + }); + test('with unknown dependency', () => { expect(() => extractDependencies( path.join(__dirname, '../package.json'), ['unknown'], - )).toThrow(/Cannot extract version for module 'unknown' in package.json/); + )).toThrow(/Cannot extract version for module 'unknown'/); }); }); diff --git a/packages/@aws-cdk/aws-lambda/lib/function-base.ts b/packages/@aws-cdk/aws-lambda/lib/function-base.ts index d02f355f0c5f3..8b8dd585c21c2 100644 --- a/packages/@aws-cdk/aws-lambda/lib/function-base.ts +++ b/packages/@aws-cdk/aws-lambda/lib/function-base.ts @@ -106,6 +106,17 @@ export interface IFunction extends IResource, ec2.IConnectable, iam.IGrantable { */ metricThrottles(props?: cloudwatch.MetricOptions): cloudwatch.Metric; + /** + * Adds an event source to this function. + * + * Event sources are implemented in the @aws-cdk/aws-lambda-event-sources module. + * + * The following example adds an SQS Queue as an event source: + * ``` + * import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources'; + * myFunction.addEventSource(new SqsEventSource(myQueue)); + * ``` + */ addEventSource(source: IEventSource): void; /** @@ -329,18 +340,6 @@ export abstract class FunctionBase extends Resource implements IFunction { return grant; } - /** - * Adds an event source to this function. - * - * Event sources are implemented in the @aws-cdk/aws-lambda-event-sources module. - * - * The following example adds an SQS Queue as an event source: - * - * import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources'; - * myFunction.addEventSource(new SqsEventSource(myQueue)); - * - * @param source The event source to bind to this function - */ public addEventSource(source: IEventSource) { source.bind(this); } diff --git a/packages/@aws-cdk/aws-lambda/lib/function.ts b/packages/@aws-cdk/aws-lambda/lib/function.ts index e2d81c064c894..d2000fd32d342 100644 --- a/packages/@aws-cdk/aws-lambda/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda/lib/function.ts @@ -348,8 +348,8 @@ export class Function extends FunctionBase { const cfn = this._currentVersion.node.defaultChild as CfnResource; const originalLogicalId = this.stack.resolve(cfn.logicalId) as string; - cfn.overrideLogicalId(Lazy.stringValue({ - produce: _ => { + cfn.overrideLogicalId(Lazy.uncachedString({ + produce: () => { const hash = calculateFunctionHash(this); const logicalId = trimFromStart(originalLogicalId, 255 - 32); return `${logicalId}${hash}`; @@ -599,12 +599,14 @@ export class Function extends FunctionBase { s3ObjectVersion: code.s3Location && code.s3Location.objectVersion, zipFile: code.inlineCode, }, - layers: Lazy.listValue({ produce: () => this.layers.map(layer => layer.layerVersionArn) }, { omitEmpty: true }), + layers: Lazy.list({ produce: () => this.layers.map(layer => layer.layerVersionArn) }, { omitEmpty: true }), handler: props.handler, timeout: props.timeout && props.timeout.toSeconds(), runtime: props.runtime.name, role: this.role.roleArn, - environment: Lazy.anyValue({ produce: () => this.renderEnvironment() }), + // Uncached because calling '_checkEdgeCompatibility', which gets called in the resolve of another + // Token, actually *modifies* the 'environment' map. + environment: Lazy.uncachedAny({ produce: () => this.renderEnvironment() }), memorySize: props.memorySize, vpcConfig: this.configureVpc(props), deadLetterConfig: this.buildDeadLetterConfig(this.deadLetterQueue), diff --git a/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts b/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts index 2156b2d87cfb5..b51d866ac815d 100644 --- a/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts +++ b/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts @@ -251,7 +251,7 @@ export class Version extends QualifiedFunctionBase implements IVersion { // Check compatibility at synthesis. It could be that the version was associated // with a CloudFront distribution first and made incompatible afterwards. - return Lazy.stringValue({ + return Lazy.string({ produce: () => { // Validate that the underlying function can be used for Lambda@Edge if (this.lambda instanceof Function) { diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index b7fcd7738285f..9aa9de96783bf 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -165,7 +165,6 @@ "docs-public-apis:@aws-cdk/aws-lambda.FunctionProps", "docs-public-apis:@aws-cdk/aws-lambda.IAlias", "docs-public-apis:@aws-cdk/aws-lambda.IFunction", - "docs-public-apis:@aws-cdk/aws-lambda.IFunction.addEventSource", "docs-public-apis:@aws-cdk/aws-lambda.ILayerVersion", "docs-public-apis:@aws-cdk/aws-lambda.IVersion", "docs-public-apis:@aws-cdk/aws-lambda.LambdaRuntimeProps", diff --git a/packages/@aws-cdk/aws-lambda/test/alias.test.ts b/packages/@aws-cdk/aws-lambda/test/alias.test.ts index 334e40607ed5c..1f25aa1a6a823 100644 --- a/packages/@aws-cdk/aws-lambda/test/alias.test.ts +++ b/packages/@aws-cdk/aws-lambda/test/alias.test.ts @@ -499,7 +499,7 @@ describe('alias', () => { // WHEN const target = alias.addAutoScaling({ maxCapacity: 5 }); - target.scaleOnUtilization({ utilizationTarget: Lazy.numberValue({ produce: () => 0.95 }) }); + target.scaleOnUtilization({ utilizationTarget: Lazy.number({ produce: () => 0.95 }) }); // THEN: no exception expect(stack).toHaveResource('AWS::ApplicationAutoScaling::ScalingPolicy', { diff --git a/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts b/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts index 78c11922bf183..be42067f263f1 100644 --- a/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts +++ b/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts @@ -89,7 +89,7 @@ describe('event source mapping', () => { new EventSourceMapping(stack, 'test', { target: fn, eventSourceArn: '', - retryAttempts: cdk.Lazy.numberValue({ produce: () => 100 }), + retryAttempts: cdk.Lazy.number({ produce: () => 100 }), }); }); @@ -134,7 +134,7 @@ describe('event source mapping', () => { new EventSourceMapping(stack, 'test', { target: fn, eventSourceArn: '', - parallelizationFactor: cdk.Lazy.numberValue({ produce: () => 20 }), + parallelizationFactor: cdk.Lazy.number({ produce: () => 20 }), }); }); diff --git a/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts b/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts index 0f428fb03bc77..f9dfefdfed9f6 100644 --- a/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts +++ b/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts @@ -69,7 +69,7 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri super(scope, id, { physicalName: props.destinationName || // In the underlying model, the name is not optional, but we make it so anyway. - cdk.Lazy.stringValue({ produce: () => this.generateUniqueName() }), + cdk.Lazy.string({ produce: () => this.generateUniqueName() }), }); this.resource = new CfnDestination(this, 'Resource', { @@ -109,7 +109,7 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri * Return a stringified JSON version of the PolicyDocument */ private lazyStringifiedPolicyDocument(): string { - return cdk.Lazy.stringValue({ + return cdk.Lazy.string({ produce: () => this.policyDocument.isEmpty ? '' : cdk.Stack.of(this).toJsonString(this.policyDocument), }); diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index 08a4607f990b3..cb94b643c34c2 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-networkfirewall/.eslintrc.js b/packages/@aws-cdk/aws-networkfirewall/.eslintrc.js new file mode 100644 index 0000000000000..61dd8dd001f63 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-networkfirewall/.gitignore b/packages/@aws-cdk/aws-networkfirewall/.gitignore new file mode 100644 index 0000000000000..62ebc95d75ce6 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/.gitignore @@ -0,0 +1,19 @@ +*.js +*.js.map +*.d.ts +tsconfig.json +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk +nyc.config.js +!.eslintrc.js +!jest.config.js +junit.xml diff --git a/packages/@aws-cdk/aws-networkfirewall/.npmignore b/packages/@aws-cdk/aws-networkfirewall/.npmignore new file mode 100644 index 0000000000000..e4486030fcb17 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/.npmignore @@ -0,0 +1,28 @@ +# Don't include original .ts files when doing `npm pack` +*.ts +!*.d.ts +coverage +.nyc_output +*.tgz + +dist +.LAST_PACKAGE +.LAST_BUILD +!*.js + +# Include .jsii +!.jsii + +*.snk + +*.tsbuildinfo + +tsconfig.json + +.eslintrc.js +jest.config.js + +# exclude cdk artifacts +**/cdk.out +junit.xml +test/ diff --git a/packages/@aws-cdk/aws-networkfirewall/LICENSE b/packages/@aws-cdk/aws-networkfirewall/LICENSE new file mode 100644 index 0000000000000..b71ec1688783a --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-networkfirewall/NOTICE b/packages/@aws-cdk/aws-networkfirewall/NOTICE new file mode 100644 index 0000000000000..bfccac9a7f69c --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-networkfirewall/README.md b/packages/@aws-cdk/aws-networkfirewall/README.md new file mode 100644 index 0000000000000..8593ffd675be5 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/README.md @@ -0,0 +1,16 @@ +## AWS::NetworkFirewall Construct Library + +--- + +![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) + +> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use. + +--- + + +This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. + +```ts +import networkfirewall = require('@aws-cdk/aws-networkfirewall'); +``` diff --git a/packages/@aws-cdk/aws-networkfirewall/jest.config.js b/packages/@aws-cdk/aws-networkfirewall/jest.config.js new file mode 100644 index 0000000000000..54e28beb9798b --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-networkfirewall/lib/index.ts b/packages/@aws-cdk/aws-networkfirewall/lib/index.ts new file mode 100644 index 0000000000000..1aa22b2582738 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::NetworkFirewall CloudFormation Resources: +export * from './networkfirewall.generated'; diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json new file mode 100644 index 0000000000000..bed643d933830 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -0,0 +1,97 @@ +{ + "name": "@aws-cdk/aws-networkfirewall", + "version": "0.0.0", + "description": "The CDK Construct Library for AWS::NetworkFirewall", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "projectReferences": true, + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.NetworkFirewall", + "packageId": "Amazon.CDK.AWS.NetworkFirewall", + "signAssembly": true, + "assemblyOriginatorKeyFile": "../../key.snk", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "java": { + "package": "software.amazon.awscdk.services.networkfirewall", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "networkfirewall" + } + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 1" + ], + "distName": "aws-cdk.aws-networkfirewall", + "module": "aws_cdk.aws_networkfirewall" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-networkfirewall" + }, + "homepage": "https://github.com/aws/aws-cdk", + "scripts": { + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "cdk-integ", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", + "cfn2ts": "cfn2ts", + "build+test+package": "npm run build+test && npm run package", + "build+test": "npm run build && npm test", + "compat": "cdk-compat", + "gen": "cfn2ts" + }, + "cdk-build": { + "cloudformation": "AWS::NetworkFirewall", + "jest": true, + "env": { + "AWSLINT_BASE_CONSTRUCT": "true" + } + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "AWS::NetworkFirewall", + "aws-networkfirewall" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "0.0.0", + "cdk-build-tools": "0.0.0", + "cfn2ts": "0.0.0", + "pkglint": "0.0.0" + }, + "dependencies": { + "@aws-cdk/core": "0.0.0" + }, + "peerDependencies": { + "@aws-cdk/core": "0.0.0" + }, + "engines": { + "node": ">= 10.13.0 <13 || >=13.7.0" + }, + "stability": "experimental", + "maturity": "cfn-only", + "awscdkio": { + "announce": false + }, + "private": true +} diff --git a/packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts b/packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts new file mode 100644 index 0000000000000..e394ef336bfb4 --- /dev/null +++ b/packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts @@ -0,0 +1,6 @@ +import '@aws-cdk/assert/jest'; +import {} from '../lib'; + +test('No tests are specified for this package', () => { + expect(true).toBe(true); +}); diff --git a/packages/@aws-cdk/aws-rds/lib/instance.ts b/packages/@aws-cdk/aws-rds/lib/instance.ts index 392c75ef3564c..feb44facab4d2 100644 --- a/packages/@aws-cdk/aws-rds/lib/instance.ts +++ b/packages/@aws-cdk/aws-rds/lib/instance.ts @@ -643,7 +643,7 @@ abstract class DatabaseInstanceNew extends DatabaseInstanceBase implements IData this.connections = new ec2.Connections({ securityGroups, - defaultPort: ec2.Port.tcp(Lazy.numberValue({ produce: () => this.instanceEndpoint.port })), + defaultPort: ec2.Port.tcp(Lazy.number({ produce: () => this.instanceEndpoint.port })), }); let monitoringRole; @@ -683,13 +683,13 @@ abstract class DatabaseInstanceNew extends DatabaseInstanceBase implements IData availabilityZone: props.multiAz ? undefined : props.availabilityZone, backupRetentionPeriod: props.backupRetention ? props.backupRetention.toDays() : undefined, copyTagsToSnapshot: props.copyTagsToSnapshot !== undefined ? props.copyTagsToSnapshot : true, - dbInstanceClass: Lazy.stringValue({ produce: () => `db.${this.instanceType}` }), + dbInstanceClass: Lazy.string({ produce: () => `db.${this.instanceType}` }), dbInstanceIdentifier: props.instanceIdentifier, dbSubnetGroupName: subnetGroup.subnetGroupName, deleteAutomatedBackups: props.deleteAutomatedBackups, deletionProtection: defaultDeletionProtection(props.deletionProtection, props.removalPolicy), enableCloudwatchLogsExports: this.cloudwatchLogsExports, - enableIamDatabaseAuthentication: Lazy.anyValue({ produce: () => this.enableIamAuthentication }), + enableIamDatabaseAuthentication: Lazy.any({ produce: () => this.enableIamAuthentication }), enablePerformanceInsights: enablePerformanceInsights || props.enablePerformanceInsights, // fall back to undefined if not set, iops, monitoringInterval: props.monitoringInterval && props.monitoringInterval.toSeconds(), diff --git a/packages/@aws-cdk/aws-rds/lib/option-group.ts b/packages/@aws-cdk/aws-rds/lib/option-group.ts index 7e29fe7495e3a..91dad4f8caffa 100644 --- a/packages/@aws-cdk/aws-rds/lib/option-group.ts +++ b/packages/@aws-cdk/aws-rds/lib/option-group.ts @@ -135,7 +135,7 @@ export class OptionGroup extends Resource implements IOptionGroup { engineName: props.engine.engineType, majorEngineVersion, optionGroupDescription: props.description || `Option group for ${props.engine.engineType} ${majorEngineVersion}`, - optionConfigurations: Lazy.anyValue({ produce: () => this.renderConfigurations(this.configurations) }), + optionConfigurations: Lazy.any({ produce: () => this.renderConfigurations(this.configurations) }), }); this.optionGroupName = optionGroup.ref; diff --git a/packages/@aws-cdk/aws-rds/lib/parameter-group.ts b/packages/@aws-cdk/aws-rds/lib/parameter-group.ts index 23647b921efd8..0a1971c3ac843 100644 --- a/packages/@aws-cdk/aws-rds/lib/parameter-group.ts +++ b/packages/@aws-cdk/aws-rds/lib/parameter-group.ts @@ -139,7 +139,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { this.clusterCfnGroup = new CfnDBClusterParameterGroup(this, id, { description: this.description || `Cluster parameter group for ${this.family}`, family: this.family, - parameters: Lazy.anyValue({ produce: () => this.parameters }), + parameters: Lazy.any({ produce: () => this.parameters }), }); } return { @@ -153,7 +153,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { this.instanceCfnGroup = new CfnDBParameterGroup(this, id, { description: this.description || `Parameter group for ${this.family}`, family: this.family, - parameters: Lazy.anyValue({ produce: () => this.parameters }), + parameters: Lazy.any({ produce: () => this.parameters }), }); } return { diff --git a/packages/@aws-cdk/aws-redshift/lib/cluster.ts b/packages/@aws-cdk/aws-redshift/lib/cluster.ts index 098055ada1042..9126ef4fda737 100644 --- a/packages/@aws-cdk/aws-redshift/lib/cluster.ts +++ b/packages/@aws-cdk/aws-redshift/lib/cluster.ts @@ -553,6 +553,9 @@ export class Cluster extends ClusterBase { } return undefined; } else { + if (Token.isUnresolved(numberOfNodes)) { + return numberOfNodes; + } const nodeCount = numberOfNodes ?? 2; if (nodeCount < 2 || nodeCount > 100) { throw new Error('Number of nodes for cluster type multi-node must be at least 2 and no more than 100'); diff --git a/packages/@aws-cdk/aws-redshift/test/cluster.test.ts b/packages/@aws-cdk/aws-redshift/test/cluster.test.ts index e8c38692dcb45..bb6c966fed284 100644 --- a/packages/@aws-cdk/aws-redshift/test/cluster.test.ts +++ b/packages/@aws-cdk/aws-redshift/test/cluster.test.ts @@ -210,6 +210,30 @@ describe('node count', () => { }); }).toThrow(/Number of nodes for cluster type multi-node must be at least 2 and no more than 100/); }); + + test('Multi-Node Clusters should allow input parameter for number of nodes', () => { + // WHEN + const numberOfNodesParam = new cdk.CfnParameter(stack, 'numberOfNodes', { + type: 'Number', + }); + + new Cluster(stack, 'Redshift', { + masterUser: { + masterUsername: 'admin', + }, + vpc, + clusterType: ClusterType.MULTI_NODE, + numberOfNodes: numberOfNodesParam.valueAsNumber, + }); + + // THEN + cdkExpect(stack).to(haveResource('AWS::Redshift::Cluster', { + ClusterType: 'multi-node', + NumberOfNodes: { + Ref: 'numberOfNodes', + }, + })); + }); }); test('create an encrypted cluster with custom KMS key', () => { diff --git a/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts b/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts index b489ffdcb3584..f11e9ae180e7f 100644 --- a/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts +++ b/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts @@ -157,7 +157,7 @@ export class HostedZone extends Resource implements IHostedZone { name: props.zoneName + '.', hostedZoneConfig: props.comment ? { comment: props.comment } : undefined, queryLoggingConfig: props.queryLogsLogGroupArn ? { cloudWatchLogsLogGroupArn: props.queryLogsLogGroupArn } : undefined, - vpcs: Lazy.anyValue({ produce: () => this.vpcs.length === 0 ? undefined : this.vpcs }), + vpcs: Lazy.any({ produce: () => this.vpcs.length === 0 ? undefined : this.vpcs }), }); this.hostedZoneId = resource.ref; diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index 650accdcf2fd9..27891b7b7981a 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-s3/lib/bucket.ts b/packages/@aws-cdk/aws-s3/lib/bucket.ts index f1752cc402b5e..305674a847a15 100644 --- a/packages/@aws-cdk/aws-s3/lib/bucket.ts +++ b/packages/@aws-cdk/aws-s3/lib/bucket.ts @@ -1246,14 +1246,14 @@ export class Bucket extends BucketBase { bucketName: this.physicalName, bucketEncryption, versioningConfiguration: props.versioned ? { status: 'Enabled' } : undefined, - lifecycleConfiguration: Lazy.anyValue({ produce: () => this.parseLifecycleConfiguration() }), + lifecycleConfiguration: Lazy.any({ produce: () => this.parseLifecycleConfiguration() }), websiteConfiguration, publicAccessBlockConfiguration: props.blockPublicAccess, - metricsConfigurations: Lazy.anyValue({ produce: () => this.parseMetricConfiguration() }), - corsConfiguration: Lazy.anyValue({ produce: () => this.parseCorsConfiguration() }), - accessControl: Lazy.stringValue({ produce: () => this.accessControl }), + metricsConfigurations: Lazy.any({ produce: () => this.parseMetricConfiguration() }), + corsConfiguration: Lazy.any({ produce: () => this.parseCorsConfiguration() }), + accessControl: Lazy.string({ produce: () => this.accessControl }), loggingConfiguration: this.parseServerAccessLogs(props), - inventoryConfigurations: Lazy.anyValue({ produce: () => this.parseInventoryConfiguration() }), + inventoryConfigurations: Lazy.any({ produce: () => this.parseInventoryConfiguration() }), }); resource.applyRemovalPolicy(props.removalPolicy); diff --git a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts index e1cf34982a3c9..91bb688b28857 100644 --- a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts +++ b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts @@ -107,7 +107,7 @@ export class BucketNotifications extends cdk.Construct { properties: { ServiceToken: handlerArn, BucketName: this.bucket.bucketName, - NotificationConfiguration: cdk.Lazy.anyValue({ produce: () => this.renderNotificationConfiguration() }), + NotificationConfiguration: cdk.Lazy.any({ produce: () => this.renderNotificationConfiguration() }), }, }); } diff --git a/packages/@aws-cdk/aws-s3/test/bucket.test.ts b/packages/@aws-cdk/aws-s3/test/bucket.test.ts index 275f4bc6aa822..900a33852beef 100644 --- a/packages/@aws-cdk/aws-s3/test/bucket.test.ts +++ b/packages/@aws-cdk/aws-s3/test/bucket.test.ts @@ -107,7 +107,7 @@ nodeunitShim({ const stack = new cdk.Stack(); test.doesNotThrow(() => new s3.Bucket(stack, 'MyBucket', { - bucketName: cdk.Lazy.stringValue({ produce: () => '_BUCKET' }), + bucketName: cdk.Lazy.string({ produce: () => '_BUCKET' }), })); test.done(); diff --git a/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts b/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts index 714411640e83c..72c056d913693 100644 --- a/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts +++ b/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts @@ -126,7 +126,7 @@ export class ReceiptRule extends Resource implements IReceiptRule { const resource = new CfnReceiptRule(this, 'Resource', { after: props.after ? props.after.receiptRuleName : undefined, rule: { - actions: Lazy.anyValue({ produce: () => this.renderActions() }), + actions: Lazy.any({ produce: () => this.renderActions() }), enabled: props.enabled === undefined ? true : props.enabled, name: this.physicalName, recipients: props.recipients, diff --git a/packages/@aws-cdk/aws-signer/.eslintrc.js b/packages/@aws-cdk/aws-signer/.eslintrc.js new file mode 100644 index 0000000000000..61dd8dd001f63 --- /dev/null +++ b/packages/@aws-cdk/aws-signer/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-signer/.gitignore b/packages/@aws-cdk/aws-signer/.gitignore new file mode 100644 index 0000000000000..62ebc95d75ce6 --- /dev/null +++ b/packages/@aws-cdk/aws-signer/.gitignore @@ -0,0 +1,19 @@ +*.js +*.js.map +*.d.ts +tsconfig.json +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk +nyc.config.js +!.eslintrc.js +!jest.config.js +junit.xml diff --git a/packages/@aws-cdk/aws-signer/.npmignore b/packages/@aws-cdk/aws-signer/.npmignore new file mode 100644 index 0000000000000..e4486030fcb17 --- /dev/null +++ b/packages/@aws-cdk/aws-signer/.npmignore @@ -0,0 +1,28 @@ +# Don't include original .ts files when doing `npm pack` +*.ts +!*.d.ts +coverage +.nyc_output +*.tgz + +dist +.LAST_PACKAGE +.LAST_BUILD +!*.js + +# Include .jsii +!.jsii + +*.snk + +*.tsbuildinfo + +tsconfig.json + +.eslintrc.js +jest.config.js + +# exclude cdk artifacts +**/cdk.out +junit.xml +test/ diff --git a/packages/@aws-cdk/aws-signer/LICENSE b/packages/@aws-cdk/aws-signer/LICENSE new file mode 100644 index 0000000000000..b71ec1688783a --- /dev/null +++ b/packages/@aws-cdk/aws-signer/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-signer/NOTICE b/packages/@aws-cdk/aws-signer/NOTICE new file mode 100644 index 0000000000000..bfccac9a7f69c --- /dev/null +++ b/packages/@aws-cdk/aws-signer/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-signer/README.md b/packages/@aws-cdk/aws-signer/README.md new file mode 100644 index 0000000000000..8bdebf06d67dd --- /dev/null +++ b/packages/@aws-cdk/aws-signer/README.md @@ -0,0 +1,16 @@ +## AWS::Signer Construct Library + +--- + +![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) + +> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use. + +--- + + +This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. + +```ts +import signer = require('@aws-cdk/aws-signer'); +``` diff --git a/packages/@aws-cdk/aws-signer/jest.config.js b/packages/@aws-cdk/aws-signer/jest.config.js new file mode 100644 index 0000000000000..54e28beb9798b --- /dev/null +++ b/packages/@aws-cdk/aws-signer/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-signer/lib/index.ts b/packages/@aws-cdk/aws-signer/lib/index.ts new file mode 100644 index 0000000000000..9c56379e86c19 --- /dev/null +++ b/packages/@aws-cdk/aws-signer/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::Signer CloudFormation Resources: +export * from './signer.generated'; diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json new file mode 100644 index 0000000000000..2da1685ac8341 --- /dev/null +++ b/packages/@aws-cdk/aws-signer/package.json @@ -0,0 +1,97 @@ +{ + "name": "@aws-cdk/aws-signer", + "version": "0.0.0", + "description": "The CDK Construct Library for AWS::Signer", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "projectReferences": true, + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.Signer", + "packageId": "Amazon.CDK.AWS.Signer", + "signAssembly": true, + "assemblyOriginatorKeyFile": "../../key.snk", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "java": { + "package": "software.amazon.awscdk.services.signer", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "signer" + } + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 1" + ], + "distName": "aws-cdk.aws-signer", + "module": "aws_cdk.aws_signer" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-signer" + }, + "homepage": "https://github.com/aws/aws-cdk", + "scripts": { + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "cdk-integ", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", + "cfn2ts": "cfn2ts", + "build+test+package": "npm run build+test && npm run package", + "build+test": "npm run build && npm test", + "compat": "cdk-compat", + "gen": "cfn2ts" + }, + "cdk-build": { + "cloudformation": "AWS::Signer", + "jest": true, + "env": { + "AWSLINT_BASE_CONSTRUCT": "true" + } + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "AWS::Signer", + "aws-signer" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "0.0.0", + "cdk-build-tools": "0.0.0", + "cfn2ts": "0.0.0", + "pkglint": "0.0.0" + }, + "dependencies": { + "@aws-cdk/core": "0.0.0" + }, + "peerDependencies": { + "@aws-cdk/core": "0.0.0" + }, + "engines": { + "node": ">= 10.13.0 <13 || >=13.7.0" + }, + "stability": "experimental", + "maturity": "cfn-only", + "awscdkio": { + "announce": false + }, + "private": true +} diff --git a/packages/@aws-cdk/aws-signer/test/signer.test.ts b/packages/@aws-cdk/aws-signer/test/signer.test.ts new file mode 100644 index 0000000000000..e394ef336bfb4 --- /dev/null +++ b/packages/@aws-cdk/aws-signer/test/signer.test.ts @@ -0,0 +1,6 @@ +import '@aws-cdk/assert/jest'; +import {} from '../lib'; + +test('No tests are specified for this package', () => { + expect(true).toBe(true); +}); diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index eaa413c4a8cb0..fc67604e48d64 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -75,7 +75,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-ssm/test/test.parameter.ts b/packages/@aws-cdk/aws-ssm/test/test.parameter.ts index cf7a43f3f3c2b..9734ddb4fdd9a 100644 --- a/packages/@aws-cdk/aws-ssm/test/test.parameter.ts +++ b/packages/@aws-cdk/aws-ssm/test/test.parameter.ts @@ -69,7 +69,7 @@ export = { test.doesNotThrow(() => { new ssm.StringParameter(stack, 'Parameter', { allowedPattern: '^Bar$', - stringValue: cdk.Lazy.stringValue({ produce: () => 'Foo!' }), + stringValue: cdk.Lazy.string({ produce: () => 'Foo!' }), }); }); test.done(); @@ -239,7 +239,7 @@ export = { // THEN test.doesNotThrow(() => new ssm.StringListParameter(stack, 'Parameter', { allowedPattern: '^(Foo|Bar)$', - stringListValue: ['Foo', cdk.Lazy.stringValue({ produce: () => 'Baz!' })], + stringListValue: ['Foo', cdk.Lazy.string({ produce: () => 'Baz!' })], })); test.done(); }, diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts index 12d1c71665577..d2f280d8d0c1e 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts @@ -136,7 +136,7 @@ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask AwsvpcConfiguration: { AssignPublicIp: assignPublicIp !== undefined ? (assignPublicIp ? 'ENABLED' : 'DISABLED') : undefined, Subnets: vpc.selectSubnets(subnetSelection).subnetIds, - SecurityGroups: cdk.Lazy.listValue({ produce: () => [this.securityGroup!.securityGroupId] }), + SecurityGroups: cdk.Lazy.list({ produce: () => [this.securityGroup!.securityGroupId] }), }, }; } @@ -156,7 +156,7 @@ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask }), new iam.PolicyStatement({ actions: ['iam:PassRole'], - resources: cdk.Lazy.listValue({ produce: () => this.taskExecutionRoles().map(r => r.roleArn) }), + resources: cdk.Lazy.list({ produce: () => this.taskExecutionRoles().map(r => r.roleArn) }), }), ]; diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts index 38f54c2c0c8fe..f80252cbb05f8 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts @@ -294,7 +294,7 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { AwsvpcConfiguration: { AssignPublicIp: this.props.assignPublicIp ? (this.props.assignPublicIp ? 'ENABLED' : 'DISABLED') : undefined, Subnets: this.props.cluster.vpc.selectSubnets(subnetSelection).subnetIds, - SecurityGroups: cdk.Lazy.listValue({ produce: () => this.securityGroups?.map(sg => sg.securityGroupId) }), + SecurityGroups: cdk.Lazy.list({ produce: () => this.securityGroups?.map(sg => sg.securityGroupId) }), }, }; diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts index 7b73afd355e3a..ee82cc6f69818 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts @@ -229,7 +229,7 @@ export class SageMakerCreateModel extends sfn.TaskStateBase implements iam.IGran return this.vpc ? { VpcConfig: { - SecurityGroupIds: cdk.Lazy.listValue({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), + SecurityGroupIds: cdk.Lazy.list({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), Subnets: this.subnets, }, } diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts index a6f925181e38e..e063378bf3eb2 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts @@ -302,7 +302,7 @@ export class SageMakerCreateTrainingJob extends sfn.TaskStateBase implements iam return config ? { VpcConfig: { - SecurityGroupIds: Lazy.listValue({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), + SecurityGroupIds: Lazy.list({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), Subnets: this.subnets, }, } diff --git a/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts b/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts index 601479fbed0e4..2d5d423a930b7 100644 --- a/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts +++ b/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts @@ -59,7 +59,7 @@ export class Activity extends Resource implements IActivity { constructor(scope: Construct, id: string, props: ActivityProps = {}) { super(scope, id, { physicalName: props.activityName || - Lazy.stringValue({ produce: () => this.generateName() }), + Lazy.string({ produce: () => this.generateName() }), }); const resource = new CfnActivity(this, 'Resource', { diff --git a/packages/@aws-cdk/aws-synthetics/lib/canary.ts b/packages/@aws-cdk/aws-synthetics/lib/canary.ts index f2bbb1407d76a..bee1d24e8cf11 100644 --- a/packages/@aws-cdk/aws-synthetics/lib/canary.ts +++ b/packages/@aws-cdk/aws-synthetics/lib/canary.ts @@ -243,7 +243,7 @@ export class Canary extends cdk.Resource { } super(scope, id, { - physicalName: props.canaryName || cdk.Lazy.stringValue({ + physicalName: props.canaryName || cdk.Lazy.string({ produce: () => this.generateUniqueName(), }), }); diff --git a/packages/@aws-cdk/aws-synthetics/test/canary.test.ts b/packages/@aws-cdk/aws-synthetics/test/canary.test.ts index 8fd9805bb04d4..d4a505e3a492b 100644 --- a/packages/@aws-cdk/aws-synthetics/test/canary.test.ts +++ b/packages/@aws-cdk/aws-synthetics/test/canary.test.ts @@ -59,7 +59,7 @@ test('Name validation does not fail when using Tokens', () => { // WHEN new synthetics.Canary(stack, 'Canary', { - canaryName: Lazy.stringValue({ produce: () => 'My Canary' }), + canaryName: Lazy.string({ produce: () => 'My Canary' }), test: synthetics.Test.custom({ handler: 'index.handler', code: synthetics.Code.fromInline('/* Synthetics handler code */'), diff --git a/packages/@aws-cdk/cfnspec/CHANGELOG.md b/packages/@aws-cdk/cfnspec/CHANGELOG.md index 8a871d71fe7ce..b380dcc6a20c0 100644 --- a/packages/@aws-cdk/cfnspec/CHANGELOG.md +++ b/packages/@aws-cdk/cfnspec/CHANGELOG.md @@ -1,3 +1,174 @@ +# CloudFormation Resource Specification v21.0.0 + +## New Resource Types + +* AWS::CloudFront::KeyGroup +* AWS::CloudFront::PublicKey +* AWS::Glue::Registry +* AWS::Glue::Schema +* AWS::Glue::SchemaVersion +* AWS::Glue::SchemaVersionMetadata +* AWS::IoT::TopicRuleDestination +* AWS::Lambda::CodeSigningConfig +* AWS::NetworkFirewall::Firewall +* AWS::NetworkFirewall::FirewallPolicy +* AWS::NetworkFirewall::LoggingConfiguration +* AWS::NetworkFirewall::RuleGroup +* AWS::S3::StorageLens +* AWS::Signer::ProfilePermission +* AWS::Signer::SigningProfile + +## Attribute Changes + +* AWS::SageMaker::MonitoringSchedule CreationTime (__added__) +* AWS::SageMaker::MonitoringSchedule LastModifiedTime (__added__) + +## Property Changes + +* AWS::Amplify::App CustomHeaders (__added__) +* AWS::DataBrew::Recipe ProjectName (__deleted__) +* AWS::DataBrew::Recipe Version (__deleted__) +* AWS::Events::EventBusPolicy Statement (__added__) +* AWS::Events::EventBusPolicy Action.Required (__changed__) + * Old: true + * New: false +* AWS::Events::EventBusPolicy Principal.Required (__changed__) + * Old: true + * New: false +* AWS::Glue::MLTransform TransformEncryption (__added__) +* AWS::KMS::Key KeySpec (__added__) +* AWS::Lambda::Function CodeSigningConfigArn (__added__) +* AWS::SageMaker::MonitoringSchedule CreationTime (__deleted__) +* AWS::SageMaker::MonitoringSchedule LastModifiedTime (__deleted__) + +## Property Type Changes + +* AWS::Batch::ComputeEnvironment.Ec2ConfigurationObject (__added__) +* AWS::DLM::LifecyclePolicy.Action (__added__) +* AWS::DLM::LifecyclePolicy.CrossRegionCopyAction (__added__) +* AWS::DLM::LifecyclePolicy.EncryptionConfiguration (__added__) +* AWS::DLM::LifecyclePolicy.EventParameters (__added__) +* AWS::DLM::LifecyclePolicy.EventSource (__added__) +* AWS::DLM::LifecyclePolicy.ShareRule (__added__) +* AWS::EC2::LaunchTemplate.EnclaveOptions (__added__) +* AWS::Glue::Database.DataLakePrincipal (__added__) +* AWS::Glue::Database.DatabaseIdentifier (__added__) +* AWS::Glue::Database.PrincipalPrivileges (__added__) +* AWS::Glue::MLTransform.MLUserDataEncryption (__added__) +* AWS::Glue::MLTransform.TransformEncryption (__added__) +* AWS::Glue::Table.TableIdentifier (__added__) +* AWS::SageMaker::Model.MultiModelConfig (__added__) +* AWS::Batch::ComputeEnvironment.ComputeResources Ec2Configuration (__added__) +* AWS::CloudFront::Distribution.CacheBehavior TrustedKeyGroups (__added__) +* AWS::CloudFront::Distribution.DefaultCacheBehavior TrustedKeyGroups (__added__) +* AWS::DLM::LifecyclePolicy.PolicyDetails Actions (__added__) +* AWS::DLM::LifecyclePolicy.PolicyDetails EventSource (__added__) +* AWS::DLM::LifecyclePolicy.PolicyDetails ResourceTypes.Required (__changed__) + * Old: true + * New: false +* AWS::DLM::LifecyclePolicy.PolicyDetails Schedules.Required (__changed__) + * Old: true + * New: false +* AWS::DLM::LifecyclePolicy.PolicyDetails TargetTags.Required (__changed__) + * Old: true + * New: false +* AWS::DLM::LifecyclePolicy.Schedule ShareRules (__added__) +* AWS::DataBrew::Recipe.RecipeStep Action.PrimitiveType (__deleted__) +* AWS::EC2::LaunchTemplate.LaunchTemplateData EnclaveOptions (__added__) +* AWS::Glue::Connection.ConnectionInput ConnectionProperties.Required (__changed__) + * Old: true + * New: false +* AWS::Glue::Crawler.S3Target ConnectionName (__added__) +* AWS::Glue::Database.DatabaseInput CreateTableDefaultPermissions (__added__) +* AWS::Glue::Database.DatabaseInput TargetDatabase (__added__) +* AWS::Glue::Table.TableInput TargetTable (__added__) +* AWS::SageMaker::Model.ContainerDefinition MultiModelConfig (__added__) +* AWS::Synthetics::Canary.RunConfig EnvironmentVariables (__added__) + + +# CloudFormation Resource Specification v20.3.0 + +## New Resource Types + +* AWS::DataBrew::Dataset +* AWS::DataBrew::Job +* AWS::DataBrew::Project +* AWS::DataBrew::Recipe +* AWS::DataBrew::Schedule + +## Attribute Changes + +* AWS::ElasticLoadBalancingV2::Listener ListenerArn (__added__) + +## Property Changes + +* AWS::CodeStar::GitHubRepository ConnectionArn (__added__) +* AWS::CodeStar::GitHubRepository RepositoryAccessToken.Required (__changed__) + * Old: true + * New: false +* AWS::DMS::ReplicationInstance AvailabilityZone.UpdateType (__changed__) + * Old: Immutable + * New: Mutable +* AWS::EC2::ClientVpnEndpoint ClientConnectOptions (__added__) +* AWS::EC2::VPCEndpointService GatewayLoadBalancerArns (__added__) +* AWS::ElasticLoadBalancingV2::Listener AlpnPolicy.DuplicatesAllowed (__deleted__) +* AWS::Lambda::EventSourceMapping PartialBatchResponse (__added__) +* AWS::Lambda::EventSourceMapping TumblingWindowInSeconds (__added__) + +## Property Type Changes + +* AWS::AppMesh::VirtualGateway.VirtualGatewayConnectionPool (__added__) +* AWS::AppMesh::VirtualGateway.VirtualGatewayGrpcConnectionPool (__added__) +* AWS::AppMesh::VirtualGateway.VirtualGatewayHttp2ConnectionPool (__added__) +* AWS::AppMesh::VirtualGateway.VirtualGatewayHttpConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.OutlierDetection (__added__) +* AWS::AppMesh::VirtualNode.VirtualNodeConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.VirtualNodeGrpcConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.VirtualNodeHttp2ConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.VirtualNodeHttpConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.VirtualNodeTcpConnectionPool (__added__) +* AWS::EC2::ClientVpnEndpoint.ClientConnectOptions (__added__) +* AWS::AppFlow::ConnectorProfile.SalesforceConnectorProfileCredentials ClientCredentialsArn (__added__) +* AWS::AppMesh::VirtualGateway.VirtualGatewayListener ConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.Listener ConnectionPool (__added__) +* AWS::AppMesh::VirtualNode.Listener OutlierDetection (__added__) +* AWS::ElasticLoadBalancingV2::Listener.Action AuthenticateCognitoConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig +* AWS::ElasticLoadBalancingV2::Listener.Action AuthenticateOidcConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig +* AWS::ElasticLoadBalancingV2::Listener.Action FixedResponseConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig +* AWS::ElasticLoadBalancingV2::Listener.Action ForwardConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig +* AWS::ElasticLoadBalancingV2::Listener.Action Order.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-order + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-order +* AWS::ElasticLoadBalancingV2::Listener.Action RedirectConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig +* AWS::ElasticLoadBalancingV2::Listener.Action TargetGroupArn.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-targetgrouparn + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-targetgrouparn +* AWS::ElasticLoadBalancingV2::Listener.Action Type.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-type + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-type +* AWS::ElasticLoadBalancingV2::Listener.AuthenticateCognitoConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) +* AWS::ElasticLoadBalancingV2::Listener.AuthenticateCognitoConfig SessionTimeout.PrimitiveType (__changed__) + * Old: Long + * New: String +* AWS::ElasticLoadBalancingV2::Listener.AuthenticateOidcConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) +* AWS::ElasticLoadBalancingV2::Listener.AuthenticateOidcConfig SessionTimeout.PrimitiveType (__changed__) + * Old: Long + * New: String +* AWS::ElasticLoadBalancingV2::Listener.Certificate CertificateArn.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html#cfn-elasticloadbalancingv2-listener-certificates-certificatearn + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.html#cfn-elasticloadbalancingv2-listener-certificate-certificatearn + + # CloudFormation Resource Specification v20.2.0 ## New Resource Types diff --git a/packages/@aws-cdk/cfnspec/cfn.version b/packages/@aws-cdk/cfnspec/cfn.version index 86d4688d0910a..fb5b513039eb7 100644 --- a/packages/@aws-cdk/cfnspec/cfn.version +++ b/packages/@aws-cdk/cfnspec/cfn.version @@ -1 +1 @@ -20.2.0 +21.0.0 diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json index e9a8d24f35f4f..78b9780cb62c8 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json @@ -2288,6 +2288,12 @@ "Required": false, "UpdateType": "Mutable" }, + "ClientCredentialsArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appflow-connectorprofile-salesforceconnectorprofilecredentials.html#cfn-appflow-connectorprofile-salesforceconnectorprofilecredentials-clientcredentialsarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "ConnectorOAuthRequest": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appflow-connectorprofile-salesforceconnectorprofilecredentials.html#cfn-appflow-connectorprofile-salesforceconnectorprofilecredentials-connectoroauthrequest", "Required": false, @@ -3950,6 +3956,29 @@ } } }, + "AWS::AppMesh::VirtualGateway.VirtualGatewayConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html", + "Properties": { + "GRPC": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-grpc", + "Required": false, + "Type": "VirtualGatewayGrpcConnectionPool", + "UpdateType": "Mutable" + }, + "HTTP": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http", + "Required": false, + "Type": "VirtualGatewayHttpConnectionPool", + "UpdateType": "Mutable" + }, + "HTTP2": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http2", + "Required": false, + "Type": "VirtualGatewayHttp2ConnectionPool", + "UpdateType": "Mutable" + } + } + }, "AWS::AppMesh::VirtualGateway.VirtualGatewayFileAccessLog": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog.html", "Properties": { @@ -3961,6 +3990,17 @@ } } }, + "AWS::AppMesh::VirtualGateway.VirtualGatewayGrpcConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool.html", + "Properties": { + "MaxRequests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool-maxrequests", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::AppMesh::VirtualGateway.VirtualGatewayHealthCheckPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy.html", "Properties": { @@ -4008,9 +4048,43 @@ } } }, + "AWS::AppMesh::VirtualGateway.VirtualGatewayHttp2ConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool.html", + "Properties": { + "MaxRequests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayhttp2connectionpool-maxrequests", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::AppMesh::VirtualGateway.VirtualGatewayHttpConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html", + "Properties": { + "MaxConnections": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-maxconnections", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + }, + "MaxPendingRequests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-maxpendingrequests", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::AppMesh::VirtualGateway.VirtualGatewayListener": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html", "Properties": { + "ConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html#cfn-appmesh-virtualgateway-virtualgatewaylistener-connectionpool", + "Required": false, + "Type": "VirtualGatewayConnectionPool", + "UpdateType": "Mutable" + }, "HealthCheck": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html#cfn-appmesh-virtualgateway-virtualgatewaylistener-healthcheck", "Required": false, @@ -4428,12 +4502,24 @@ "AWS::AppMesh::VirtualNode.Listener": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html", "Properties": { + "ConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-connectionpool", + "Required": false, + "Type": "VirtualNodeConnectionPool", + "UpdateType": "Mutable" + }, "HealthCheck": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-healthcheck", "Required": false, "Type": "HealthCheck", "UpdateType": "Mutable" }, + "OutlierDetection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-outlierdetection", + "Required": false, + "Type": "OutlierDetection", + "UpdateType": "Mutable" + }, "PortMapping": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-portmapping", "Required": true, @@ -4556,6 +4642,35 @@ } } }, + "AWS::AppMesh::VirtualNode.OutlierDetection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html", + "Properties": { + "BaseEjectionDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-baseejectionduration", + "Required": true, + "Type": "Duration", + "UpdateType": "Mutable" + }, + "Interval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-interval", + "Required": true, + "Type": "Duration", + "UpdateType": "Mutable" + }, + "MaxEjectionPercent": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-maxejectionpercent", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + }, + "MaxServerErrors": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-maxservererrors", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::AppMesh::VirtualNode.PortMapping": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-portmapping.html", "Properties": { @@ -4652,6 +4767,74 @@ } } }, + "AWS::AppMesh::VirtualNode.VirtualNodeConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html", + "Properties": { + "GRPC": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-grpc", + "Required": false, + "Type": "VirtualNodeGrpcConnectionPool", + "UpdateType": "Mutable" + }, + "HTTP": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http", + "Required": false, + "Type": "VirtualNodeHttpConnectionPool", + "UpdateType": "Mutable" + }, + "HTTP2": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http2", + "Required": false, + "Type": "VirtualNodeHttp2ConnectionPool", + "UpdateType": "Mutable" + }, + "TCP": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-tcp", + "Required": false, + "Type": "VirtualNodeTcpConnectionPool", + "UpdateType": "Mutable" + } + } + }, + "AWS::AppMesh::VirtualNode.VirtualNodeGrpcConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool.html", + "Properties": { + "MaxRequests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool.html#cfn-appmesh-virtualnode-virtualnodegrpcconnectionpool-maxrequests", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::AppMesh::VirtualNode.VirtualNodeHttp2ConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool.html", + "Properties": { + "MaxRequests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool.html#cfn-appmesh-virtualnode-virtualnodehttp2connectionpool-maxrequests", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::AppMesh::VirtualNode.VirtualNodeHttpConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html", + "Properties": { + "MaxConnections": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxconnections", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + }, + "MaxPendingRequests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxpendingrequests", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::AppMesh::VirtualNode.VirtualNodeSpec": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html", "Properties": { @@ -4689,6 +4872,17 @@ } } }, + "AWS::AppMesh::VirtualNode.VirtualNodeTcpConnectionPool": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool.html", + "Properties": { + "MaxConnections": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool.html#cfn-appmesh-virtualnode-virtualnodetcpconnectionpool-maxconnections", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::AppMesh::VirtualNode.VirtualServiceBackend": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualservicebackend.html", "Properties": { @@ -7079,6 +7273,13 @@ "Required": false, "UpdateType": "Mutable" }, + "Ec2Configuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-ec2configuration", + "ItemType": "Ec2ConfigurationObject", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, "Ec2KeyPair": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-ec2keypair", "PrimitiveType": "String", @@ -7162,6 +7363,23 @@ } } }, + "AWS::Batch::ComputeEnvironment.Ec2ConfigurationObject": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html", + "Properties": { + "ImageIdOverride": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html#cfn-batch-computeenvironment-ec2configurationobject-imageidoverride", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "ImageType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html#cfn-batch-computeenvironment-ec2configurationobject-imagetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::Batch::ComputeEnvironment.LaunchTemplateSpecification": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html", "Properties": { @@ -8349,6 +8567,13 @@ "Required": true, "UpdateType": "Mutable" }, + "TrustedKeyGroups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-trustedkeygroups", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "TrustedSigners": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-trustedsigners", "PrimitiveItemType": "String", @@ -8543,6 +8768,13 @@ "Required": true, "UpdateType": "Mutable" }, + "TrustedKeyGroups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-trustedkeygroups", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "TrustedSigners": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-trustedsigners", "PrimitiveItemType": "String", @@ -9008,6 +9240,31 @@ } } }, + "AWS::CloudFront::KeyGroup.KeyGroupConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html", + "Properties": { + "Comment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html#cfn-cloudfront-keygroup-keygroupconfig-comment", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Items": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html#cfn-cloudfront-keygroup-keygroupconfig-items", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html#cfn-cloudfront-keygroup-keygroupconfig-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::CloudFront::OriginRequestPolicy.CookiesConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-originrequestpolicy-cookiesconfig.html", "Properties": { @@ -9100,6 +9357,35 @@ } } }, + "AWS::CloudFront::PublicKey.PublicKeyConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html", + "Properties": { + "CallerReference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-callerreference", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Comment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-comment", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EncodedKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-encodedkey", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::CloudFront::RealtimeLogConfig.EndPoint": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-realtimelogconfig-endpoint.html", "Properties": { @@ -12100,6 +12386,24 @@ } } }, + "AWS::DLM::LifecyclePolicy.Action": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html", + "Properties": { + "CrossRegionCopy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html#cfn-dlm-lifecyclepolicy-action-crossregioncopy", + "ItemType": "CrossRegionCopyAction", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html#cfn-dlm-lifecyclepolicy-action-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::DLM::LifecyclePolicy.CreateRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-createrule.html", "Properties": { @@ -12130,6 +12434,29 @@ } } }, + "AWS::DLM::LifecyclePolicy.CrossRegionCopyAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html", + "Properties": { + "EncryptionConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html#cfn-dlm-lifecyclepolicy-crossregioncopyaction-encryptionconfiguration", + "Required": true, + "Type": "EncryptionConfiguration", + "UpdateType": "Mutable" + }, + "RetainRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html#cfn-dlm-lifecyclepolicy-crossregioncopyaction-retainrule", + "Required": false, + "Type": "CrossRegionCopyRetainRule", + "UpdateType": "Mutable" + }, + "Target": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html#cfn-dlm-lifecyclepolicy-crossregioncopyaction-target", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::DLM::LifecyclePolicy.CrossRegionCopyRetainRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyretainrule.html", "Properties": { @@ -12182,6 +12509,64 @@ } } }, + "AWS::DLM::LifecyclePolicy.EncryptionConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html", + "Properties": { + "CmkArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html#cfn-dlm-lifecyclepolicy-encryptionconfiguration-cmkarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Encrypted": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html#cfn-dlm-lifecyclepolicy-encryptionconfiguration-encrypted", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DLM::LifecyclePolicy.EventParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html", + "Properties": { + "DescriptionRegex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html#cfn-dlm-lifecyclepolicy-eventparameters-descriptionregex", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EventType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html#cfn-dlm-lifecyclepolicy-eventparameters-eventtype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SnapshotOwner": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html#cfn-dlm-lifecyclepolicy-eventparameters-snapshotowner", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::DLM::LifecyclePolicy.EventSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html", + "Properties": { + "Parameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html#cfn-dlm-lifecyclepolicy-eventsource-parameters", + "Required": false, + "Type": "EventParameters", + "UpdateType": "Mutable" + }, + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html#cfn-dlm-lifecyclepolicy-eventsource-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::DLM::LifecyclePolicy.FastRestoreRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-fastrestorerule.html", "Properties": { @@ -12232,6 +12617,19 @@ "AWS::DLM::LifecyclePolicy.PolicyDetails": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html", "Properties": { + "Actions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-actions", + "ItemType": "Action", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "EventSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-eventsource", + "Required": false, + "Type": "EventSource", + "UpdateType": "Mutable" + }, "Parameters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-parameters", "Required": false, @@ -12247,21 +12645,21 @@ "ResourceTypes": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcetypes", "PrimitiveItemType": "String", - "Required": true, + "Required": false, "Type": "List", "UpdateType": "Mutable" }, "Schedules": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-schedules", "ItemType": "Schedule", - "Required": true, + "Required": false, "Type": "List", "UpdateType": "Mutable" }, "TargetTags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-targettags", "ItemType": "Tag", - "Required": true, + "Required": false, "Type": "List", "UpdateType": "Mutable" } @@ -12330,6 +12728,13 @@ "Type": "RetainRule", "UpdateType": "Mutable" }, + "ShareRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-sharerules", + "ItemType": "ShareRule", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "TagsToAdd": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-tagstoadd", "ItemType": "Tag", @@ -12346,6 +12751,30 @@ } } }, + "AWS::DLM::LifecyclePolicy.ShareRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html", + "Properties": { + "TargetAccounts": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html#cfn-dlm-lifecyclepolicy-sharerule-targetaccounts", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "UnshareInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html#cfn-dlm-lifecyclepolicy-sharerule-unshareinterval", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "UnshareIntervalUnit": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html#cfn-dlm-lifecyclepolicy-sharerule-unshareintervalunit", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::DMS::Endpoint.DynamoDbSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html", "Properties": { @@ -12591,1178 +13020,1984 @@ } } }, - "AWS::DataPipeline::Pipeline.Field": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html", + "AWS::DataBrew::Job.Output": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html", "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-key", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "RefValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-refvalue", + "CompressionFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-compressionformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StringValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-stringvalue", + "Format": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-format", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DataPipeline::Pipeline.ParameterAttribute": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html", - "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-key", - "PrimitiveType": "String", + }, + "Location": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-location", "Required": true, + "Type": "S3Location", "UpdateType": "Mutable" }, - "StringValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-stringvalue", - "PrimitiveType": "String", - "Required": true, + "Overwrite": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-overwrite", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "PartitionColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-partitioncolumns", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.ParameterObject": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html", + "AWS::DataBrew::Job.S3Location": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-s3location.html", "Properties": { - "Attributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-attributes", - "DuplicatesAllowed": true, - "ItemType": "ParameterAttribute", + "Bucket": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-s3location.html#cfn-databrew-job-s3location-bucket", + "PrimitiveType": "String", "Required": true, - "Type": "List", "UpdateType": "Mutable" }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-id", + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-s3location.html#cfn-databrew-job-s3location-key", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.ParameterValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html", + "AWS::DataBrew::Recipe.Action": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-action.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-id", + "Operation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-action.html#cfn-databrew-recipe-action-operation", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "StringValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-stringvalue", - "PrimitiveType": "String", - "Required": true, + "Parameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-action.html#cfn-databrew-recipe-action-parameters", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.PipelineObject": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html", + "AWS::DataBrew::Recipe.ConditionExpression": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html", "Properties": { - "Fields": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-fields", - "DuplicatesAllowed": true, - "ItemType": "Field", + "Condition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html#cfn-databrew-recipe-conditionexpression-condition", + "PrimitiveType": "String", "Required": true, - "Type": "List", "UpdateType": "Mutable" }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-id", + "TargetColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html#cfn-databrew-recipe-conditionexpression-targetcolumn", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-name", + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html#cfn-databrew-recipe-conditionexpression-value", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.PipelineTag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html", + "AWS::DataBrew::Recipe.DataCatalogInputDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html", "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-key", + "CatalogId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-catalogid", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-value", + "DatabaseName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-databasename", "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DirectoryService::MicrosoftAD.VpcSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html", - "Properties": { - "SubnetIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-subnetids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", + "Required": false, "UpdateType": "Mutable" }, - "VpcId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-vpcid", + "TableName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-tablename", "PrimitiveType": "String", - "Required": true, + "Required": false, + "UpdateType": "Mutable" + }, + "TempDirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-tempdirectory", + "Required": false, + "Type": "S3Location", "UpdateType": "Mutable" } } }, - "AWS::DirectoryService::SimpleAD.VpcSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html", + "AWS::DataBrew::Recipe.RecipeParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html", "Properties": { - "SubnetIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-subnetids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", + "AggregateFunction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-aggregatefunction", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "VpcId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-vpcid", + "Base": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-base", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.AttributeDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html", - "Properties": { - "AttributeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename", + }, + "CaseStatement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-casestatement", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "AttributeType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename-attributetype", + "CategoryMap": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-categorymap", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.GlobalSecondaryIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html", - "Properties": { - "IndexName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname", + }, + "CharsToRemove": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-charstoremove", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "KeySchema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-keyschema", - "DuplicatesAllowed": false, - "ItemType": "KeySchema", - "Required": true, - "Type": "List", + "CollapseConsecutiveWhitespace": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-collapseconsecutivewhitespace", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "Projection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-projection", - "Required": true, - "Type": "Projection", + "ColumnDataType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-columndatatype", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "ProvisionedThroughput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-provisionedthroughput", + "ColumnRange": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-columnrange", + "PrimitiveType": "String", "Required": false, - "Type": "ProvisionedThroughput", "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.KeySchema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html", - "Properties": { - "AttributeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-attributename", + }, + "Count": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-count", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "KeyType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-keytype", + "CustomCharacters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-customcharacters", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.LocalSecondaryIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html", - "Properties": { - "IndexName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-indexname", + }, + "CustomStopWords": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-customstopwords", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "KeySchema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-keyschema", - "DuplicatesAllowed": false, - "ItemType": "KeySchema", - "Required": true, - "Type": "List", + "CustomValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-customvalue", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "Projection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-projection", - "Required": true, - "Type": "Projection", - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.PointInTimeRecoverySpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html", - "Properties": { - "PointInTimeRecoveryEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html#cfn-dynamodb-table-pointintimerecoveryspecification-pointintimerecoveryenabled", - "PrimitiveType": "Boolean", + "DatasetsColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-datasetscolumns", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.Projection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html", - "Properties": { - "NonKeyAttributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-nonkeyatt", - "DuplicatesAllowed": true, - "PrimitiveItemType": "String", + }, + "DateAddValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-dateaddvalue", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "ProjectionType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-projtype", + "DateTimeFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-datetimeformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.ProvisionedThroughput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html", - "Properties": { - "ReadCapacityUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-readcapacityunits", - "PrimitiveType": "Long", - "Required": true, + }, + "DateTimeParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-datetimeparameters", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "WriteCapacityUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-writecapacityunits", - "PrimitiveType": "Long", - "Required": true, + "DeleteOtherRows": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-deleteotherrows", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.SSESpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html", - "Properties": { - "KMSMasterKeyId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-kmsmasterkeyid", + }, + "Delimiter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-delimiter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SSEEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-sseenabled", - "PrimitiveType": "Boolean", - "Required": true, + "EndPattern": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-endpattern", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "SSEType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-ssetype", + "EndPosition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-endposition", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.StreamSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html", - "Properties": { - "StreamViewType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html#cfn-dynamodb-streamspecification-streamviewtype", + }, + "EndValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-endvalue", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.TimeToLiveSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html", - "Properties": { - "AttributeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-attributename", + }, + "ExpandContractions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-expandcontractions", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Enabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-enabled", - "PrimitiveType": "Boolean", - "Required": true, + "Exponent": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-exponent", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::CapacityReservation.TagSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html", - "Properties": { - "ResourceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-resourcetype", + }, + "FalseString": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-falsestring", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-tags", - "ItemType": "Tag", + "GroupByAggFunctionOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-groupbyaggfunctionoptions", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::CarrierGateway.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html#cfn-ec2-carriergateway-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", + }, + "GroupByColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-groupbycolumns", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.CertificateAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html", - "Properties": { - "ClientRootCertificateChainArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html#cfn-ec2-clientvpnendpoint-certificateauthenticationrequest-clientrootcertificatechainarn", + }, + "HiddenColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-hiddencolumns", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.ClientAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html", - "Properties": { - "ActiveDirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-activedirectory", + }, + "IgnoreCase": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-ignorecase", + "PrimitiveType": "String", "Required": false, - "Type": "DirectoryServiceAuthenticationRequest", "UpdateType": "Mutable" }, - "FederatedAuthentication": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-federatedauthentication", + "IncludeInSplit": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-includeinsplit", + "PrimitiveType": "String", "Required": false, - "Type": "FederatedAuthenticationRequest", "UpdateType": "Mutable" }, - "MutualAuthentication": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-mutualauthentication", + "Input": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-input", + "PrimitiveType": "Json", "Required": false, - "Type": "CertificateAuthenticationRequest", "UpdateType": "Mutable" }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-type", + "Interval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-interval", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.ConnectionLogOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html", - "Properties": { - "CloudwatchLogGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchloggroup", + }, + "IsText": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-istext", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CloudwatchLogStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchlogstream", + "JoinKeys": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-joinkeys", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Enabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-enabled", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.DirectoryServiceAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html", - "Properties": { - "DirectoryId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html#cfn-ec2-clientvpnendpoint-directoryserviceauthenticationrequest-directoryid", + "JoinType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-jointype", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.FederatedAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html", - "Properties": { - "SAMLProviderArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-samlproviderarn", + }, + "LeftColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-leftcolumns", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "SelfServiceSAMLProviderArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-selfservicesamlproviderarn", + "Limit": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-limit", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.TagSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html", - "Properties": { - "ResourceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-resourcetype", + }, + "LowerBound": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-lowerbound", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-tags", - "ItemType": "Tag", - "Required": true, - "Type": "List", + "MapType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-maptype", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::EC2Fleet.CapacityReservationOptionsRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html", - "Properties": { - "UsageStrategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html#cfn-ec2-ec2fleet-capacityreservationoptionsrequest-usagestrategy", + }, + "ModeType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-modetype", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.FleetLaunchTemplateConfigRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html", - "Properties": { - "LaunchTemplateSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-launchtemplatespecification", + "UpdateType": "Mutable" + }, + "MultiLine": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-multiline", + "PrimitiveType": "Boolean", "Required": false, - "Type": "FleetLaunchTemplateSpecificationRequest", - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "Overrides": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-overrides", - "ItemType": "FleetLaunchTemplateOverridesRequest", + "NumRows": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-numrows", + "PrimitiveType": "String", "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.FleetLaunchTemplateOverridesRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html", - "Properties": { - "AvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzone", + "UpdateType": "Mutable" + }, + "NumRowsAfter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-numrowsafter", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "InstanceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancetype", + "NumRowsBefore": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-numrowsbefore", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "MaxPrice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-maxprice", + "OrderByColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-orderbycolumn", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "Placement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-placement", + "OrderByColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-orderbycolumns", + "PrimitiveType": "String", "Required": false, - "Type": "Placement", - "UpdateType": "Immutable" - }, - "Priority": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-priority", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "SubnetId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-subnetid", + "Other": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-other", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "WeightedCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-weightedcapacity", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.FleetLaunchTemplateSpecificationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html", - "Properties": { - "LaunchTemplateId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplateid", + "Pattern": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-pattern", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "LaunchTemplateName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatename", + "PatternOption1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-patternoption1", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "Version": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-version", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.OnDemandOptionsRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html", - "Properties": { - "AllocationStrategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-allocationstrategy", + "PatternOption2": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-patternoption2", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" - }, - "CapacityReservationOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-capacityreservationoptions", - "Required": false, - "Type": "CapacityReservationOptionsRequest", - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "MaxTotalPrice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-maxtotalprice", + "PatternOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-patternoptions", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" - }, - "MinTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-mintargetcapacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "SingleAvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleavailabilityzone", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "SingleInstanceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleinstancetype", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.Placement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html", - "Properties": { - "Affinity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-affinity", + "Period": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-period", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "AvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-availabilityzone", + "Position": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-position", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "GroupName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-groupname", + "RemoveAllPunctuation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeallpunctuation", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "HostId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostid", + "RemoveAllQuotes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeallquotes", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "HostResourceGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostresourcegrouparn", + "RemoveAllWhitespace": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeallwhitespace", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" - }, - "PartitionNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-partitionnumber", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "SpreadDomain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-spreaddomain", + "RemoveCustomCharacters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removecustomcharacters", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "Tenancy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-tenancy", + "RemoveCustomValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removecustomvalue", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.SpotOptionsRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html", - "Properties": { - "AllocationStrategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-allocationstrategy", + "UpdateType": "Mutable" + }, + "RemoveLeadingAndTrailingPunctuation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeleadingandtrailingpunctuation", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "InstanceInterruptionBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instanceinterruptionbehavior", + "RemoveLeadingAndTrailingQuotes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeleadingandtrailingquotes", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "InstancePoolsToUseCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instancepoolstousecount", - "PrimitiveType": "Integer", + "RemoveLeadingAndTrailingWhitespace": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeleadingandtrailingwhitespace", + "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "MaxTotalPrice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-maxtotalprice", + "RemoveLetters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeletters", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "MinTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-mintargetcapacity", - "PrimitiveType": "Integer", + "RemoveNumbers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removenumbers", + "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "SingleAvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleavailabilityzone", - "PrimitiveType": "Boolean", + "RemoveSourceColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removesourcecolumn", + "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "SingleInstanceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleinstancetype", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.TagSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html", - "Properties": { - "ResourceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-resourcetype", + "RemoveSpecialCharacters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removespecialcharacters", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.TargetCapacitySpecificationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html", - "Properties": { - "DefaultTargetCapacityType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-defaulttargetcapacitytype", + "RightColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-rightcolumns", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OnDemandTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-ondemandtargetcapacity", - "PrimitiveType": "Integer", + "SampleSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-samplesize", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SpotTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-spottargetcapacity", - "PrimitiveType": "Integer", + "SampleType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sampletype", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TotalTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-totaltargetcapacity", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.AssociationParameter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html", - "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-key", + "SecondInput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-secondinput", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-value", + "SecondaryInputs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-secondaryinputs", "DuplicatesAllowed": true, - "PrimitiveItemType": "String", - "Required": true, + "ItemType": "SecondaryInput", + "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.BlockDeviceMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html", - "Properties": { - "DeviceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-devicename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" }, - "Ebs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-ebs", + "SheetIndexes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sheetindexes", + "PrimitiveItemType": "Integer", "Required": false, - "Type": "Ebs", + "Type": "List", "UpdateType": "Mutable" }, - "NoDevice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-nodevice", + "SheetNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sheetnames", + "PrimitiveItemType": "String", "Required": false, - "Type": "NoDevice", + "Type": "List", "UpdateType": "Mutable" }, - "VirtualName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-virtualname", + "SourceColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.CpuOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html", - "Properties": { - "CoreCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-corecount", - "PrimitiveType": "Integer", + }, + "SourceColumn1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumn1", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ThreadsPerCore": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-threadspercore", - "PrimitiveType": "Integer", + "SourceColumn2": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumn2", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.CreditSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html", - "Properties": { - "CPUCredits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html#cfn-ec2-instance-creditspecification-cpucredits", + }, + "SourceColumns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumns", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.Ebs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html", - "Properties": { - "DeleteOnTermination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-deleteontermination", - "PrimitiveType": "Boolean", + }, + "StartColumnIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startcolumnindex", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Encrypted": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-encrypted", - "PrimitiveType": "Boolean", + "StartPattern": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startpattern", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Iops": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-iops", - "PrimitiveType": "Integer", + "StartPosition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startposition", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KmsKeyId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-instance-ebs-kmskeyid", + "StartValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startvalue", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "SnapshotId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-snapshotid", + "StemmingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stemmingmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "VolumeSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumesize", - "PrimitiveType": "Integer", + "StepCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stepcount", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "VolumeType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumetype", + "StepIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stepindex", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.ElasticGpuSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html", - "Properties": { - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html#cfn-ec2-instance-elasticgpuspecification-type", + }, + "StopWordsMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stopwordsmode", "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.ElasticInferenceAccelerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html", - "Properties": { - "Count": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-count", - "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-type", + "Strategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-strategy", "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.HibernationOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html", - "Properties": { - "Configured": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html#cfn-ec2-instance-hibernationoptions-configured", - "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.InstanceIpv6Address": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html", - "Properties": { - "Ipv6Address": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html#cfn-ec2-instance-instanceipv6address-ipv6address", + }, + "TargetColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetcolumn", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.LaunchTemplateSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html", - "Properties": { - "LaunchTemplateId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplateid", + }, + "TargetColumnNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetcolumnnames", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LaunchTemplateName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplatename", + "TargetDateFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetdateformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Version": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-version", + "TargetIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetindex", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.LicenseSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html", - "Properties": { - "LicenseConfigurationArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html#cfn-ec2-instance-licensespecification-licenseconfigurationarn", + }, + "TimeZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-timezone", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.NetworkInterface": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html", - "Properties": { - "AssociatePublicIpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-associatepubip", - "PrimitiveType": "Boolean", + }, + "TokenizerPattern": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-tokenizerpattern", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DeleteOnTermination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-delete", - "PrimitiveType": "Boolean", + "TrueString": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-truestring", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-description", + "UdfLang": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-udflang", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DeviceIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-deviceindex", + "Units": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-units", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "GroupSet": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-groupset", - "DuplicatesAllowed": true, - "PrimitiveItemType": "String", + "UnpivotColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-unpivotcolumn", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "Ipv6AddressCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresscount", - "PrimitiveType": "Integer", + "UpperBound": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-upperbound", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Ipv6Addresses": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresses", - "DuplicatesAllowed": true, - "ItemType": "InstanceIpv6Address", + "UseNewDataFrame": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-usenewdataframe", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "NetworkInterfaceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-network-iface", + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-value", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PrivateIpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddress", + "Value1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-value1", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PrivateIpAddresses": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddresses", - "DuplicatesAllowed": true, - "ItemType": "PrivateIpAddressSpecification", + "Value2": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-value2", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "SecondaryPrivateIpAddressCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-secondprivateip", - "PrimitiveType": "Integer", + "ValueColumn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-valuecolumn", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SubnetId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-subnetid", + "ViewFrame": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-viewframe", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::EC2::Instance.NoDevice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html", - "Properties": {} - }, - "AWS::EC2::Instance.PrivateIpAddressSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html", + "AWS::DataBrew::Recipe.RecipeStep": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipestep.html", "Properties": { - "Primary": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary", - "PrimitiveType": "Boolean", + "Action": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipestep.html#cfn-databrew-recipe-recipestep-action", "Required": true, + "Type": "Action", "UpdateType": "Mutable" }, - "PrivateIpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.SsmAssociation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html", - "Properties": { - "AssociationParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-associationparameters", - "DuplicatesAllowed": true, - "ItemType": "AssociationParameter", + "ConditionExpressions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipestep.html#cfn-databrew-recipe-recipestep-conditionexpressions", + "ItemType": "ConditionExpression", "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "DocumentName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-documentname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" } } }, - "AWS::EC2::Instance.Volume": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html", + "AWS::DataBrew::Recipe.S3Location": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-s3location.html", "Properties": { - "Device": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-device", + "Bucket": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-s3location.html#cfn-databrew-recipe-s3location-bucket", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "VolumeId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-volumeid", + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-s3location.html#cfn-databrew-recipe-s3location-key", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::EC2::LaunchTemplate.BlockDeviceMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html", + "AWS::DataBrew::Recipe.SecondaryInput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-secondaryinput.html", "Properties": { - "DeviceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-devicename", - "PrimitiveType": "String", + "DataCatalogInputDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-secondaryinput.html#cfn-databrew-recipe-secondaryinput-datacataloginputdefinition", "Required": false, + "Type": "DataCatalogInputDefinition", "UpdateType": "Mutable" }, - "Ebs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs", + "S3InputDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-secondaryinput.html#cfn-databrew-recipe-secondaryinput-s3inputdefinition", "Required": false, - "Type": "Ebs", + "Type": "S3Location", + "UpdateType": "Mutable" + } + } + }, + "AWS::DataPipeline::Pipeline.Field": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-key", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" }, - "NoDevice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-nodevice", + "RefValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-refvalue", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "VirtualName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-virtualname", + "StringValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-stringvalue", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::EC2::LaunchTemplate.CapacityReservationSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html", + "AWS::DataPipeline::Pipeline.ParameterAttribute": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html", "Properties": { - "CapacityReservationPreference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationpreference", + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-key", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "CapacityReservationTarget": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationtarget", - "Required": false, - "Type": "CapacityReservationTarget", + "StringValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-stringvalue", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::EC2::LaunchTemplate.CapacityReservationTarget": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html", + "AWS::DataPipeline::Pipeline.ParameterObject": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html", "Properties": { - "CapacityReservationId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html#cfn-ec2-launchtemplate-capacityreservationtarget-capacityreservationid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" + "Attributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-attributes", + "DuplicatesAllowed": true, + "ItemType": "ParameterAttribute", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-id", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DataPipeline::Pipeline.ParameterValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html", + "Properties": { + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-id", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "StringValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-stringvalue", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DataPipeline::Pipeline.PipelineObject": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html", + "Properties": { + "Fields": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-fields", + "DuplicatesAllowed": true, + "ItemType": "Field", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-id", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DataPipeline::Pipeline.PipelineTag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-key", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-value", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DirectoryService::MicrosoftAD.VpcSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html", + "Properties": { + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-subnetids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "VpcId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-vpcid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DirectoryService::SimpleAD.VpcSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html", + "Properties": { + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-subnetids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "VpcId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-vpcid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.AttributeDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html", + "Properties": { + "AttributeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "AttributeType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename-attributetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.GlobalSecondaryIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html", + "Properties": { + "IndexName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "KeySchema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-keyschema", + "DuplicatesAllowed": false, + "ItemType": "KeySchema", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Projection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-projection", + "Required": true, + "Type": "Projection", + "UpdateType": "Mutable" + }, + "ProvisionedThroughput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-provisionedthroughput", + "Required": false, + "Type": "ProvisionedThroughput", + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.KeySchema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html", + "Properties": { + "AttributeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-attributename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "KeyType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-keytype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.LocalSecondaryIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html", + "Properties": { + "IndexName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-indexname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "KeySchema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-keyschema", + "DuplicatesAllowed": false, + "ItemType": "KeySchema", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Projection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-projection", + "Required": true, + "Type": "Projection", + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.PointInTimeRecoverySpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html", + "Properties": { + "PointInTimeRecoveryEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html#cfn-dynamodb-table-pointintimerecoveryspecification-pointintimerecoveryenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.Projection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html", + "Properties": { + "NonKeyAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-nonkeyatt", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "ProjectionType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-projtype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.ProvisionedThroughput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html", + "Properties": { + "ReadCapacityUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-readcapacityunits", + "PrimitiveType": "Long", + "Required": true, + "UpdateType": "Mutable" + }, + "WriteCapacityUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-writecapacityunits", + "PrimitiveType": "Long", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.SSESpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html", + "Properties": { + "KMSMasterKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-kmsmasterkeyid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SSEEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-sseenabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + }, + "SSEType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-ssetype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.StreamSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html", + "Properties": { + "StreamViewType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html#cfn-dynamodb-streamspecification-streamviewtype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.TimeToLiveSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html", + "Properties": { + "AttributeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-attributename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-enabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::CapacityReservation.TagSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html", + "Properties": { + "ResourceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-resourcetype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::CarrierGateway.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html#cfn-ec2-carriergateway-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.CertificateAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html", + "Properties": { + "ClientRootCertificateChainArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html#cfn-ec2-clientvpnendpoint-certificateauthenticationrequest-clientrootcertificatechainarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.ClientAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html", + "Properties": { + "ActiveDirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-activedirectory", + "Required": false, + "Type": "DirectoryServiceAuthenticationRequest", + "UpdateType": "Mutable" + }, + "FederatedAuthentication": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-federatedauthentication", + "Required": false, + "Type": "FederatedAuthenticationRequest", + "UpdateType": "Mutable" + }, + "MutualAuthentication": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-mutualauthentication", + "Required": false, + "Type": "CertificateAuthenticationRequest", + "UpdateType": "Mutable" + }, + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.ClientConnectOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html", + "Properties": { + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html#cfn-ec2-clientvpnendpoint-clientconnectoptions-enabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + }, + "LambdaFunctionArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html#cfn-ec2-clientvpnendpoint-clientconnectoptions-lambdafunctionarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.ConnectionLogOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html", + "Properties": { + "CloudwatchLogGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchloggroup", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "CloudwatchLogStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchlogstream", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-enabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.DirectoryServiceAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html", + "Properties": { + "DirectoryId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html#cfn-ec2-clientvpnendpoint-directoryserviceauthenticationrequest-directoryid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.FederatedAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html", + "Properties": { + "SAMLProviderArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-samlproviderarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SelfServiceSAMLProviderArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-selfservicesamlproviderarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.TagSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html", + "Properties": { + "ResourceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-resourcetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-tags", + "ItemType": "Tag", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::EC2Fleet.CapacityReservationOptionsRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html", + "Properties": { + "UsageStrategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html#cfn-ec2-ec2fleet-capacityreservationoptionsrequest-usagestrategy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.FleetLaunchTemplateConfigRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html", + "Properties": { + "LaunchTemplateSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-launchtemplatespecification", + "Required": false, + "Type": "FleetLaunchTemplateSpecificationRequest", + "UpdateType": "Immutable" + }, + "Overrides": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-overrides", + "ItemType": "FleetLaunchTemplateOverridesRequest", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.FleetLaunchTemplateOverridesRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html", + "Properties": { + "AvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzone", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "InstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancetype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "MaxPrice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-maxprice", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Placement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-placement", + "Required": false, + "Type": "Placement", + "UpdateType": "Immutable" + }, + "Priority": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-priority", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Immutable" + }, + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-subnetid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "WeightedCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-weightedcapacity", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.FleetLaunchTemplateSpecificationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html", + "Properties": { + "LaunchTemplateId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplateid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "LaunchTemplateName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Version": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-version", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.OnDemandOptionsRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html", + "Properties": { + "AllocationStrategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-allocationstrategy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "CapacityReservationOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-capacityreservationoptions", + "Required": false, + "Type": "CapacityReservationOptionsRequest", + "UpdateType": "Immutable" + }, + "MaxTotalPrice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-maxtotalprice", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "MinTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-mintargetcapacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "SingleAvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleavailabilityzone", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "SingleInstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleinstancetype", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.Placement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html", + "Properties": { + "Affinity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-affinity", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "AvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-availabilityzone", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "GroupName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-groupname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "HostId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "HostResourceGroupArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostresourcegrouparn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "PartitionNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-partitionnumber", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "SpreadDomain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-spreaddomain", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tenancy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-tenancy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.SpotOptionsRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html", + "Properties": { + "AllocationStrategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-allocationstrategy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "InstanceInterruptionBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instanceinterruptionbehavior", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "InstancePoolsToUseCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instancepoolstousecount", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "MaxTotalPrice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-maxtotalprice", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "MinTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-mintargetcapacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "SingleAvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleavailabilityzone", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "SingleInstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleinstancetype", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.TagSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html", + "Properties": { + "ResourceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-resourcetype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.TargetCapacitySpecificationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html", + "Properties": { + "DefaultTargetCapacityType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-defaulttargetcapacitytype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "OnDemandTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-ondemandtargetcapacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "SpotTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-spottargetcapacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "TotalTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-totaltargetcapacity", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.AssociationParameter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-key", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-value", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.BlockDeviceMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html", + "Properties": { + "DeviceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-devicename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Ebs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-ebs", + "Required": false, + "Type": "Ebs", + "UpdateType": "Mutable" + }, + "NoDevice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-nodevice", + "Required": false, + "Type": "NoDevice", + "UpdateType": "Mutable" + }, + "VirtualName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-virtualname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.CpuOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html", + "Properties": { + "CoreCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-corecount", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ThreadsPerCore": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-threadspercore", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.CreditSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html", + "Properties": { + "CPUCredits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html#cfn-ec2-instance-creditspecification-cpucredits", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.Ebs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html", + "Properties": { + "DeleteOnTermination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-deleteontermination", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "Encrypted": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-encrypted", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "Iops": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-iops", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "KmsKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-instance-ebs-kmskeyid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "SnapshotId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-snapshotid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VolumeSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumesize", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "VolumeType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumetype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.ElasticGpuSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html", + "Properties": { + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html#cfn-ec2-instance-elasticgpuspecification-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.ElasticInferenceAccelerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html", + "Properties": { + "Count": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-count", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.HibernationOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html", + "Properties": { + "Configured": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html#cfn-ec2-instance-hibernationoptions-configured", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.InstanceIpv6Address": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html", + "Properties": { + "Ipv6Address": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html#cfn-ec2-instance-instanceipv6address-ipv6address", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.LaunchTemplateSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html", + "Properties": { + "LaunchTemplateId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplateid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "LaunchTemplateName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplatename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Version": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-version", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.LicenseSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html", + "Properties": { + "LicenseConfigurationArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html#cfn-ec2-instance-licensespecification-licenseconfigurationarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.NetworkInterface": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html", + "Properties": { + "AssociatePublicIpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-associatepubip", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "DeleteOnTermination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-delete", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DeviceIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-deviceindex", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "GroupSet": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-groupset", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Ipv6AddressCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresscount", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Ipv6Addresses": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresses", + "DuplicatesAllowed": true, + "ItemType": "InstanceIpv6Address", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "NetworkInterfaceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-network-iface", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "PrivateIpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddress", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "PrivateIpAddresses": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddresses", + "DuplicatesAllowed": true, + "ItemType": "PrivateIpAddressSpecification", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "SecondaryPrivateIpAddressCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-secondprivateip", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-subnetid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.NoDevice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html", + "Properties": {} + }, + "AWS::EC2::Instance.PrivateIpAddressSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html", + "Properties": { + "Primary": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + }, + "PrivateIpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.SsmAssociation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html", + "Properties": { + "AssociationParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-associationparameters", + "DuplicatesAllowed": true, + "ItemType": "AssociationParameter", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "DocumentName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-documentname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.Volume": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html", + "Properties": { + "Device": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-device", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "VolumeId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-volumeid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::LaunchTemplate.BlockDeviceMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html", + "Properties": { + "DeviceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-devicename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Ebs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs", + "Required": false, + "Type": "Ebs", + "UpdateType": "Mutable" + }, + "NoDevice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-nodevice", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VirtualName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-virtualname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::LaunchTemplate.CapacityReservationSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html", + "Properties": { + "CapacityReservationPreference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationpreference", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "CapacityReservationTarget": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationtarget", + "Required": false, + "Type": "CapacityReservationTarget", + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::LaunchTemplate.CapacityReservationTarget": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html", + "Properties": { + "CapacityReservationId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html#cfn-ec2-launchtemplate-capacityreservationtarget-capacityreservationid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" }, "CapacityReservationResourceGroupArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html#cfn-ec2-launchtemplate-capacityreservationtarget-capacityreservationresourcegrouparn", @@ -13858,6 +15093,17 @@ } } }, + "AWS::EC2::LaunchTemplate.EnclaveOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-enclaveoptions.html", + "Properties": { + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-enclaveoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-enclaveoptions-enabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::EC2::LaunchTemplate.HibernationOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-hibernationoptions.html", "Properties": { @@ -13968,6 +15214,12 @@ "Type": "List", "UpdateType": "Mutable" }, + "EnclaveOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-enclaveoptions", + "Required": false, + "Type": "EnclaveOptions", + "UpdateType": "Mutable" + }, "HibernationOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-hibernationoptions", "Required": false, @@ -18522,52 +19774,52 @@ } }, "AWS::ElasticLoadBalancingV2::Listener.Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html", "Properties": { "AuthenticateCognitoConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig", "Required": false, "Type": "AuthenticateCognitoConfig", "UpdateType": "Mutable" }, "AuthenticateOidcConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig", "Required": false, "Type": "AuthenticateOidcConfig", "UpdateType": "Mutable" }, "FixedResponseConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig", "Required": false, "Type": "FixedResponseConfig", "UpdateType": "Mutable" }, "ForwardConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig", "Required": false, "Type": "ForwardConfig", "UpdateType": "Mutable" }, "Order": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-order", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-order", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "RedirectConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig", "Required": false, "Type": "RedirectConfig", "UpdateType": "Mutable" }, "TargetGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-targetgrouparn", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-targetgrouparn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-type", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-type", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" @@ -18579,7 +19831,6 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-authenticationrequestextraparams", - "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -18605,7 +19856,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-sessiontimeout", - "PrimitiveType": "Long", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, @@ -18634,7 +19885,6 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-authenticationrequestextraparams", - "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -18684,7 +19934,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-sessiontimeout", - "PrimitiveType": "Long", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, @@ -18703,10 +19953,10 @@ } }, "AWS::ElasticLoadBalancingV2::Listener.Certificate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.html", "Properties": { "CertificateArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html#cfn-elasticloadbalancingv2-listener-certificates-certificatearn", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.html#cfn-elasticloadbalancingv2-listener-certificate-certificatearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" @@ -20876,7 +22126,7 @@ "ConnectionProperties": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectionproperties", "PrimitiveType": "Json", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "ConnectionType": { @@ -20992,6 +22242,12 @@ "AWS::Glue::Crawler.S3Target": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html", "Properties": { + "ConnectionName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html#cfn-glue-crawler-s3target-connectionname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "Exclusions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html#cfn-glue-crawler-s3target-exclusions", "PrimitiveItemType": "String", @@ -21119,9 +22375,44 @@ } } }, + "AWS::Glue::Database.DataLakePrincipal": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-datalakeprincipal.html", + "Properties": { + "DataLakePrincipalIdentifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-datalakeprincipal.html#cfn-glue-database-datalakeprincipal-datalakeprincipalidentifier", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::Glue::Database.DatabaseIdentifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseidentifier.html", + "Properties": { + "CatalogId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseidentifier.html#cfn-glue-database-databaseidentifier-catalogid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DatabaseName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseidentifier.html#cfn-glue-database-databaseidentifier-databasename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Glue::Database.DatabaseInput": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html", "Properties": { + "CreateTableDefaultPermissions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-createtabledefaultpermissions", + "ItemType": "PrincipalPrivileges", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "Description": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-description", "PrimitiveType": "String", @@ -21145,6 +22436,30 @@ "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" + }, + "TargetDatabase": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-targetdatabase", + "Required": false, + "Type": "DatabaseIdentifier", + "UpdateType": "Mutable" + } + } + }, + "AWS::Glue::Database.PrincipalPrivileges": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-principalprivileges.html", + "Properties": { + "Permissions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-principalprivileges.html#cfn-glue-database-principalprivileges-permissions", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Principal": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-principalprivileges.html#cfn-glue-database-principalprivileges-principal", + "Required": false, + "Type": "DataLakePrincipal", + "UpdateType": "Mutable" } } }, @@ -21275,6 +22590,40 @@ } } }, + "AWS::Glue::MLTransform.MLUserDataEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption-mluserdataencryption.html", + "Properties": { + "KmsKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption-mluserdataencryption.html#cfn-glue-mltransform-transformencryption-mluserdataencryption-kmskeyid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "MLUserDataEncryptionMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption-mluserdataencryption.html#cfn-glue-mltransform-transformencryption-mluserdataencryption-mluserdataencryptionmode", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::Glue::MLTransform.TransformEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption.html", + "Properties": { + "MLUserDataEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption.html#cfn-glue-mltransform-transformencryption-mluserdataencryption", + "Required": false, + "Type": "MLUserDataEncryption", + "UpdateType": "Mutable" + }, + "TaskRunSecurityConfigurationName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption.html#cfn-glue-mltransform-transformencryption-taskrunsecurityconfigurationname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Glue::MLTransform.TransformParameters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformparameters.html", "Properties": { @@ -21484,6 +22833,63 @@ } } }, + "AWS::Glue::Schema.Registry": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-registry.html", + "Properties": { + "Arn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-registry.html#cfn-glue-schema-registry-arn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-registry.html#cfn-glue-schema-registry-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::Glue::Schema.SchemaVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-schemaversion.html", + "Properties": { + "IsLatest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-schemaversion.html#cfn-glue-schema-schemaversion-islatest", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "VersionNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-schemaversion.html#cfn-glue-schema-schemaversion-versionnumber", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::Glue::SchemaVersion.Schema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html", + "Properties": { + "RegistryName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html#cfn-glue-schemaversion-schema-registryname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "SchemaArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html#cfn-glue-schemaversion-schema-schemaarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "SchemaName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html#cfn-glue-schemaversion-schema-schemaname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::Glue::SecurityConfiguration.CloudWatchEncryption": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-securityconfiguration-cloudwatchencryption.html", "Properties": { @@ -21733,6 +23139,29 @@ } } }, + "AWS::Glue::Table.TableIdentifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html", + "Properties": { + "CatalogId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html#cfn-glue-table-tableidentifier-catalogid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DatabaseName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html#cfn-glue-table-tableidentifier-databasename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html#cfn-glue-table-tableidentifier-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Glue::Table.TableInput": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html", "Properties": { @@ -21785,6 +23214,12 @@ "Required": false, "UpdateType": "Mutable" }, + "TargetTable": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-targettable", + "Required": false, + "Type": "TableIdentifier", + "UpdateType": "Mutable" + }, "ViewExpandedText": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-viewexpandedtext", "PrimitiveType": "String", @@ -24285,6 +25720,17 @@ } } }, + "AWS::IoT::TopicRuleDestination.HttpUrlDestinationSummary": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicruledestination-httpurldestinationsummary.html", + "Properties": { + "ConfirmationUrl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicruledestination-httpurldestinationsummary.html#cfn-iot-topicruledestination-httpurldestinationsummary-confirmationurl", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::IoTAnalytics::Channel.ChannelStorage": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-channel-channelstorage.html", "Properties": { @@ -29459,6 +30905,29 @@ } } }, + "AWS::Lambda::CodeSigningConfig.AllowedPublishers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-allowedpublishers.html", + "Properties": { + "SigningProfileVersionArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-allowedpublishers.html#cfn-lambda-codesigningconfig-allowedpublishers-signingprofileversionarns", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::Lambda::CodeSigningConfig.CodeSigningPolicies": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-codesigningpolicies.html", + "Properties": { + "UntrustedArtifactOnDeployment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-codesigningpolicies.html#cfn-lambda-codesigningconfig-codesigningpolicies-untrustedartifactondeployment", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Lambda::EventInvokeConfig.DestinationConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-eventinvokeconfig-destinationconfig.html", "Properties": { @@ -30694,4585 +32163,5400 @@ "AvailBlankingImage": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availblanking.html#cfn-medialive-channel-availblanking-availblankingimage", "Required": false, - "Type": "InputLocation", + "Type": "InputLocation", + "UpdateType": "Mutable" + }, + "State": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availblanking.html#cfn-medialive-channel-availblanking-state", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.AvailConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availconfiguration.html", + "Properties": { + "AvailSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availconfiguration.html#cfn-medialive-channel-availconfiguration-availsettings", + "Required": false, + "Type": "AvailSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.AvailSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html", + "Properties": { + "Scte35SpliceInsert": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35spliceinsert", + "Required": false, + "Type": "Scte35SpliceInsert", + "UpdateType": "Mutable" + }, + "Scte35TimeSignalApos": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35timesignalapos", + "Required": false, + "Type": "Scte35TimeSignalApos", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.BlackoutSlate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html", + "Properties": { + "BlackoutSlateImage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-blackoutslateimage", + "Required": false, + "Type": "InputLocation", + "UpdateType": "Mutable" + }, + "NetworkEndBlackout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackout", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "NetworkEndBlackoutImage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackoutimage", + "Required": false, + "Type": "InputLocation", + "UpdateType": "Mutable" + }, + "NetworkId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "State": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-state", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.BurnInDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html", + "Properties": { + "Alignment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-alignment", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "BackgroundColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundcolor", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "BackgroundOpacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundopacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Font": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-font", + "Required": false, + "Type": "InputLocation", + "UpdateType": "Mutable" + }, + "FontColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontcolor", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FontOpacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontopacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "FontResolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontresolution", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "FontSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontsize", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "OutlineColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinecolor", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "OutlineSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinesize", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ShadowColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowcolor", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ShadowOpacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowopacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ShadowXOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowxoffset", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ShadowYOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowyoffset", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "TeletextGridControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-teletextgridcontrol", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "XPosition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-xposition", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "YPosition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-yposition", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.CaptionDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html", + "Properties": { + "CaptionSelectorName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-captionselectorname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-destinationsettings", + "Required": false, + "Type": "CaptionDestinationSettings", + "UpdateType": "Mutable" + }, + "LanguageCode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagecode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "LanguageDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagedescription", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.CaptionDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html", + "Properties": { + "AribDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-aribdestinationsettings", + "Required": false, + "Type": "AribDestinationSettings", + "UpdateType": "Mutable" + }, + "BurnInDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-burnindestinationsettings", + "Required": false, + "Type": "BurnInDestinationSettings", + "UpdateType": "Mutable" + }, + "DvbSubDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-dvbsubdestinationsettings", + "Required": false, + "Type": "DvbSubDestinationSettings", + "UpdateType": "Mutable" + }, + "EbuTtDDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ebuttddestinationsettings", + "Required": false, + "Type": "EbuTtDDestinationSettings", + "UpdateType": "Mutable" + }, + "EmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddeddestinationsettings", + "Required": false, + "Type": "EmbeddedDestinationSettings", + "UpdateType": "Mutable" + }, + "EmbeddedPlusScte20DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddedplusscte20destinationsettings", + "Required": false, + "Type": "EmbeddedPlusScte20DestinationSettings", + "UpdateType": "Mutable" + }, + "RtmpCaptionInfoDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-rtmpcaptioninfodestinationsettings", + "Required": false, + "Type": "RtmpCaptionInfoDestinationSettings", + "UpdateType": "Mutable" + }, + "Scte20PlusEmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte20plusembeddeddestinationsettings", + "Required": false, + "Type": "Scte20PlusEmbeddedDestinationSettings", + "UpdateType": "Mutable" + }, + "Scte27DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte27destinationsettings", + "Required": false, + "Type": "Scte27DestinationSettings", + "UpdateType": "Mutable" + }, + "SmpteTtDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-smptettdestinationsettings", + "Required": false, + "Type": "SmpteTtDestinationSettings", + "UpdateType": "Mutable" + }, + "TeletextDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-teletextdestinationsettings", + "Required": false, + "Type": "TeletextDestinationSettings", + "UpdateType": "Mutable" + }, + "TtmlDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ttmldestinationsettings", + "Required": false, + "Type": "TtmlDestinationSettings", + "UpdateType": "Mutable" + }, + "WebvttDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-webvttdestinationsettings", + "Required": false, + "Type": "WebvttDestinationSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.CaptionLanguageMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html", + "Properties": { + "CaptionChannel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-captionchannel", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "LanguageCode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagecode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "LanguageDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagedescription", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.CaptionSelector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html", + "Properties": { + "LanguageCode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-languagecode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-selectorsettings", + "Required": false, + "Type": "CaptionSelectorSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.CaptionSelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html", + "Properties": { + "AribSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-aribsourcesettings", + "Required": false, + "Type": "AribSourceSettings", + "UpdateType": "Mutable" + }, + "DvbSubSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-dvbsubsourcesettings", + "Required": false, + "Type": "DvbSubSourceSettings", + "UpdateType": "Mutable" + }, + "EmbeddedSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-embeddedsourcesettings", + "Required": false, + "Type": "EmbeddedSourceSettings", + "UpdateType": "Mutable" + }, + "Scte20SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte20sourcesettings", + "Required": false, + "Type": "Scte20SourceSettings", "UpdateType": "Mutable" }, - "State": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availblanking.html#cfn-medialive-channel-availblanking-state", - "PrimitiveType": "String", + "Scte27SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte27sourcesettings", "Required": false, + "Type": "Scte27SourceSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.AvailConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availconfiguration.html", - "Properties": { - "AvailSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availconfiguration.html#cfn-medialive-channel-availconfiguration-availsettings", + }, + "TeletextSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-teletextsourcesettings", "Required": false, - "Type": "AvailSettings", + "Type": "TeletextSourceSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.AvailSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html", + "AWS::MediaLive::Channel.ColorSpacePassthroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-colorspacepassthroughsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.DvbNitSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html", "Properties": { - "Scte35SpliceInsert": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35spliceinsert", + "NetworkId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkid", + "PrimitiveType": "Integer", "Required": false, - "Type": "Scte35SpliceInsert", "UpdateType": "Mutable" }, - "Scte35TimeSignalApos": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35timesignalapos", + "NetworkName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RepInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-repinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "Scte35TimeSignalApos", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.BlackoutSlate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html", + "AWS::MediaLive::Channel.DvbSdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html", "Properties": { - "BlackoutSlateImage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-blackoutslateimage", - "Required": false, - "Type": "InputLocation", - "UpdateType": "Mutable" - }, - "NetworkEndBlackout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackout", + "OutputSdt": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-outputsdt", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NetworkEndBlackoutImage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackoutimage", + "RepInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-repinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "InputLocation", "UpdateType": "Mutable" }, - "NetworkId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkid", + "ServiceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-servicename", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "State": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-state", + "ServiceProviderName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-serviceprovidername", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.BurnInDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html", + "AWS::MediaLive::Channel.DvbSubDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html", "Properties": { "Alignment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-alignment", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-alignment", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "BackgroundColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundcolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "BackgroundOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundopacity", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "Font": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-font", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-font", "Required": false, "Type": "InputLocation", "UpdateType": "Mutable" }, "FontColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontcolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "FontOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontopacity", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "FontResolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontresolution", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontresolution", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "FontSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontsize", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontsize", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "OutlineColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinecolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinecolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "OutlineSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinesize", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinesize", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "ShadowColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowcolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "ShadowOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowopacity", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "ShadowXOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowxoffset", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowxoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "ShadowYOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowyoffset", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowyoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "TeletextGridControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-teletextgridcontrol", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-teletextgridcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "XPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-xposition", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-xposition", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "YPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-yposition", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-yposition", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.CaptionDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html", + "AWS::MediaLive::Channel.DvbSubSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html", "Properties": { - "CaptionSelectorName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-captionselectorname", + "Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html#cfn-medialive-channel-dvbsubsourcesettings-pid", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.DvbTdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html", + "Properties": { + "RepInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html#cfn-medialive-channel-dvbtdtsettings-repinterval", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.Eac3Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html", + "Properties": { + "AttenuationControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-attenuationcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-destinationsettings", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitrate", + "PrimitiveType": "Double", "Required": false, - "Type": "CaptionDestinationSettings", "UpdateType": "Mutable" }, - "LanguageCode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagecode", + "BitstreamMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitstreammode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LanguageDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagedescription", + "CodingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-codingmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-name", + "DcFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dcfilter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.CaptionDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html", - "Properties": { - "AribDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-aribdestinationsettings", + }, + "Dialnorm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dialnorm", + "PrimitiveType": "Integer", "Required": false, - "Type": "AribDestinationSettings", "UpdateType": "Mutable" }, - "BurnInDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-burnindestinationsettings", + "DrcLine": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcline", + "PrimitiveType": "String", "Required": false, - "Type": "BurnInDestinationSettings", "UpdateType": "Mutable" }, - "DvbSubDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-dvbsubdestinationsettings", + "DrcRf": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcrf", + "PrimitiveType": "String", "Required": false, - "Type": "DvbSubDestinationSettings", "UpdateType": "Mutable" }, - "EbuTtDDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ebuttddestinationsettings", + "LfeControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfecontrol", + "PrimitiveType": "String", "Required": false, - "Type": "EbuTtDDestinationSettings", "UpdateType": "Mutable" }, - "EmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddeddestinationsettings", + "LfeFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfefilter", + "PrimitiveType": "String", "Required": false, - "Type": "EmbeddedDestinationSettings", "UpdateType": "Mutable" }, - "EmbeddedPlusScte20DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddedplusscte20destinationsettings", + "LoRoCenterMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorocentermixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "EmbeddedPlusScte20DestinationSettings", "UpdateType": "Mutable" }, - "RtmpCaptionInfoDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-rtmpcaptioninfodestinationsettings", + "LoRoSurroundMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorosurroundmixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "RtmpCaptionInfoDestinationSettings", "UpdateType": "Mutable" }, - "Scte20PlusEmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte20plusembeddeddestinationsettings", + "LtRtCenterMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtcentermixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "Scte20PlusEmbeddedDestinationSettings", "UpdateType": "Mutable" }, - "Scte27DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte27destinationsettings", + "LtRtSurroundMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtsurroundmixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "Scte27DestinationSettings", "UpdateType": "Mutable" }, - "SmpteTtDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-smptettdestinationsettings", + "MetadataControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-metadatacontrol", + "PrimitiveType": "String", "Required": false, - "Type": "SmpteTtDestinationSettings", "UpdateType": "Mutable" }, - "TeletextDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-teletextdestinationsettings", + "PassthroughControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-passthroughcontrol", + "PrimitiveType": "String", "Required": false, - "Type": "TeletextDestinationSettings", "UpdateType": "Mutable" }, - "TtmlDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ttmldestinationsettings", + "PhaseControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-phasecontrol", + "PrimitiveType": "String", "Required": false, - "Type": "TtmlDestinationSettings", "UpdateType": "Mutable" }, - "WebvttDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-webvttdestinationsettings", + "StereoDownmix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-stereodownmix", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SurroundExMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundexmode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SurroundMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundmode", + "PrimitiveType": "String", "Required": false, - "Type": "WebvttDestinationSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.CaptionLanguageMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html", + "AWS::MediaLive::Channel.EbuTtDDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html", "Properties": { - "CaptionChannel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-captionchannel", - "PrimitiveType": "Integer", + "FillLineGap": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-filllinegap", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LanguageCode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagecode", + "FontFamily": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-fontfamily", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LanguageDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagedescription", + "StyleControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-stylecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.CaptionSelector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html", + "AWS::MediaLive::Channel.EmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddeddestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.EmbeddedPlusScte20DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedplusscte20destinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.EmbeddedSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html", "Properties": { - "LanguageCode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-languagecode", + "Convert608To708": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-convert608to708", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-name", + "Scte20Detection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-scte20detection", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-selectorsettings", + "Source608ChannelNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608channelnumber", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Source608TrackNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608tracknumber", + "PrimitiveType": "Integer", "Required": false, - "Type": "CaptionSelectorSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.CaptionSelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html", + "AWS::MediaLive::Channel.EncoderSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html", "Properties": { - "AribSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-aribsourcesettings", + "AudioDescriptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-audiodescriptions", + "ItemType": "AudioDescription", "Required": false, - "Type": "AribSourceSettings", + "Type": "List", "UpdateType": "Mutable" }, - "DvbSubSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-dvbsubsourcesettings", + "AvailBlanking": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availblanking", "Required": false, - "Type": "DvbSubSourceSettings", + "Type": "AvailBlanking", "UpdateType": "Mutable" }, - "EmbeddedSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-embeddedsourcesettings", + "AvailConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availconfiguration", "Required": false, - "Type": "EmbeddedSourceSettings", + "Type": "AvailConfiguration", "UpdateType": "Mutable" }, - "Scte20SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte20sourcesettings", + "BlackoutSlate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-blackoutslate", "Required": false, - "Type": "Scte20SourceSettings", + "Type": "BlackoutSlate", "UpdateType": "Mutable" }, - "Scte27SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte27sourcesettings", + "CaptionDescriptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-captiondescriptions", + "ItemType": "CaptionDescription", "Required": false, - "Type": "Scte27SourceSettings", + "Type": "List", "UpdateType": "Mutable" }, - "TeletextSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-teletextsourcesettings", + "FeatureActivations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-featureactivations", "Required": false, - "Type": "TeletextSourceSettings", + "Type": "FeatureActivations", + "UpdateType": "Mutable" + }, + "GlobalConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-globalconfiguration", + "Required": false, + "Type": "GlobalConfiguration", + "UpdateType": "Mutable" + }, + "NielsenConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-nielsenconfiguration", + "Required": false, + "Type": "NielsenConfiguration", + "UpdateType": "Mutable" + }, + "OutputGroups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-outputgroups", + "ItemType": "OutputGroup", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "TimecodeConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-timecodeconfig", + "Required": false, + "Type": "TimecodeConfig", + "UpdateType": "Mutable" + }, + "VideoDescriptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-videodescriptions", + "ItemType": "VideoDescription", + "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.ColorSpacePassthroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-colorspacepassthroughsettings.html", - "Properties": {} + "AWS::MediaLive::Channel.FeatureActivations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html", + "Properties": { + "InputPrepareScheduleActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html#cfn-medialive-channel-featureactivations-inputpreparescheduleactions", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } }, - "AWS::MediaLive::Channel.DvbNitSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html", + "AWS::MediaLive::Channel.FecOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html", "Properties": { - "NetworkId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkid", + "ColumnDepth": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-columndepth", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "NetworkName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkname", + "IncludeFec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-includefec", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RepInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-repinterval", + "RowLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-rowlength", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.Fmp4HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html", + "Properties": { + "AudioRenditionSets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-audiorenditionsets", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "NielsenId3Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-nielsenid3behavior", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TimedMetadataBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-timedmetadatabehavior", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.FrameCaptureGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html", + "Properties": { + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html#cfn-medialive-channel-framecapturegroupsettings-destination", + "Required": false, + "Type": "OutputLocationRef", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.FrameCaptureOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html", + "Properties": { + "NameModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html#cfn-medialive-channel-framecaptureoutputsettings-namemodifier", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.FrameCaptureSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html", + "Properties": { + "CaptureInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureinterval", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "CaptureIntervalUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureintervalunits", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.GlobalConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html", + "Properties": { + "InitialAudioGain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-initialaudiogain", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" + }, + "InputEndAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputendaction", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "InputLossBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputlossbehavior", + "Required": false, + "Type": "InputLossBehavior", + "UpdateType": "Mutable" + }, + "OutputLockingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputlockingmode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "OutputTimingSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputtimingsource", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SupportLowFramerateInputs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-supportlowframerateinputs", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.DvbSdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html", + "AWS::MediaLive::Channel.H264ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html", "Properties": { - "OutputSdt": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-outputsdt", - "PrimitiveType": "String", + "ColorSpacePassthroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-colorspacepassthroughsettings", "Required": false, + "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "RepInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-repinterval", - "PrimitiveType": "Integer", + "Rec601Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec601settings", "Required": false, + "Type": "Rec601Settings", "UpdateType": "Mutable" }, - "ServiceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-servicename", - "PrimitiveType": "String", + "Rec709Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec709settings", "Required": false, + "Type": "Rec709Settings", "UpdateType": "Mutable" - }, - "ServiceProviderName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-serviceprovidername", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.H264FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html", + "Properties": { + "TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html#cfn-medialive-channel-h264filtersettings-temporalfiltersettings", "Required": false, + "Type": "TemporalFilterSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.DvbSubDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html", + "AWS::MediaLive::Channel.H264Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html", "Properties": { - "Alignment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-alignment", + "AdaptiveQuantization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-adaptivequantization", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BackgroundColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundcolor", + "AfdSignaling": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-afdsignaling", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BackgroundOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundopacity", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bitrate", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Font": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-font", + "BufFillPct": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-buffillpct", + "PrimitiveType": "Integer", "Required": false, - "Type": "InputLocation", "UpdateType": "Mutable" }, - "FontColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontcolor", - "PrimitiveType": "String", + "BufSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bufsize", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FontOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontopacity", - "PrimitiveType": "Integer", + "ColorMetadata": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colormetadata", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FontResolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontresolution", - "PrimitiveType": "Integer", + "ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colorspacesettings", "Required": false, + "Type": "H264ColorSpaceSettings", "UpdateType": "Mutable" }, - "FontSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontsize", + "EntropyEncoding": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-entropyencoding", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OutlineColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinecolor", + "FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-filtersettings", + "Required": false, + "Type": "H264FilterSettings", + "UpdateType": "Mutable" + }, + "FixedAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-fixedafd", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OutlineSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinesize", - "PrimitiveType": "Integer", + "FlickerAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-flickeraq", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ShadowColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowcolor", + "ForceFieldPictures": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-forcefieldpictures", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ShadowOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowopacity", - "PrimitiveType": "Integer", + "FramerateControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratecontrol", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ShadowXOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowxoffset", + "FramerateDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratedenominator", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ShadowYOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowyoffset", + "FramerateNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratenumerator", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "TeletextGridControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-teletextgridcontrol", + "GopBReference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopbreference", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "XPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-xposition", + "GopClosedCadence": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopclosedcadence", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "YPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-yposition", + "GopNumBFrames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopnumbframes", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.DvbSubSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html", - "Properties": { - "Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html#cfn-medialive-channel-dvbsubsourcesettings-pid", - "PrimitiveType": "Integer", + }, + "GopSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsize", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.DvbTdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html", - "Properties": { - "RepInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html#cfn-medialive-channel-dvbtdtsettings-repinterval", - "PrimitiveType": "Integer", + }, + "GopSizeUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsizeunits", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Eac3Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html", - "Properties": { - "AttenuationControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-attenuationcontrol", + }, + "Level": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-level", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitrate", - "PrimitiveType": "Double", + "LookAheadRateControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-lookaheadratecontrol", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BitstreamMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitstreammode", - "PrimitiveType": "String", + "MaxBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-maxbitrate", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "CodingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-codingmode", - "PrimitiveType": "String", + "MinIInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-miniinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "DcFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dcfilter", + "NumRefFrames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-numrefframes", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ParControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Dialnorm": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dialnorm", + "ParDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-pardenominator", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "DrcLine": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcline", - "PrimitiveType": "String", + "ParNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parnumerator", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "DrcRf": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcrf", + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-profile", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LfeControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfecontrol", + "QualityLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qualitylevel", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LfeFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfefilter", - "PrimitiveType": "String", + "QvbrQualityLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qvbrqualitylevel", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "LoRoCenterMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorocentermixlevel", - "PrimitiveType": "Double", + "RateControlMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-ratecontrolmode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LoRoSurroundMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorosurroundmixlevel", - "PrimitiveType": "Double", + "ScanType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scantype", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LtRtCenterMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtcentermixlevel", - "PrimitiveType": "Double", + "SceneChangeDetect": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scenechangedetect", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LtRtSurroundMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtsurroundmixlevel", - "PrimitiveType": "Double", + "Slices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-slices", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "MetadataControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-metadatacontrol", - "PrimitiveType": "String", + "Softness": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-softness", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "PassthroughControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-passthroughcontrol", + "SpatialAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-spatialaq", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PhaseControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-phasecontrol", + "SubgopLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-subgoplength", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StereoDownmix": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-stereodownmix", + "Syntax": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-syntax", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SurroundExMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundexmode", + "TemporalAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-temporalaq", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SurroundMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundmode", + "TimecodeInsertion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-timecodeinsertion", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.EbuTtDDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html", + "AWS::MediaLive::Channel.H265ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html", "Properties": { - "FillLineGap": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-filllinegap", - "PrimitiveType": "String", + "ColorSpacePassthroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-colorspacepassthroughsettings", "Required": false, + "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "FontFamily": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-fontfamily", - "PrimitiveType": "String", + "Hdr10Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-hdr10settings", "Required": false, + "Type": "Hdr10Settings", "UpdateType": "Mutable" }, - "StyleControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-stylecontrol", - "PrimitiveType": "String", + "Rec601Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec601settings", + "Required": false, + "Type": "Rec601Settings", + "UpdateType": "Mutable" + }, + "Rec709Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec709settings", "Required": false, + "Type": "Rec709Settings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.EmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddeddestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.EmbeddedPlusScte20DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedplusscte20destinationsettings.html", - "Properties": {} + "AWS::MediaLive::Channel.H265FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html", + "Properties": { + "TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html#cfn-medialive-channel-h265filtersettings-temporalfiltersettings", + "Required": false, + "Type": "TemporalFilterSettings", + "UpdateType": "Mutable" + } + } }, - "AWS::MediaLive::Channel.EmbeddedSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html", + "AWS::MediaLive::Channel.H265Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html", "Properties": { - "Convert608To708": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-convert608to708", + "AdaptiveQuantization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-adaptivequantization", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Scte20Detection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-scte20detection", + "AfdSignaling": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-afdsignaling", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Source608ChannelNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608channelnumber", + "AlternativeTransferFunction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-alternativetransferfunction", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bitrate", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Source608TrackNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608tracknumber", + "BufSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bufsize", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.EncoderSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html", - "Properties": { - "AudioDescriptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-audiodescriptions", - "ItemType": "AudioDescription", + }, + "ColorMetadata": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colormetadata", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "AvailBlanking": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availblanking", + "ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colorspacesettings", "Required": false, - "Type": "AvailBlanking", + "Type": "H265ColorSpaceSettings", "UpdateType": "Mutable" }, - "AvailConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availconfiguration", + "FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-filtersettings", "Required": false, - "Type": "AvailConfiguration", + "Type": "H265FilterSettings", "UpdateType": "Mutable" }, - "BlackoutSlate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-blackoutslate", + "FixedAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-fixedafd", + "PrimitiveType": "String", "Required": false, - "Type": "BlackoutSlate", "UpdateType": "Mutable" }, - "CaptionDescriptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-captiondescriptions", - "ItemType": "CaptionDescription", + "FlickerAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-flickeraq", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "FeatureActivations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-featureactivations", + "FramerateDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratedenominator", + "PrimitiveType": "Integer", "Required": false, - "Type": "FeatureActivations", "UpdateType": "Mutable" }, - "GlobalConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-globalconfiguration", + "FramerateNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratenumerator", + "PrimitiveType": "Integer", "Required": false, - "Type": "GlobalConfiguration", "UpdateType": "Mutable" }, - "NielsenConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-nielsenconfiguration", + "GopClosedCadence": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopclosedcadence", + "PrimitiveType": "Integer", "Required": false, - "Type": "NielsenConfiguration", "UpdateType": "Mutable" }, - "OutputGroups": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-outputgroups", - "ItemType": "OutputGroup", + "GopSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsize", + "PrimitiveType": "Double", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "TimecodeConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-timecodeconfig", + "GopSizeUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsizeunits", + "PrimitiveType": "String", "Required": false, - "Type": "TimecodeConfig", "UpdateType": "Mutable" }, - "VideoDescriptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-videodescriptions", - "ItemType": "VideoDescription", + "Level": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-level", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FeatureActivations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html", - "Properties": { - "InputPrepareScheduleActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html#cfn-medialive-channel-featureactivations-inputpreparescheduleactions", + }, + "LookAheadRateControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-lookaheadratecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FecOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html", - "Properties": { - "ColumnDepth": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-columndepth", + }, + "MaxBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-maxbitrate", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "IncludeFec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-includefec", + "MinIInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-miniinterval", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ParDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-pardenominator", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ParNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-parnumerator", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-profile", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RowLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-rowlength", + "QvbrQualityLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-qvbrqualitylevel", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Fmp4HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html", - "Properties": { - "AudioRenditionSets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-audiorenditionsets", + }, + "RateControlMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-ratecontrolmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NielsenId3Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-nielsenid3behavior", + "ScanType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scantype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-timedmetadatabehavior", + "SceneChangeDetect": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scenechangedetect", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FrameCaptureGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html", - "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html#cfn-medialive-channel-framecapturegroupsettings-destination", + }, + "Slices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-slices", + "PrimitiveType": "Integer", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FrameCaptureOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html", - "Properties": { - "NameModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html#cfn-medialive-channel-framecaptureoutputsettings-namemodifier", + }, + "Tier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-tier", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TimecodeInsertion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-timecodeinsertion", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.FrameCaptureSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html", + "AWS::MediaLive::Channel.Hdr10Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html", "Properties": { - "CaptureInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureinterval", + "MaxCll": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxcll", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "CaptureIntervalUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureintervalunits", - "PrimitiveType": "String", + "MaxFall": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxfall", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.GlobalConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html", + "AWS::MediaLive::Channel.HlsAkamaiSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html", "Properties": { - "InitialAudioGain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-initialaudiogain", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-connectionretryinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputEndAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputendaction", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-filecacheduration", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "HttpTransferMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-httptransfermode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "InputLossBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputlossbehavior", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-numretries", + "PrimitiveType": "Integer", "Required": false, - "Type": "InputLossBehavior", "UpdateType": "Mutable" }, - "OutputLockingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputlockingmode", - "PrimitiveType": "String", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-restartdelay", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "OutputTimingSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputtimingsource", + "Salt": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-salt", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SupportLowFramerateInputs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-supportlowframerateinputs", + "Token": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-token", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.H264ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html", + "AWS::MediaLive::Channel.HlsBasicPutSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html", "Properties": { - "ColorSpacePassthroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-colorspacepassthroughsettings", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "Rec601Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec601settings", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, - "Type": "Rec601Settings", "UpdateType": "Mutable" }, - "Rec709Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec709settings", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-numretries", + "PrimitiveType": "Integer", "Required": false, - "Type": "Rec709Settings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H264FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html", - "Properties": { - "TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html#cfn-medialive-channel-h264filtersettings-temporalfiltersettings", + }, + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-restartdelay", + "PrimitiveType": "Integer", "Required": false, - "Type": "TemporalFilterSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.H264Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html", + "AWS::MediaLive::Channel.HlsCdnSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html", "Properties": { - "AdaptiveQuantization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-adaptivequantization", - "PrimitiveType": "String", + "HlsAkamaiSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsakamaisettings", "Required": false, + "Type": "HlsAkamaiSettings", "UpdateType": "Mutable" }, - "AfdSignaling": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-afdsignaling", - "PrimitiveType": "String", + "HlsBasicPutSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsbasicputsettings", "Required": false, + "Type": "HlsBasicPutSettings", "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bitrate", - "PrimitiveType": "Integer", + "HlsMediaStoreSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsmediastoresettings", "Required": false, + "Type": "HlsMediaStoreSettings", "UpdateType": "Mutable" }, - "BufFillPct": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-buffillpct", - "PrimitiveType": "Integer", + "HlsWebdavSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlswebdavsettings", "Required": false, + "Type": "HlsWebdavSettings", "UpdateType": "Mutable" - }, - "BufSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bufsize", - "PrimitiveType": "Integer", + } + } + }, + "AWS::MediaLive::Channel.HlsGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html", + "Properties": { + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-admarkers", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "ColorMetadata": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colormetadata", + "BaseUrlContent": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colorspacesettings", + "BaseUrlContent1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent1", + "PrimitiveType": "String", "Required": false, - "Type": "H264ColorSpaceSettings", "UpdateType": "Mutable" }, - "EntropyEncoding": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-entropyencoding", + "BaseUrlManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-filtersettings", + "BaseUrlManifest1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest1", + "PrimitiveType": "String", "Required": false, - "Type": "H264FilterSettings", "UpdateType": "Mutable" }, - "FixedAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-fixedafd", - "PrimitiveType": "String", + "CaptionLanguageMappings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagemappings", + "ItemType": "CaptionLanguageMapping", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "FlickerAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-flickeraq", + "CaptionLanguageSetting": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagesetting", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ForceFieldPictures": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-forcefieldpictures", + "ClientCache": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-clientcache", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FramerateControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratecontrol", + "CodecSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-codecspecification", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FramerateDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratedenominator", - "PrimitiveType": "Integer", + "ConstantIv": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-constantiv", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FramerateNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratenumerator", - "PrimitiveType": "Integer", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "GopBReference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopbreference", + "DirectoryStructure": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-directorystructure", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "GopClosedCadence": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopclosedcadence", - "PrimitiveType": "Integer", + "EncryptionType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-encryptiontype", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "GopNumBFrames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopnumbframes", - "PrimitiveType": "Integer", + "HlsCdnSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlscdnsettings", "Required": false, + "Type": "HlsCdnSettings", "UpdateType": "Mutable" }, - "GopSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsize", - "PrimitiveType": "Double", + "HlsId3SegmentTagging": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlsid3segmenttagging", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "GopSizeUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsizeunits", + "IFrameOnlyPlaylists": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-iframeonlyplaylists", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Level": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-level", - "PrimitiveType": "String", + "IndexNSegments": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-indexnsegments", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "LookAheadRateControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-lookaheadratecontrol", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-inputlossaction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MaxBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-maxbitrate", - "PrimitiveType": "Integer", + "IvInManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivinmanifest", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MinIInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-miniinterval", - "PrimitiveType": "Integer", + "IvSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivsource", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRefFrames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-numrefframes", + "KeepSegments": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keepsegments", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ParControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parcontrol", + "KeyFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ParDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-pardenominator", - "PrimitiveType": "Integer", + "KeyFormatVersions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformatversions", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ParNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parnumerator", - "PrimitiveType": "Integer", + "KeyProviderSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyprovidersettings", "Required": false, + "Type": "KeyProviderSettings", "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-profile", + "ManifestCompression": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestcompression", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "QualityLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qualitylevel", + "ManifestDurationFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestdurationformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "QvbrQualityLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qvbrqualitylevel", + "MinSegmentLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-minsegmentlength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RateControlMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-ratecontrolmode", + "Mode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-mode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ScanType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scantype", + "OutputSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-outputselection", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SceneChangeDetect": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scenechangedetect", + "ProgramDateTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetime", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Slices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-slices", + "ProgramDateTimePeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetimeperiod", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Softness": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-softness", + "RedundantManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-redundantmanifest", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SegmentLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentlength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SpatialAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-spatialaq", + "SegmentationMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentationmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SubgopLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-subgoplength", - "PrimitiveType": "String", + "SegmentsPerSubdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentspersubdirectory", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Syntax": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-syntax", + "StreamInfResolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-streaminfresolution", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TemporalAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-temporalaq", + "TimedMetadataId3Frame": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3frame", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimecodeInsertion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-timecodeinsertion", + "TimedMetadataId3Period": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3period", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "TimestampDeltaMilliseconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timestampdeltamilliseconds", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "TsFileMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-tsfilemode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.H265ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html", + "AWS::MediaLive::Channel.HlsInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html", "Properties": { - "ColorSpacePassthroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-colorspacepassthroughsettings", + "Bandwidth": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-bandwidth", + "PrimitiveType": "Integer", "Required": false, - "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "Hdr10Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-hdr10settings", + "BufferSegments": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-buffersegments", + "PrimitiveType": "Integer", "Required": false, - "Type": "Hdr10Settings", "UpdateType": "Mutable" }, - "Rec601Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec601settings", + "Retries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retries", + "PrimitiveType": "Integer", "Required": false, - "Type": "Rec601Settings", "UpdateType": "Mutable" }, - "Rec709Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec709settings", - "Required": false, - "Type": "Rec709Settings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H265FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html", - "Properties": { - "TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html#cfn-medialive-channel-h265filtersettings-temporalfiltersettings", + "RetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retryinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "TemporalFilterSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.H265Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html", + "AWS::MediaLive::Channel.HlsMediaStoreSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html", "Properties": { - "AdaptiveQuantization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-adaptivequantization", - "PrimitiveType": "String", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "AfdSignaling": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-afdsignaling", - "PrimitiveType": "String", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "AlternativeTransferFunction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-alternativetransferfunction", + "MediaStoreStorageClass": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-mediastorestorageclass", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bitrate", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-numretries", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "BufSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bufsize", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-restartdelay", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "ColorMetadata": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colormetadata", + } + } + }, + "AWS::MediaLive::Channel.HlsOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html", + "Properties": { + "H265PackagingType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-h265packagingtype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colorspacesettings", + "HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-hlssettings", "Required": false, - "Type": "H265ColorSpaceSettings", + "Type": "HlsSettings", "UpdateType": "Mutable" }, - "FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-filtersettings", + "NameModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-namemodifier", + "PrimitiveType": "String", "Required": false, - "Type": "H265FilterSettings", "UpdateType": "Mutable" }, - "FixedAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-fixedafd", + "SegmentModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-segmentmodifier", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "FlickerAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-flickeraq", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html", + "Properties": { + "AudioOnlyHlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-audioonlyhlssettings", "Required": false, + "Type": "AudioOnlyHlsSettings", "UpdateType": "Mutable" }, - "FramerateDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratedenominator", - "PrimitiveType": "Integer", + "Fmp4HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-fmp4hlssettings", "Required": false, + "Type": "Fmp4HlsSettings", "UpdateType": "Mutable" }, - "FramerateNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratenumerator", - "PrimitiveType": "Integer", + "StandardHlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-standardhlssettings", "Required": false, + "Type": "StandardHlsSettings", "UpdateType": "Mutable" - }, - "GopClosedCadence": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopclosedcadence", + } + } + }, + "AWS::MediaLive::Channel.HlsWebdavSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html", + "Properties": { + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-connectionretryinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "GopSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsize", - "PrimitiveType": "Double", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "GopSizeUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsizeunits", + "HttpTransferMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-httptransfermode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Level": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-level", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "LookAheadRateControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-lookaheadratecontrol", - "PrimitiveType": "String", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-restartdelay", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "MaxBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-maxbitrate", - "PrimitiveType": "Integer", + } + } + }, + "AWS::MediaLive::Channel.InputAttachment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html", + "Properties": { + "AutomaticInputFailoverSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-automaticinputfailoversettings", "Required": false, + "Type": "AutomaticInputFailoverSettings", "UpdateType": "Mutable" }, - "MinIInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-miniinterval", - "PrimitiveType": "Integer", + "InputAttachmentName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputattachmentname", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ParDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-pardenominator", - "PrimitiveType": "Integer", + "InputId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputid", + "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "ParNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-parnumerator", + "InputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputsettings", + "Required": false, + "Type": "InputSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.InputChannelLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html", + "Properties": { + "Gain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-gain", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-profile", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "QvbrQualityLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-qvbrqualitylevel", + "InputChannel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-inputchannel", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "RateControlMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-ratecontrolmode", + } + } + }, + "AWS::MediaLive::Channel.InputLocation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html", + "Properties": { + "PasswordParam": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-passwordparam", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ScanType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scantype", + "Uri": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-uri", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SceneChangeDetect": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scenechangedetect", + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-username", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "Slices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-slices", + } + } + }, + "AWS::MediaLive::Channel.InputLossBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html", + "Properties": { + "BlackFrameMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-blackframemsec", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Tier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-tier", + "InputLossImageColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagecolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimecodeInsertion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-timecodeinsertion", - "PrimitiveType": "String", + "InputLossImageSlate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimageslate", "Required": false, + "Type": "InputLocation", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Hdr10Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html", - "Properties": { - "MaxCll": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxcll", - "PrimitiveType": "Integer", + }, + "InputLossImageType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagetype", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MaxFall": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxfall", + "RepeatFrameMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-repeatframemsec", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsAkamaiSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html", + "AWS::MediaLive::Channel.InputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html", "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-connectionretryinterval", - "PrimitiveType": "Integer", + "AudioSelectors": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-audioselectors", + "ItemType": "AudioSelector", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-filecacheduration", - "PrimitiveType": "Integer", + "CaptionSelectors": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-captionselectors", + "ItemType": "CaptionSelector", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "HttpTransferMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-httptransfermode", + "DeblockFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-deblockfilter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-numretries", - "PrimitiveType": "Integer", + "DenoiseFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-denoisefilter", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-restartdelay", + "FilterStrength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-filterstrength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Salt": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-salt", + "InputFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-inputfilter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Token": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-token", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsBasicPutSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html", - "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-connectionretryinterval", - "PrimitiveType": "Integer", + "NetworkInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-networkinputsettings", "Required": false, + "Type": "NetworkInputSettings", "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-filecacheduration", - "PrimitiveType": "Integer", + "Smpte2038DataPreference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-smpte2038datapreference", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-numretries", - "PrimitiveType": "Integer", + "SourceEndBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-sourceendbehavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-restartdelay", - "PrimitiveType": "Integer", + "VideoSelector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-videoselector", "Required": false, + "Type": "VideoSelector", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsCdnSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html", + "AWS::MediaLive::Channel.InputSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html", "Properties": { - "HlsAkamaiSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsakamaisettings", + "Codec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-codec", + "PrimitiveType": "String", "Required": false, - "Type": "HlsAkamaiSettings", "UpdateType": "Mutable" }, - "HlsBasicPutSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsbasicputsettings", + "MaximumBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-maximumbitrate", + "PrimitiveType": "String", "Required": false, - "Type": "HlsBasicPutSettings", "UpdateType": "Mutable" }, - "HlsMediaStoreSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsmediastoresettings", + "Resolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-resolution", + "PrimitiveType": "String", "Required": false, - "Type": "HlsMediaStoreSettings", "UpdateType": "Mutable" - }, - "HlsWebdavSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlswebdavsettings", + } + } + }, + "AWS::MediaLive::Channel.KeyProviderSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html", + "Properties": { + "StaticKeySettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html#cfn-medialive-channel-keyprovidersettings-statickeysettings", "Required": false, - "Type": "HlsWebdavSettings", + "Type": "StaticKeySettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html", + "AWS::MediaLive::Channel.M2tsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-admarkers", - "PrimitiveItemType": "String", + "AbsentInputAudioBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-absentinputaudiobehavior", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "BaseUrlContent": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent", + "Arib": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-arib", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BaseUrlContent1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent1", + "AribCaptionsPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BaseUrlManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest", + "AribCaptionsPidControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspidcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BaseUrlManifest1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest1", + "AudioBufferModel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiobuffermodel", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CaptionLanguageMappings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagemappings", - "ItemType": "CaptionLanguageMapping", + "AudioFramesPerPes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audioframesperpes", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "CaptionLanguageSetting": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagesetting", + "AudioPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiopids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ClientCache": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-clientcache", + "AudioStreamType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiostreamtype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CodecSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-codecspecification", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-bitrate", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "BufferModel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-buffermodel", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ConstantIv": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-constantiv", + "CcDescriptor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ccdescriptor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-destination", + "DvbNitSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbnitsettings", "Required": false, - "Type": "OutputLocationRef", + "Type": "DvbNitSettings", "UpdateType": "Mutable" }, - "DirectoryStructure": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-directorystructure", - "PrimitiveType": "String", + "DvbSdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsdtsettings", "Required": false, + "Type": "DvbSdtSettings", "UpdateType": "Mutable" }, - "EncryptionType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-encryptiontype", + "DvbSubPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsubpids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "HlsCdnSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlscdnsettings", + "DvbTdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbtdtsettings", "Required": false, - "Type": "HlsCdnSettings", + "Type": "DvbTdtSettings", "UpdateType": "Mutable" }, - "HlsId3SegmentTagging": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlsid3segmenttagging", + "DvbTeletextPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbteletextpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "IFrameOnlyPlaylists": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-iframeonlyplaylists", + "Ebif": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebif", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "IndexNSegments": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-indexnsegments", + "EbpAudioInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpaudiointerval", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EbpLookaheadMs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebplookaheadms", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-inputlossaction", + "EbpPlacement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpplacement", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "IvInManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivinmanifest", + "EcmPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ecmpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "IvSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivsource", + "EsRateInPes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-esrateinpes", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeepSegments": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keepsegments", - "PrimitiveType": "Integer", + "EtvPlatformPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvplatformpid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeyFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformat", + "EtvSignalPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvsignalpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeyFormatVersions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformatversions", - "PrimitiveType": "String", + "FragmentTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-fragmenttime", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "KeyProviderSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyprovidersettings", + "Klv": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klv", + "PrimitiveType": "String", "Required": false, - "Type": "KeyProviderSettings", "UpdateType": "Mutable" }, - "ManifestCompression": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestcompression", + "KlvDataPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klvdatapids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ManifestDurationFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestdurationformat", + "NielsenId3Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nielsenid3behavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MinSegmentLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-minsegmentlength", + "NullPacketBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nullpacketbitrate", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + }, + "PatInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-patinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Mode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-mode", + "PcrControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OutputSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-outputselection", - "PrimitiveType": "String", + "PcrPeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrperiod", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ProgramDateTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetime", + "PcrPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramDateTimePeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetimeperiod", + "PmtInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RedundantManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-redundantmanifest", + "PmtPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentlength", + "ProgramNum": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-programnum", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentationMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentationmode", + "RateMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ratemode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentsPerSubdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentspersubdirectory", - "PrimitiveType": "Integer", + "Scte27Pids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte27pids", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamInfResolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-streaminfresolution", + "Scte35Control": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35control", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Frame": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3frame", + "Scte35Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35pid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Period": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3period", - "PrimitiveType": "Integer", + "SegmentationMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationmarkers", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimestampDeltaMilliseconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timestampdeltamilliseconds", - "PrimitiveType": "Integer", + "SegmentationStyle": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationstyle", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TsFileMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-tsfilemode", - "PrimitiveType": "String", + "SegmentationTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationtime", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html", - "Properties": { - "Bandwidth": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-bandwidth", - "PrimitiveType": "Integer", + }, + "TimedMetadataBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatabehavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BufferSegments": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-buffersegments", - "PrimitiveType": "Integer", + "TimedMetadataPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatapid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Retries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retries", + "TransportStreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-transportstreamid", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retryinterval", - "PrimitiveType": "Integer", + "VideoPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-videopid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsMediaStoreSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html", + "AWS::MediaLive::Channel.M3u8Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html", "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-connectionretryinterval", + "AudioFramesPerPes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audioframesperpes", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-filecacheduration", - "PrimitiveType": "Integer", + "AudioPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audiopids", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MediaStoreStorageClass": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-mediastorestorageclass", + "EcmPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-ecmpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-numretries", - "PrimitiveType": "Integer", + "NielsenId3Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-nielsenid3behavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-restartdelay", + "PatInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-patinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html", - "Properties": { - "H265PackagingType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-h265packagingtype", + }, + "PcrControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-hlssettings", + "PcrPeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrperiod", + "PrimitiveType": "Integer", "Required": false, - "Type": "HlsSettings", "UpdateType": "Mutable" }, - "NameModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-namemodifier", + "PcrPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-segmentmodifier", - "PrimitiveType": "String", + "PmtInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html", - "Properties": { - "AudioOnlyHlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-audioonlyhlssettings", + }, + "PmtPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtpid", + "PrimitiveType": "String", "Required": false, - "Type": "AudioOnlyHlsSettings", "UpdateType": "Mutable" }, - "Fmp4HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-fmp4hlssettings", + "ProgramNum": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-programnum", + "PrimitiveType": "Integer", "Required": false, - "Type": "Fmp4HlsSettings", "UpdateType": "Mutable" }, - "StandardHlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-standardhlssettings", + "Scte35Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35behavior", + "PrimitiveType": "String", "Required": false, - "Type": "StandardHlsSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsWebdavSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html", - "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-connectionretryinterval", - "PrimitiveType": "Integer", + }, + "Scte35Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35pid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-filecacheduration", - "PrimitiveType": "Integer", + }, + "TimedMetadataBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatabehavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "HttpTransferMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-httptransfermode", + "TimedMetadataPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatapid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-numretries", + "TransportStreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-transportstreamid", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-restartdelay", - "PrimitiveType": "Integer", + "VideoPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-videopid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.InputAttachment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html", + "AWS::MediaLive::Channel.MediaPackageGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html", "Properties": { - "AutomaticInputFailoverSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-automaticinputfailoversettings", - "Required": false, - "Type": "AutomaticInputFailoverSettings", - "UpdateType": "Mutable" - }, - "InputAttachmentName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputattachmentname", - "PrimitiveType": "String", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html#cfn-medialive-channel-mediapackagegroupsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" - }, - "InputId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputid", + } + } + }, + "AWS::MediaLive::Channel.MediaPackageOutputDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html", + "Properties": { + "ChannelId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html#cfn-medialive-channel-mediapackageoutputdestinationsettings-channelid", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" - }, - "InputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputsettings", - "Required": false, - "Type": "InputSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.InputChannelLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html", + "AWS::MediaLive::Channel.MediaPackageOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Mp2Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html", "Properties": { - "Gain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-gain", - "PrimitiveType": "Integer", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-bitrate", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "InputChannel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-inputchannel", - "PrimitiveType": "Integer", + "CodingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-codingmode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SampleRate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-samplerate", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.InputLocation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html", + "AWS::MediaLive::Channel.MsSmoothGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html", "Properties": { - "PasswordParam": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-passwordparam", + "AcquisitionPointId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-acquisitionpointid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Uri": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-uri", + "AudioOnlyTimecodeControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-audioonlytimecodecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-username", + "CertificateMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-certificatemode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.InputLossBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html", - "Properties": { - "BlackFrameMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-blackframemsec", + }, + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-connectionretryinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputLossImageColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagecolor", - "PrimitiveType": "String", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "InputLossImageSlate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimageslate", + "EventId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventid", + "PrimitiveType": "String", "Required": false, - "Type": "InputLocation", "UpdateType": "Mutable" }, - "InputLossImageType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagetype", + "EventIdMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventidmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RepeatFrameMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-repeatframemsec", - "PrimitiveType": "Integer", + "EventStopBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventstopbehavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.InputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html", - "Properties": { - "AudioSelectors": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-audioselectors", - "ItemType": "AudioSelector", + }, + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "CaptionSelectors": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-captionselectors", - "ItemType": "CaptionSelector", + "FragmentLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-fragmentlength", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "DeblockFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-deblockfilter", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-inputlossaction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DenoiseFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-denoisefilter", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FilterStrength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-filterstrength", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-restartdelay", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-inputfilter", + "SegmentationMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-segmentationmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NetworkInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-networkinputsettings", + "SendDelayMs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-senddelayms", + "PrimitiveType": "Integer", "Required": false, - "Type": "NetworkInputSettings", "UpdateType": "Mutable" }, - "Smpte2038DataPreference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-smpte2038datapreference", + "SparseTrackType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-sparsetracktype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SourceEndBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-sourceendbehavior", + "StreamManifestBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-streammanifestbehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "VideoSelector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-videoselector", + "TimestampOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffset", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TimestampOffsetMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffsetmode", + "PrimitiveType": "String", "Required": false, - "Type": "VideoSelector", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.InputSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html", + "AWS::MediaLive::Channel.MsSmoothOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html", "Properties": { - "Codec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-codec", + "H265PackagingType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-h265packagingtype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MaximumBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-maximumbitrate", + "NameModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-namemodifier", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.MultiplexGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexgroupsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.MultiplexOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html", + "Properties": { + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html#cfn-medialive-channel-multiplexoutputsettings-destination", + "Required": false, + "Type": "OutputLocationRef", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html", + "Properties": { + "MultiplexId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-multiplexid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Resolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-resolution", + "ProgramName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-programname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.KeyProviderSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html", + "AWS::MediaLive::Channel.NetworkInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html", "Properties": { - "StaticKeySettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html#cfn-medialive-channel-keyprovidersettings-statickeysettings", + "HlsInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-hlsinputsettings", + "Required": false, + "Type": "HlsInputSettings", + "UpdateType": "Mutable" + }, + "ServerValidation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-servervalidation", + "PrimitiveType": "String", "Required": false, - "Type": "StaticKeySettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.M2tsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html", + "AWS::MediaLive::Channel.NielsenConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html", "Properties": { - "AbsentInputAudioBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-absentinputaudiobehavior", + "DistributorId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-distributorid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Arib": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-arib", + "NielsenPcmToId3Tagging": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-nielsenpcmtoid3tagging", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "AribCaptionsPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspid", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.Output": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html", + "Properties": { + "AudioDescriptionNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-audiodescriptionnames", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "AribCaptionsPidControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspidcontrol", - "PrimitiveType": "String", + "CaptionDescriptionNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-captiondescriptionnames", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "AudioBufferModel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiobuffermodel", + "OutputName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AudioFramesPerPes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audioframesperpes", - "PrimitiveType": "Integer", + "OutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputsettings", "Required": false, + "Type": "OutputSettings", "UpdateType": "Mutable" }, - "AudioPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiopids", + "VideoDescriptionName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-videodescriptionname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "AudioStreamType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiostreamtype", + } + } + }, + "AWS::MediaLive::Channel.OutputDestination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html", + "Properties": { + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-bitrate", - "PrimitiveType": "Integer", + "MediaPackageSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-mediapackagesettings", + "ItemType": "MediaPackageOutputDestinationSettings", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "BufferModel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-buffermodel", - "PrimitiveType": "String", + "MultiplexSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-multiplexsettings", "Required": false, + "Type": "MultiplexProgramChannelDestinationSettings", "UpdateType": "Mutable" }, - "CcDescriptor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ccdescriptor", + "Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-settings", + "ItemType": "OutputDestinationSettings", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.OutputDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html", + "Properties": { + "PasswordParam": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-passwordparam", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DvbNitSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbnitsettings", + "StreamName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-streamname", + "PrimitiveType": "String", "Required": false, - "Type": "DvbNitSettings", "UpdateType": "Mutable" }, - "DvbSdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsdtsettings", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-url", + "PrimitiveType": "String", "Required": false, - "Type": "DvbSdtSettings", "UpdateType": "Mutable" }, - "DvbSubPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsubpids", + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-username", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.OutputGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html", + "Properties": { + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-name", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DvbTdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbtdtsettings", + "OutputGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputgroupsettings", "Required": false, - "Type": "DvbTdtSettings", + "Type": "OutputGroupSettings", "UpdateType": "Mutable" }, - "DvbTeletextPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbteletextpid", - "PrimitiveType": "String", + "Outputs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputs", + "ItemType": "Output", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.OutputGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html", + "Properties": { + "ArchiveGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-archivegroupsettings", "Required": false, + "Type": "ArchiveGroupSettings", "UpdateType": "Mutable" }, - "Ebif": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebif", - "PrimitiveType": "String", + "FrameCaptureGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-framecapturegroupsettings", "Required": false, + "Type": "FrameCaptureGroupSettings", "UpdateType": "Mutable" }, - "EbpAudioInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpaudiointerval", - "PrimitiveType": "String", + "HlsGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-hlsgroupsettings", "Required": false, + "Type": "HlsGroupSettings", "UpdateType": "Mutable" }, - "EbpLookaheadMs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebplookaheadms", - "PrimitiveType": "Integer", + "MediaPackageGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mediapackagegroupsettings", "Required": false, + "Type": "MediaPackageGroupSettings", "UpdateType": "Mutable" }, - "EbpPlacement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpplacement", - "PrimitiveType": "String", + "MsSmoothGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mssmoothgroupsettings", "Required": false, + "Type": "MsSmoothGroupSettings", "UpdateType": "Mutable" }, - "EcmPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ecmpid", - "PrimitiveType": "String", + "MultiplexGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-multiplexgroupsettings", "Required": false, + "Type": "MultiplexGroupSettings", "UpdateType": "Mutable" }, - "EsRateInPes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-esrateinpes", - "PrimitiveType": "String", + "RtmpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-rtmpgroupsettings", "Required": false, + "Type": "RtmpGroupSettings", "UpdateType": "Mutable" }, - "EtvPlatformPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvplatformpid", + "UdpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-udpgroupsettings", + "Required": false, + "Type": "UdpGroupSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.OutputLocationRef": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html", + "Properties": { + "DestinationRefId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html#cfn-medialive-channel-outputlocationref-destinationrefid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.OutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html", + "Properties": { + "ArchiveOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-archiveoutputsettings", + "Required": false, + "Type": "ArchiveOutputSettings", + "UpdateType": "Mutable" }, - "EtvSignalPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvsignalpid", - "PrimitiveType": "String", + "FrameCaptureOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-framecaptureoutputsettings", "Required": false, + "Type": "FrameCaptureOutputSettings", "UpdateType": "Mutable" }, - "FragmentTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-fragmenttime", - "PrimitiveType": "Double", + "HlsOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-hlsoutputsettings", "Required": false, + "Type": "HlsOutputSettings", "UpdateType": "Mutable" }, - "Klv": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klv", - "PrimitiveType": "String", + "MediaPackageOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mediapackageoutputsettings", "Required": false, + "Type": "MediaPackageOutputSettings", "UpdateType": "Mutable" }, - "KlvDataPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klvdatapids", - "PrimitiveType": "String", + "MsSmoothOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mssmoothoutputsettings", "Required": false, + "Type": "MsSmoothOutputSettings", "UpdateType": "Mutable" }, - "NielsenId3Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nielsenid3behavior", - "PrimitiveType": "String", + "MultiplexOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-multiplexoutputsettings", "Required": false, + "Type": "MultiplexOutputSettings", "UpdateType": "Mutable" }, - "NullPacketBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nullpacketbitrate", - "PrimitiveType": "Double", + "RtmpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-rtmpoutputsettings", "Required": false, + "Type": "RtmpOutputSettings", "UpdateType": "Mutable" }, - "PatInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-patinterval", - "PrimitiveType": "Integer", + "UdpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-udpoutputsettings", + "Required": false, + "Type": "UdpOutputSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.PassThroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-passthroughsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Rec601Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec601settings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Rec709Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec709settings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.RemixSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html", + "Properties": { + "ChannelMappings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelmappings", + "ItemType": "AudioChannelMapping", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "PcrControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrcontrol", - "PrimitiveType": "String", + "ChannelsIn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsin", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "PcrPeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrperiod", + "ChannelsOut": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsout", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "PcrPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrpid", + } + } + }, + "AWS::MediaLive::Channel.RtmpCaptionInfoDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpcaptioninfodestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.RtmpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html", + "Properties": { + "AuthenticationScheme": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-authenticationscheme", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PmtInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtinterval", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "PmtPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtpid", + "CacheFullBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachefullbehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramNum": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-programnum", + "CacheLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachelength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RateMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ratemode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Scte27Pids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte27pids", + "CaptionData": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-captiondata", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Scte35Control": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35control", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-inputlossaction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Scte35Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35pid", - "PrimitiveType": "String", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-restartdelay", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "SegmentationMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationmarkers", + } + } + }, + "AWS::MediaLive::Channel.RtmpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html", + "Properties": { + "CertificateMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-certificatemode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentationStyle": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationstyle", - "PrimitiveType": "String", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentationTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationtime", - "PrimitiveType": "Double", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "TimedMetadataBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatabehavior", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "TimedMetadataPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatapid", + } + } + }, + "AWS::MediaLive::Channel.Scte20PlusEmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20plusembeddeddestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Scte20SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html", + "Properties": { + "Convert608To708": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-convert608to708", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TransportStreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-transportstreamid", + "Source608ChannelNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-source608channelnumber", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "VideoPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-videopid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.M3u8Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html", + "AWS::MediaLive::Channel.Scte27DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27destinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Scte27SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html", "Properties": { - "AudioFramesPerPes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audioframesperpes", + "Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html#cfn-medialive-channel-scte27sourcesettings-pid", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "AudioPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audiopids", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.Scte35SpliceInsert": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html", + "Properties": { + "AdAvailOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-adavailoffset", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "EcmPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-ecmpid", + "NoRegionalBlackoutFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-noregionalblackoutflag", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NielsenId3Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-nielsenid3behavior", + "WebDeliveryAllowedFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-webdeliveryallowedflag", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "PatInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-patinterval", + } + } + }, + "AWS::MediaLive::Channel.Scte35TimeSignalApos": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html", + "Properties": { + "AdAvailOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-adavailoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "PcrControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrcontrol", + "NoRegionalBlackoutFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-noregionalblackoutflag", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PcrPeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrperiod", - "PrimitiveType": "Integer", + "WebDeliveryAllowedFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-webdeliveryallowedflag", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "PcrPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrpid", + } + } + }, + "AWS::MediaLive::Channel.SmpteTtDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-smptettdestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.StandardHlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html", + "Properties": { + "AudioRenditionSets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-audiorenditionsets", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PmtInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtinterval", - "PrimitiveType": "Integer", + "M3u8Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-m3u8settings", "Required": false, + "Type": "M3u8Settings", "UpdateType": "Mutable" - }, - "PmtPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtpid", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.StaticKeySettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html", + "Properties": { + "KeyProviderServer": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-keyproviderserver", "Required": false, + "Type": "InputLocation", "UpdateType": "Mutable" }, - "ProgramNum": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-programnum", - "PrimitiveType": "Integer", + "StaticKeyValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-statickeyvalue", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "Scte35Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35behavior", + } + } + }, + "AWS::MediaLive::Channel.TeletextDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextdestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.TeletextSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html", + "Properties": { + "PageNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html#cfn-medialive-channel-teletextsourcesettings-pagenumber", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "Scte35Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35pid", + } + } + }, + "AWS::MediaLive::Channel.TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html", + "Properties": { + "PostFilterSharpening": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-postfiltersharpening", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatabehavior", + "Strength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-strength", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "TimedMetadataPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatapid", + } + } + }, + "AWS::MediaLive::Channel.TimecodeConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html", + "Properties": { + "Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-source", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TransportStreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-transportstreamid", + "SyncThreshold": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-syncthreshold", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "VideoPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-videopid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MediaPackageGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html", + "AWS::MediaLive::Channel.TtmlDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html", "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html#cfn-medialive-channel-mediapackagegroupsettings-destination", + "StyleControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html#cfn-medialive-channel-ttmldestinationsettings-stylecontrol", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MediaPackageOutputDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html", + "AWS::MediaLive::Channel.UdpContainerSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html", "Properties": { - "ChannelId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html#cfn-medialive-channel-mediapackageoutputdestinationsettings-channelid", - "PrimitiveType": "String", + "M2tsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html#cfn-medialive-channel-udpcontainersettings-m2tssettings", "Required": false, + "Type": "M2tsSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MediaPackageOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Mp2Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html", + "AWS::MediaLive::Channel.UdpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html", "Properties": { - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-bitrate", - "PrimitiveType": "Double", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-inputlossaction", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CodingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-codingmode", + "TimedMetadataId3Frame": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3frame", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SampleRate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-samplerate", - "PrimitiveType": "Double", + "TimedMetadataId3Period": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3period", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MsSmoothGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html", + "AWS::MediaLive::Channel.UdpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html", "Properties": { - "AcquisitionPointId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-acquisitionpointid", - "PrimitiveType": "String", + "BufferMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-buffermsec", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "AudioOnlyTimecodeControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-audioonlytimecodecontrol", - "PrimitiveType": "String", + "ContainerSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-containersettings", "Required": false, + "Type": "UdpContainerSettings", "UpdateType": "Mutable" }, - "CertificateMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-certificatemode", - "PrimitiveType": "String", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-connectionretryinterval", - "PrimitiveType": "Integer", + "FecOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-fecoutputsettings", "Required": false, + "Type": "FecOutputSettings", "UpdateType": "Mutable" - }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-destination", + } + } + }, + "AWS::MediaLive::Channel.VideoCodecSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html", + "Properties": { + "FrameCaptureSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-framecapturesettings", "Required": false, - "Type": "OutputLocationRef", + "Type": "FrameCaptureSettings", "UpdateType": "Mutable" }, - "EventId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventid", - "PrimitiveType": "String", + "H264Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h264settings", "Required": false, + "Type": "H264Settings", "UpdateType": "Mutable" }, - "EventIdMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventidmode", - "PrimitiveType": "String", + "H265Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h265settings", "Required": false, + "Type": "H265Settings", "UpdateType": "Mutable" - }, - "EventStopBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventstopbehavior", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.VideoDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html", + "Properties": { + "CodecSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-codecsettings", "Required": false, + "Type": "VideoCodecSettings", "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-filecacheduration", + "Height": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-height", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FragmentLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-fragmentlength", - "PrimitiveType": "Integer", + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-name", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-inputlossaction", + "RespondToAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-respondtoafd", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-numretries", - "PrimitiveType": "Integer", + "ScalingBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-scalingbehavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-restartdelay", + "Sharpness": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-sharpness", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentationMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-segmentationmode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SendDelayMs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-senddelayms", + "Width": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-width", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "SparseTrackType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-sparsetracktype", + } + } + }, + "AWS::MediaLive::Channel.VideoSelector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html", + "Properties": { + "ColorSpace": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspace", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamManifestBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-streammanifestbehavior", + "ColorSpaceUsage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspaceusage", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimestampOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffset", - "PrimitiveType": "String", + "SelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-selectorsettings", "Required": false, + "Type": "VideoSelectorSettings", "UpdateType": "Mutable" - }, - "TimestampOffsetMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffsetmode", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.VideoSelectorPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html", + "Properties": { + "Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html#cfn-medialive-channel-videoselectorpid-pid", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MsSmoothOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html", + "AWS::MediaLive::Channel.VideoSelectorProgramId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html", "Properties": { - "H265PackagingType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-h265packagingtype", - "PrimitiveType": "String", + "ProgramId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html#cfn-medialive-channel-videoselectorprogramid-programid", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.VideoSelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html", + "Properties": { + "VideoSelectorPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorpid", "Required": false, + "Type": "VideoSelectorPid", "UpdateType": "Mutable" }, - "NameModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-namemodifier", - "PrimitiveType": "String", + "VideoSelectorProgramId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorprogramid", "Required": false, + "Type": "VideoSelectorProgramId", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MultiplexGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexgroupsettings.html", + "AWS::MediaLive::Channel.WebvttDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-webvttdestinationsettings.html", "Properties": {} }, - "AWS::MediaLive::Channel.MultiplexOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html", + "AWS::MediaLive::Input.InputDestinationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html", "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html#cfn-medialive-channel-multiplexoutputsettings-destination", + "StreamName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html#cfn-medialive-input-inputdestinationrequest-streamname", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html", + "AWS::MediaLive::Input.InputDeviceRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html", "Properties": { - "MultiplexId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-multiplexid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ProgramName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-programname", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html#cfn-medialive-input-inputdevicerequest-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.NetworkInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html", + "AWS::MediaLive::Input.InputDeviceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html", "Properties": { - "HlsInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-hlsinputsettings", - "Required": false, - "Type": "HlsInputSettings", - "UpdateType": "Mutable" - }, - "ServerValidation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-servervalidation", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html#cfn-medialive-input-inputdevicesettings-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.NielsenConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html", + "AWS::MediaLive::Input.InputSourceRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html", "Properties": { - "DistributorId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-distributorid", + "PasswordParam": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-passwordparam", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NielsenPcmToId3Tagging": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-nielsenpcmtoid3tagging", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-url", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-username", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.Output": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html", + "AWS::MediaLive::Input.InputVpcRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html", "Properties": { - "AudioDescriptionNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-audiodescriptionnames", + "SecurityGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-securitygroupids", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" }, - "CaptionDescriptionNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-captiondescriptionnames", + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-subnetids", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "OutputName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputname", + } + } + }, + "AWS::MediaLive::Input.MediaConnectFlowRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html", + "Properties": { + "FlowArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html#cfn-medialive-input-mediaconnectflowrequest-flowarn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "OutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputsettings", - "Required": false, - "Type": "OutputSettings", - "UpdateType": "Mutable" - }, - "VideoDescriptionName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-videodescriptionname", + } + } + }, + "AWS::MediaLive::InputSecurityGroup.InputWhitelistRuleCidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html", + "Properties": { + "Cidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html#cfn-medialive-inputsecuritygroup-inputwhitelistrulecidr-cidr", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.OutputDestination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html", + "AWS::MediaPackage::Asset.EgressEndpoint": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-id", + "PackagingConfigurationId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-packagingconfigurationid", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "MediaPackageSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-mediapackagesettings", - "ItemType": "MediaPackageOutputDestinationSettings", - "Required": false, - "Type": "List", + "Required": true, "UpdateType": "Mutable" }, - "MultiplexSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-multiplexsettings", - "Required": false, - "Type": "MultiplexProgramChannelDestinationSettings", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-url", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" - }, - "Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-settings", - "ItemType": "OutputDestinationSettings", + } + } + }, + "AWS::MediaPackage::Channel.HlsIngest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html", + "Properties": { + "ingestEndpoints": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html#cfn-mediapackage-channel-hlsingest-ingestendpoints", + "ItemType": "IngestEndpoint", "Required": false, "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.OutputDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html", + "AWS::MediaPackage::Channel.IngestEndpoint": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html", "Properties": { - "PasswordParam": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-passwordparam", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-streamname", + "Password": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-password", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-url", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-url", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-username", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-username", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.OutputGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html", + "AWS::MediaPackage::OriginEndpoint.Authorization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html", "Properties": { - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-name", + "CdnIdentifierSecret": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-cdnidentifiersecret", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "OutputGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputgroupsettings", - "Required": false, - "Type": "OutputGroupSettings", + "Required": true, "UpdateType": "Mutable" }, - "Outputs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputs", - "ItemType": "Output", - "Required": false, - "Type": "List", + "SecretsRoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-secretsrolearn", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.OutputGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html", + "AWS::MediaPackage::OriginEndpoint.CmafEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html", "Properties": { - "ArchiveGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-archivegroupsettings", - "Required": false, - "Type": "ArchiveGroupSettings", - "UpdateType": "Mutable" - }, - "FrameCaptureGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-framecapturegroupsettings", + "KeyRotationIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-keyrotationintervalseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "FrameCaptureGroupSettings", "UpdateType": "Mutable" }, - "HlsGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-hlsgroupsettings", - "Required": false, - "Type": "HlsGroupSettings", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-spekekeyprovider", + "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" - }, - "MediaPackageGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mediapackagegroupsettings", + } + } + }, + "AWS::MediaPackage::OriginEndpoint.CmafPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html", + "Properties": { + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-encryption", "Required": false, - "Type": "MediaPackageGroupSettings", + "Type": "CmafEncryption", "UpdateType": "Mutable" }, - "MsSmoothGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mssmoothgroupsettings", + "HlsManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-hlsmanifests", + "ItemType": "HlsManifest", "Required": false, - "Type": "MsSmoothGroupSettings", + "Type": "List", "UpdateType": "Mutable" }, - "MultiplexGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-multiplexgroupsettings", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "MultiplexGroupSettings", "UpdateType": "Mutable" }, - "RtmpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-rtmpgroupsettings", + "SegmentPrefix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentprefix", + "PrimitiveType": "String", "Required": false, - "Type": "RtmpGroupSettings", "UpdateType": "Mutable" }, - "UdpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-udpgroupsettings", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-streamselection", "Required": false, - "Type": "UdpGroupSettings", + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.OutputLocationRef": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html", + "AWS::MediaPackage::OriginEndpoint.DashEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html", "Properties": { - "DestinationRefId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html#cfn-medialive-channel-outputlocationref-destinationrefid", - "PrimitiveType": "String", + "KeyRotationIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-keyrotationintervalseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" + }, + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-spekekeyprovider", + "Required": true, + "Type": "SpekeKeyProvider", + "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.OutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html", + "AWS::MediaPackage::OriginEndpoint.DashPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html", "Properties": { - "ArchiveOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-archiveoutputsettings", - "Required": false, - "Type": "ArchiveOutputSettings", - "UpdateType": "Mutable" - }, - "FrameCaptureOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-framecaptureoutputsettings", - "Required": false, - "Type": "FrameCaptureOutputSettings", - "UpdateType": "Mutable" - }, - "HlsOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-hlsoutputsettings", - "Required": false, - "Type": "HlsOutputSettings", - "UpdateType": "Mutable" - }, - "MediaPackageOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mediapackageoutputsettings", + "AdTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adtriggers", + "PrimitiveItemType": "String", "Required": false, - "Type": "MediaPackageOutputSettings", + "Type": "List", "UpdateType": "Mutable" }, - "MsSmoothOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mssmoothoutputsettings", + "AdsOnDeliveryRestrictions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adsondeliveryrestrictions", + "PrimitiveType": "String", "Required": false, - "Type": "MsSmoothOutputSettings", "UpdateType": "Mutable" }, - "MultiplexOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-multiplexoutputsettings", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-encryption", "Required": false, - "Type": "MultiplexOutputSettings", + "Type": "DashEncryption", "UpdateType": "Mutable" }, - "RtmpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-rtmpoutputsettings", + "ManifestLayout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestlayout", + "PrimitiveType": "String", "Required": false, - "Type": "RtmpOutputSettings", "UpdateType": "Mutable" }, - "UdpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-udpoutputsettings", - "Required": false, - "Type": "UdpOutputSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.PassThroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-passthroughsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Rec601Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec601settings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Rec709Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec709settings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.RemixSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html", - "Properties": { - "ChannelMappings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelmappings", - "ItemType": "AudioChannelMapping", + "ManifestWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestwindowseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "ChannelsIn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsin", + "MinBufferTimeSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minbuffertimeseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ChannelsOut": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsout", + "MinUpdatePeriodSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minupdateperiodseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.RtmpCaptionInfoDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpcaptioninfodestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.RtmpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html", - "Properties": { - "AuthenticationScheme": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-authenticationscheme", - "PrimitiveType": "String", + }, + "PeriodTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-periodtriggers", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "CacheFullBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachefullbehavior", + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-profile", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CacheLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachelength", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmentdurationseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "CaptionData": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-captiondata", + "SegmentTemplateFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmenttemplateformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-inputlossaction", - "PrimitiveType": "String", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-streamselection", "Required": false, + "Type": "StreamSelection", "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-restartdelay", + "SuggestedPresentationDelaySeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-suggestedpresentationdelayseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.RtmpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html", + "AWS::MediaPackage::OriginEndpoint.HlsEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html", "Properties": { - "CertificateMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-certificatemode", + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-constantinitializationvector", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-connectionretryinterval", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-destination", + "EncryptionMethod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-encryptionmethod", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-numretries", + "KeyRotationIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-keyrotationintervalseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Scte20PlusEmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20plusembeddeddestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Scte20SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html", - "Properties": { - "Convert608To708": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-convert608to708", - "PrimitiveType": "String", + }, + "RepeatExtXKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-repeatextxkey", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "Source608ChannelNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-source608channelnumber", - "PrimitiveType": "Integer", - "Required": false, + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-spekekeyprovider", + "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.Scte27DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27destinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Scte27SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html", + "AWS::MediaPackage::OriginEndpoint.HlsManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html", "Properties": { - "Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html#cfn-medialive-channel-scte27sourcesettings-pid", - "PrimitiveType": "Integer", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-admarkers", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Scte35SpliceInsert": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html", - "Properties": { - "AdAvailOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-adavailoffset", - "PrimitiveType": "Integer", + }, + "AdTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adtriggers", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "NoRegionalBlackoutFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-noregionalblackoutflag", + "AdsOnDeliveryRestrictions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adsondeliveryrestrictions", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "WebDeliveryAllowedFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-webdeliveryallowedflag", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-id", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Scte35TimeSignalApos": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html", - "Properties": { - "AdAvailOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-adavailoffset", - "PrimitiveType": "Integer", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "NoRegionalBlackoutFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-noregionalblackoutflag", - "PrimitiveType": "String", + "IncludeIframeOnlyStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-includeiframeonlystream", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "WebDeliveryAllowedFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-webdeliveryallowedflag", + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-manifestname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.SmpteTtDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-smptettdestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.StandardHlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html", - "Properties": { - "AudioRenditionSets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-audiorenditionsets", + }, + "PlaylistType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlisttype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "M3u8Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-m3u8settings", - "Required": false, - "Type": "M3u8Settings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.StaticKeySettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html", - "Properties": { - "KeyProviderServer": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-keyproviderserver", + "PlaylistWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlistwindowseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "InputLocation", "UpdateType": "Mutable" }, - "StaticKeyValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-statickeyvalue", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.TeletextDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextdestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.TeletextSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html", - "Properties": { - "PageNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html#cfn-medialive-channel-teletextsourcesettings-pagenumber", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html", - "Properties": { - "PostFilterSharpening": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-postfiltersharpening", - "PrimitiveType": "String", + "ProgramDateTimeIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-programdatetimeintervalseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Strength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-strength", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-url", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.TimecodeConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html", + "AWS::MediaPackage::OriginEndpoint.HlsPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html", "Properties": { - "Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-source", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-admarkers", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SyncThreshold": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-syncthreshold", - "PrimitiveType": "Integer", + "AdTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adtriggers", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.TtmlDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html", - "Properties": { - "StyleControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html#cfn-medialive-channel-ttmldestinationsettings-stylecontrol", + }, + "AdsOnDeliveryRestrictions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adsondeliveryrestrictions", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.UdpContainerSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html", - "Properties": { - "M2tsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html#cfn-medialive-channel-udpcontainersettings-m2tssettings", + }, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-encryption", "Required": false, - "Type": "M2tsSettings", + "Type": "HlsEncryption", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.UdpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html", - "Properties": { - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-inputlossaction", - "PrimitiveType": "String", + }, + "IncludeIframeOnlyStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-includeiframeonlystream", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Frame": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3frame", + "PlaylistType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlisttype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Period": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3period", + "PlaylistWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlistwindowseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.UdpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html", - "Properties": { - "BufferMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-buffermsec", + }, + "ProgramDateTimeIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-programdatetimeintervalseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ContainerSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-containersettings", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "UdpContainerSettings", "UpdateType": "Mutable" }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-destination", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-streamselection", "Required": false, - "Type": "OutputLocationRef", + "Type": "StreamSelection", "UpdateType": "Mutable" }, - "FecOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-fecoutputsettings", + "UseAudioRenditionGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-useaudiorenditiongroup", + "PrimitiveType": "Boolean", "Required": false, - "Type": "FecOutputSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.VideoCodecSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html", + "AWS::MediaPackage::OriginEndpoint.MssEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html", "Properties": { - "FrameCaptureSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-framecapturesettings", - "Required": false, - "Type": "FrameCaptureSettings", - "UpdateType": "Mutable" - }, - "H264Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h264settings", - "Required": false, - "Type": "H264Settings", - "UpdateType": "Mutable" - }, - "H265Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h265settings", - "Required": false, - "Type": "H265Settings", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html#cfn-mediapackage-originendpoint-mssencryption-spekekeyprovider", + "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.VideoDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html", + "AWS::MediaPackage::OriginEndpoint.MssPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html", "Properties": { - "CodecSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-codecsettings", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-encryption", "Required": false, - "Type": "VideoCodecSettings", + "Type": "MssEncryption", "UpdateType": "Mutable" }, - "Height": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-height", + "ManifestWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-manifestwindowseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-name", - "PrimitiveType": "String", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RespondToAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-respondtoafd", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-streamselection", + "Required": false, + "Type": "StreamSelection", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaPackage::OriginEndpoint.SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html", + "Properties": { + "CertificateArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-certificatearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ScalingBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-scalingbehavior", + "ResourceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-resourceid", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "Sharpness": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-sharpness", - "PrimitiveType": "Integer", - "Required": false, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-rolearn", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" }, - "Width": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-width", - "PrimitiveType": "Integer", - "Required": false, + "SystemIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-systemids", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-url", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.VideoSelector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html", + "AWS::MediaPackage::OriginEndpoint.StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html", "Properties": { - "ColorSpace": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspace", - "PrimitiveType": "String", + "MaxVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-maxvideobitspersecond", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ColorSpaceUsage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspaceusage", - "PrimitiveType": "String", + "MinVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-minvideobitspersecond", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-selectorsettings", + "StreamOrder": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-streamorder", + "PrimitiveType": "String", "Required": false, - "Type": "VideoSelectorSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.VideoSelectorPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html", + "AWS::MediaPackage::PackagingConfiguration.CmafEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html", "Properties": { - "Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html#cfn-medialive-channel-videoselectorpid-pid", - "PrimitiveType": "Integer", - "Required": false, + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html#cfn-mediapackage-packagingconfiguration-cmafencryption-spekekeyprovider", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.VideoSelectorProgramId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html", + "AWS::MediaPackage::PackagingConfiguration.CmafPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html", "Properties": { - "ProgramId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html#cfn-medialive-channel-videoselectorprogramid-programid", - "PrimitiveType": "Integer", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-encryption", "Required": false, + "Type": "CmafEncryption", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.VideoSelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html", - "Properties": { - "VideoSelectorPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorpid", - "Required": false, - "Type": "VideoSelectorPid", + }, + "HlsManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-hlsmanifests", + "ItemType": "HlsManifest", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "VideoSelectorProgramId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorprogramid", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "VideoSelectorProgramId", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.WebvttDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-webvttdestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Input.InputDestinationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html", + "AWS::MediaPackage::PackagingConfiguration.DashEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html", "Properties": { - "StreamName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html#cfn-medialive-input-inputdestinationrequest-streamname", - "PrimitiveType": "String", - "Required": false, + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html#cfn-mediapackage-packagingconfiguration-dashencryption-spekekeyprovider", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Input.InputDeviceRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html", + "AWS::MediaPackage::PackagingConfiguration.DashManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html#cfn-medialive-input-inputdevicerequest-id", + "ManifestLayout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestlayout", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Input.InputDeviceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html", - "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html#cfn-medialive-input-inputdevicesettings-id", + }, + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Input.InputSourceRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html", - "Properties": { - "PasswordParam": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-passwordparam", - "PrimitiveType": "String", + }, + "MinBufferTimeSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-minbuffertimeseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-url", + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-profile", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-username", - "PrimitiveType": "String", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-streamselection", "Required": false, + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Input.InputVpcRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html", + "AWS::MediaPackage::PackagingConfiguration.DashPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html", "Properties": { - "SecurityGroupIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-securitygroupids", - "PrimitiveItemType": "String", - "Required": false, + "DashManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-dashmanifests", + "ItemType": "DashManifest", + "Required": true, "Type": "List", "UpdateType": "Mutable" }, - "SubnetIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-subnetids", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-encryption", + "Required": false, + "Type": "DashEncryption", + "UpdateType": "Mutable" + }, + "PeriodTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-periodtriggers", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Input.MediaConnectFlowRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html", - "Properties": { - "FlowArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html#cfn-medialive-input-mediaconnectflowrequest-flowarn", - "PrimitiveType": "String", + }, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::InputSecurityGroup.InputWhitelistRuleCidr": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html", - "Properties": { - "Cidr": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html#cfn-medialive-inputsecuritygroup-inputwhitelistrulecidr-cidr", + }, + "SegmentTemplateFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmenttemplateformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::Asset.EgressEndpoint": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html", + "AWS::MediaPackage::PackagingConfiguration.HlsEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html", "Properties": { - "PackagingConfigurationId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-packagingconfigurationid", + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-constantinitializationvector", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-url", + "EncryptionMethod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-encryptionmethod", "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::Channel.HlsIngest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html", - "Properties": { - "ingestEndpoints": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html#cfn-mediapackage-channel-hlsingest-ingestendpoints", - "ItemType": "IngestEndpoint", "Required": false, - "Type": "List", + "UpdateType": "Mutable" + }, + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-spekekeyprovider", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::Channel.IngestEndpoint": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html", + "AWS::MediaPackage::PackagingConfiguration.HlsManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-id", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-admarkers", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Password": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-password", - "PrimitiveType": "String", + "IncludeIframeOnlyStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-includeiframeonlystream", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-url", + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-manifestname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-username", - "PrimitiveType": "String", + "ProgramDateTimeIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-programdatetimeintervalseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::OriginEndpoint.Authorization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html", - "Properties": { - "CdnIdentifierSecret": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-cdnidentifiersecret", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" }, - "SecretsRoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-secretsrolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::OriginEndpoint.CmafEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html", - "Properties": { - "KeyRotationIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-keyrotationintervalseconds", - "PrimitiveType": "Integer", + "RepeatExtXKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-repeatextxkey", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-spekekeyprovider", - "Required": true, - "Type": "SpekeKeyProvider", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-streamselection", + "Required": false, + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.CmafPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html", + "AWS::MediaPackage::PackagingConfiguration.HlsPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html", "Properties": { "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-encryption", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-encryption", "Required": false, - "Type": "CmafEncryption", + "Type": "HlsEncryption", "UpdateType": "Mutable" }, "HlsManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-hlsmanifests", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-hlsmanifests", "ItemType": "HlsManifest", - "Required": false, + "Required": true, "Type": "List", "UpdateType": "Mutable" }, "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentdurationseconds", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-segmentdurationseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentPrefix": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentprefix", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-streamselection", + "UseAudioRenditionGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-useaudiorenditiongroup", + "PrimitiveType": "Boolean", "Required": false, - "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.DashEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html", + "AWS::MediaPackage::PackagingConfiguration.MssEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html", "Properties": { - "KeyRotationIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-keyrotationintervalseconds", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-spekekeyprovider", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html#cfn-mediapackage-packagingconfiguration-mssencryption-spekekeyprovider", "Required": true, - "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.DashPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html", + "AWS::MediaPackage::PackagingConfiguration.MssManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html", "Properties": { - "AdTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adtriggers", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "AdsOnDeliveryRestrictions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adsondeliveryrestrictions", + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-manifestname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-encryption", - "Required": false, - "Type": "DashEncryption", - "UpdateType": "Mutable" - }, - "ManifestLayout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestlayout", - "PrimitiveType": "String", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-streamselection", "Required": false, + "Type": "StreamSelection", "UpdateType": "Mutable" - }, - "ManifestWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestwindowseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::MediaPackage::PackagingConfiguration.MssPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html", + "Properties": { + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-encryption", "Required": false, + "Type": "MssEncryption", "UpdateType": "Mutable" }, - "MinBufferTimeSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minbuffertimeseconds", - "PrimitiveType": "Integer", - "Required": false, + "MssManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-mssmanifests", + "ItemType": "MssManifest", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "MinUpdatePeriodSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minupdateperiodseconds", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-segmentdurationseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" + } + } + }, + "AWS::MediaPackage::PackagingConfiguration.SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html", + "Properties": { + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" }, - "PeriodTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-periodtriggers", + "SystemIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-systemids", "PrimitiveItemType": "String", - "Required": false, + "Required": true, "Type": "List", "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-profile", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-url", "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaPackage::PackagingConfiguration.StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html", + "Properties": { + "MaxVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-maxvideobitspersecond", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmentdurationseconds", + "MinVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-minvideobitspersecond", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentTemplateFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmenttemplateformat", + "StreamOrder": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-streamorder", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-streamselection", - "Required": false, - "Type": "StreamSelection", + } + } + }, + "AWS::MediaPackage::PackagingGroup.Authorization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html", + "Properties": { + "CdnIdentifierSecret": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-cdnidentifiersecret", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" }, - "SuggestedPresentationDelaySeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-suggestedpresentationdelayseconds", - "PrimitiveType": "Integer", - "Required": false, + "SecretsRoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-secretsrolearn", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.HlsEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html", + "AWS::MediaStore::Container.CorsRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html", "Properties": { - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-constantinitializationvector", - "PrimitiveType": "String", + "AllowedHeaders": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "EncryptionMethod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-encryptionmethod", - "PrimitiveType": "String", + "AllowedMethods": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods", + "PrimitiveItemType": "String", "Required": false, - "UpdateType": "Mutable" + "Type": "List", + "UpdateType": "Immutable" }, - "KeyRotationIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-keyrotationintervalseconds", - "PrimitiveType": "Integer", + "AllowedOrigins": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "RepeatExtXKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-repeatextxkey", - "PrimitiveType": "Boolean", + "ExposeHeaders": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-spekekeyprovider", - "Required": true, - "Type": "SpekeKeyProvider", + "MaxAgeSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.HlsManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html", + "AWS::MediaStore::Container.MetricPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-admarkers", + "ContainerLevelMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-containerlevelmetrics", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "AdTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adtriggers", - "PrimitiveItemType": "String", + "MetricPolicyRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-metricpolicyrules", + "ItemType": "MetricPolicyRule", "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "AdsOnDeliveryRestrictions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adsondeliveryrestrictions", + } + } + }, + "AWS::MediaStore::Container.MetricPolicyRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html", + "Properties": { + "ObjectGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroup", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-id", + "ObjectGroupName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroupname", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" - }, - "IncludeIframeOnlyStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-includeiframeonlystream", - "PrimitiveType": "Boolean", + } + } + }, + "AWS::Neptune::DBCluster.DBClusterRole": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html", + "Properties": { + "FeatureName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-featurename", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-manifestname", + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-rolearn", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "PlaylistType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlisttype", + } + } + }, + "AWS::NetworkFirewall::Firewall.SubnetMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-subnetmapping.html", + "Properties": { + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-subnetmapping.html#cfn-networkfirewall-firewall-subnetmapping-subnetid", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "PlaylistWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlistwindowseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::NetworkFirewall::Firewall.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-tags.html#cfn-networkfirewall-firewall-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "ProgramDateTimeIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-programdatetimeintervalseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.ActionDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-actiondefinition.html", + "Properties": { + "PublishMetricAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-actiondefinition.html#cfn-networkfirewall-firewallpolicy-actiondefinition-publishmetricaction", "Required": false, + "Type": "PublishMetricAction", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.CustomAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html", + "Properties": { + "ActionDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html#cfn-networkfirewall-firewallpolicy-customaction-actiondefinition", + "Required": true, + "Type": "ActionDefinition", "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-url", + "ActionName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html#cfn-networkfirewall-firewallpolicy-customaction-actionname", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.HlsPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html", + "AWS::NetworkFirewall::FirewallPolicy.CustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customactions.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-admarkers", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "AdTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adtriggers", - "PrimitiveItemType": "String", + "CustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customactions.html#cfn-networkfirewall-firewallpolicy-customactions-customactions", + "DuplicatesAllowed": false, + "ItemType": "CustomAction", "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "AdsOnDeliveryRestrictions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adsondeliveryrestrictions", + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.Dimension": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimension.html", + "Properties": { + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimension.html#cfn-networkfirewall-firewallpolicy-dimension-value", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-encryption", - "Required": false, - "Type": "HlsEncryption", + "Required": true, "UpdateType": "Mutable" - }, - "IncludeIframeOnlyStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-includeiframeonlystream", - "PrimitiveType": "Boolean", + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.Dimensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimensions.html", + "Properties": { + "Dimensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimensions.html#cfn-networkfirewall-firewallpolicy-dimensions-dimensions", + "DuplicatesAllowed": false, + "ItemType": "Dimension", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "PlaylistType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlisttype", - "PrimitiveType": "String", + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.FirewallPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html", + "Properties": { + "StatefulRuleGroupReferences": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statefulrulegroupreferences", "Required": false, + "Type": "StatefulRuleGroupReferences", "UpdateType": "Mutable" }, - "PlaylistWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlistwindowseconds", - "PrimitiveType": "Integer", + "StatelessCustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelesscustomactions", "Required": false, + "Type": "CustomActions", "UpdateType": "Mutable" }, - "ProgramDateTimeIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-programdatetimeintervalseconds", - "PrimitiveType": "Integer", - "Required": false, + "StatelessDefaultActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelessdefaultactions", + "Required": true, + "Type": "StatelessActions", "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-segmentdurationseconds", - "PrimitiveType": "Integer", - "Required": false, + "StatelessFragmentDefaultActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelessfragmentdefaultactions", + "Required": true, + "Type": "StatelessActions", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-streamselection", + "StatelessRuleGroupReferences": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelessrulegroupreferences", "Required": false, - "Type": "StreamSelection", + "Type": "StatelessRuleGroupReferences", "UpdateType": "Mutable" - }, - "UseAudioRenditionGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-useaudiorenditiongroup", - "PrimitiveType": "Boolean", - "Required": false, + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.PublishMetricAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-publishmetricaction.html", + "Properties": { + "Dimensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-publishmetricaction.html#cfn-networkfirewall-firewallpolicy-publishmetricaction-dimensions", + "Required": true, + "Type": "Dimensions", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.MssEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html", + "AWS::NetworkFirewall::FirewallPolicy.StatefulRuleGroupReference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreference.html", "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html#cfn-mediapackage-originendpoint-mssencryption-spekekeyprovider", + "ResourceArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreference.html#cfn-networkfirewall-firewallpolicy-statefulrulegroupreference-resourcearn", + "PrimitiveType": "String", "Required": true, - "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.MssPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html", + "AWS::NetworkFirewall::FirewallPolicy.StatefulRuleGroupReferences": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreferences.html", "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-encryption", + "StatefulRuleGroupReferences": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreferences.html#cfn-networkfirewall-firewallpolicy-statefulrulegroupreferences-statefulrulegroupreferences", + "DuplicatesAllowed": false, + "ItemType": "StatefulRuleGroupReference", "Required": false, - "Type": "MssEncryption", + "Type": "List", "UpdateType": "Mutable" - }, - "ManifestWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-manifestwindowseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.StatelessActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessactions.html", + "Properties": { + "StatelessActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessactions.html#cfn-networkfirewall-firewallpolicy-statelessactions-statelessactions", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-segmentdurationseconds", + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.StatelessRuleGroupReference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html", + "Properties": { + "Priority": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html#cfn-networkfirewall-firewallpolicy-statelessrulegroupreference-priority", "PrimitiveType": "Integer", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-streamselection", + "ResourceArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html#cfn-networkfirewall-firewallpolicy-statelessrulegroupreference-resourcearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy.StatelessRuleGroupReferences": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreferences.html", + "Properties": { + "StatelessRuleGroupReferences": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreferences.html#cfn-networkfirewall-firewallpolicy-statelessrulegroupreferences-statelessrulegroupreferences", + "DuplicatesAllowed": false, + "ItemType": "StatelessRuleGroupReference", "Required": false, - "Type": "StreamSelection", + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html", + "AWS::NetworkFirewall::FirewallPolicy.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-tags.html", "Properties": { - "CertificateArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-certificatearn", - "PrimitiveType": "String", + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-tags.html#cfn-networkfirewall-firewallpolicy-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "ResourceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-resourceid", - "PrimitiveType": "String", + } + } + }, + "AWS::NetworkFirewall::LoggingConfiguration.LogDestinationConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html", + "Properties": { + "LogDestination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfig-logdestination", + "PrimitiveItemType": "String", "Required": true, + "Type": "Map", "UpdateType": "Mutable" }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-rolearn", + "LogDestinationType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfig-logdestinationtype", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "SystemIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-systemids", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-url", + "LogType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfig-logtype", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html", + "AWS::NetworkFirewall::LoggingConfiguration.LogDestinationConfigs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfigs.html", "Properties": { - "MaxVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-maxvideobitspersecond", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MinVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-minvideobitspersecond", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "StreamOrder": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-streamorder", - "PrimitiveType": "String", + "LogDestinationConfigs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfigs.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfigs-logdestinationconfigs", + "ItemType": "LogDestinationConfig", "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.CmafEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html", + "AWS::NetworkFirewall::LoggingConfiguration.LoggingConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-loggingconfiguration.html", "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html#cfn-mediapackage-packagingconfiguration-cmafencryption-spekekeyprovider", + "LogDestinationConfigs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-loggingconfiguration.html#cfn-networkfirewall-loggingconfiguration-loggingconfiguration-logdestinationconfigs", "Required": true, + "Type": "LogDestinationConfigs", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.CmafPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html", + "AWS::NetworkFirewall::RuleGroup.ActionDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-actiondefinition.html", "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-encryption", - "Required": false, - "Type": "CmafEncryption", - "UpdateType": "Mutable" - }, - "HlsManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-hlsmanifests", - "ItemType": "HlsManifest", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-segmentdurationseconds", - "PrimitiveType": "Integer", + "PublishMetricAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-actiondefinition.html#cfn-networkfirewall-rulegroup-actiondefinition-publishmetricaction", "Required": false, + "Type": "PublishMetricAction", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.DashEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html", + "AWS::NetworkFirewall::RuleGroup.Address": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-address.html", "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html#cfn-mediapackage-packagingconfiguration-dashencryption-spekekeyprovider", + "AddressDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-address.html#cfn-networkfirewall-rulegroup-address-addressdefinition", + "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.DashManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html", + "AWS::NetworkFirewall::RuleGroup.Addresses": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-addresses.html", "Properties": { - "ManifestLayout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestlayout", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestname", - "PrimitiveType": "String", + "Addresses": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-addresses.html#cfn-networkfirewall-rulegroup-addresses-addresses", + "DuplicatesAllowed": false, + "ItemType": "Address", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "MinBufferTimeSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-minbuffertimeseconds", - "PrimitiveType": "Integer", - "Required": false, + } + } + }, + "AWS::NetworkFirewall::RuleGroup.CustomAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html", + "Properties": { + "ActionDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html#cfn-networkfirewall-rulegroup-customaction-actiondefinition", + "Required": true, + "Type": "ActionDefinition", "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-profile", + "ActionName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html#cfn-networkfirewall-rulegroup-customaction-actionname", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-streamselection", + } + } + }, + "AWS::NetworkFirewall::RuleGroup.CustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customactions.html", + "Properties": { + "CustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customactions.html#cfn-networkfirewall-rulegroup-customactions-customactions", + "DuplicatesAllowed": false, + "ItemType": "CustomAction", "Required": false, - "Type": "StreamSelection", + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.DashPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html", + "AWS::NetworkFirewall::RuleGroup.Dimension": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimension.html", "Properties": { - "DashManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-dashmanifests", - "ItemType": "DashManifest", + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimension.html#cfn-networkfirewall-rulegroup-dimension-value", + "PrimitiveType": "String", "Required": true, - "Type": "List", "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-encryption", + } + } + }, + "AWS::NetworkFirewall::RuleGroup.Dimensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimensions.html", + "Properties": { + "Dimensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimensions.html#cfn-networkfirewall-rulegroup-dimensions-dimensions", + "DuplicatesAllowed": false, + "ItemType": "Dimension", "Required": false, - "Type": "DashEncryption", + "Type": "List", "UpdateType": "Mutable" - }, - "PeriodTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-periodtriggers", + } + } + }, + "AWS::NetworkFirewall::RuleGroup.Flags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-flags.html", + "Properties": { + "Flags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-flags.html#cfn-networkfirewall-rulegroup-flags-flags", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.Header": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html", + "Properties": { + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-destination", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmentdurationseconds", - "PrimitiveType": "Integer", - "Required": false, + "DestinationPort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-destinationport", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" }, - "SegmentTemplateFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmenttemplateformat", + "Direction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-direction", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::PackagingConfiguration.HlsEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html", - "Properties": { - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-constantinitializationvector", + }, + "Protocol": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-protocol", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "EncryptionMethod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-encryptionmethod", + "Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-source", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-spekekeyprovider", + "SourcePort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-sourceport", + "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.HlsManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html", + "AWS::NetworkFirewall::RuleGroup.IPSet": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ipset.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-admarkers", - "PrimitiveType": "String", + "Definition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ipset.html#cfn-networkfirewall-rulegroup-ipset-definition", + "Required": false, + "Type": "VariableDefinitionList", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.MatchAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html", + "Properties": { + "DestinationPorts": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-destinationports", "Required": false, + "Type": "PortRanges", "UpdateType": "Mutable" }, - "IncludeIframeOnlyStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-includeiframeonlystream", - "PrimitiveType": "Boolean", + "Destinations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-destinations", "Required": false, + "Type": "Addresses", "UpdateType": "Mutable" }, - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-manifestname", - "PrimitiveType": "String", + "Protocols": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-protocols", "Required": false, + "Type": "ProtocolNumbers", "UpdateType": "Mutable" }, - "ProgramDateTimeIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-programdatetimeintervalseconds", - "PrimitiveType": "Integer", + "SourcePorts": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-sourceports", "Required": false, + "Type": "PortRanges", "UpdateType": "Mutable" }, - "RepeatExtXKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-repeatextxkey", - "PrimitiveType": "Boolean", + "Sources": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-sources", "Required": false, + "Type": "Addresses", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-streamselection", + "TCPFlags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-tcpflags", "Required": false, - "Type": "StreamSelection", + "Type": "TCPFlags", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.HlsPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html", + "AWS::NetworkFirewall::RuleGroup.PortRange": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html", "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-encryption", - "Required": false, - "Type": "HlsEncryption", + "FromPort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html#cfn-networkfirewall-rulegroup-portrange-fromport", + "PrimitiveType": "Integer", + "Required": true, "UpdateType": "Mutable" }, - "HlsManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-hlsmanifests", - "ItemType": "HlsManifest", + "ToPort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html#cfn-networkfirewall-rulegroup-portrange-toport", + "PrimitiveType": "Integer", "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.PortRanges": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portranges.html", + "Properties": { + "PortRanges": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portranges.html#cfn-networkfirewall-rulegroup-portranges-portranges", + "DuplicatesAllowed": false, + "ItemType": "PortRange", + "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-segmentdurationseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::NetworkFirewall::RuleGroup.PortSet": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portset.html", + "Properties": { + "Definition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portset.html#cfn-networkfirewall-rulegroup-portset-definition", "Required": false, + "Type": "VariableDefinitionList", "UpdateType": "Mutable" - }, - "UseAudioRenditionGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-useaudiorenditiongroup", - "PrimitiveType": "Boolean", + } + } + }, + "AWS::NetworkFirewall::RuleGroup.ProtocolNumbers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-protocolnumbers.html", + "Properties": { + "ProtocolNumbers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-protocolnumbers.html#cfn-networkfirewall-rulegroup-protocolnumbers-protocolnumbers", + "DuplicatesAllowed": false, + "PrimitiveItemType": "Integer", "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.MssEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html", + "AWS::NetworkFirewall::RuleGroup.PublishMetricAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-publishmetricaction.html", "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html#cfn-mediapackage-packagingconfiguration-mssencryption-spekekeyprovider", + "Dimensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-publishmetricaction.html#cfn-networkfirewall-rulegroup-publishmetricaction-dimensions", "Required": true, + "Type": "Dimensions", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.MssManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html", + "AWS::NetworkFirewall::RuleGroup.RuleDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html", "Properties": { - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-manifestname", - "PrimitiveType": "String", - "Required": false, + "Actions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html#cfn-networkfirewall-rulegroup-ruledefinition-actions", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-streamselection", - "Required": false, - "Type": "StreamSelection", + "MatchAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html#cfn-networkfirewall-rulegroup-ruledefinition-matchattributes", + "Required": true, + "Type": "MatchAttributes", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.MssPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html", + "AWS::NetworkFirewall::RuleGroup.RuleGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulegroup.html", "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-encryption", + "RuleVariables": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroup-rulevariables", "Required": false, - "Type": "MssEncryption", + "Type": "RuleVariables", "UpdateType": "Mutable" }, - "MssManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-mssmanifests", - "ItemType": "MssManifest", + "RulesSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroup-rulessource", "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-segmentdurationseconds", - "PrimitiveType": "Integer", - "Required": false, + "Type": "RulesSource", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html", + "AWS::NetworkFirewall::RuleGroup.RuleOption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html", "Properties": { - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-rolearn", + "Keyword": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html#cfn-networkfirewall-rulegroup-ruleoption-keyword", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "SystemIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-systemids", + "Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html#cfn-networkfirewall-rulegroup-ruleoption-settings", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", - "Required": true, + "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-url", - "PrimitiveType": "String", - "Required": true, + } + } + }, + "AWS::NetworkFirewall::RuleGroup.RuleOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoptions.html", + "Properties": { + "RuleOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoptions.html#cfn-networkfirewall-rulegroup-ruleoptions-ruleoptions", + "DuplicatesAllowed": false, + "ItemType": "RuleOption", + "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html", + "AWS::NetworkFirewall::RuleGroup.RuleVariables": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html", "Properties": { - "MaxVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-maxvideobitspersecond", - "PrimitiveType": "Integer", + "IPSets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html#cfn-networkfirewall-rulegroup-rulevariables-ipsets", + "ItemType": "IPSet", "Required": false, + "Type": "Map", "UpdateType": "Mutable" }, - "MinVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-minvideobitspersecond", - "PrimitiveType": "Integer", + "PortSets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html#cfn-networkfirewall-rulegroup-rulevariables-portsets", + "ItemType": "PortSet", + "Required": false, + "Type": "Map", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.RulesSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html", + "Properties": { + "RulesSourceList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-rulessourcelist", "Required": false, + "Type": "RulesSourceList", "UpdateType": "Mutable" }, - "StreamOrder": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-streamorder", + "RulesString": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-rulesstring", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" + }, + "StatefulRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-statefulrules", + "Required": false, + "Type": "StatefulRules", + "UpdateType": "Mutable" + }, + "StatelessRulesAndCustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-statelessrulesandcustomactions", + "Required": false, + "Type": "StatelessRulesAndCustomActions", + "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingGroup.Authorization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html", + "AWS::NetworkFirewall::RuleGroup.RulesSourceList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html", "Properties": { - "CdnIdentifierSecret": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-cdnidentifiersecret", + "GeneratedRulesType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html#cfn-networkfirewall-rulegroup-rulessourcelist-generatedrulestype", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "SecretsRoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-secretsrolearn", - "PrimitiveType": "String", + "TargetTypes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html#cfn-networkfirewall-rulegroup-rulessourcelist-targettypes", + "Required": true, + "Type": "TargetTypes", + "UpdateType": "Mutable" + }, + "Targets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html#cfn-networkfirewall-rulegroup-rulessourcelist-targets", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": true, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaStore::Container.CorsRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html", + "AWS::NetworkFirewall::RuleGroup.StatefulRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html", "Properties": { - "AllowedHeaders": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", + "Action": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html#cfn-networkfirewall-rulegroup-statefulrule-action", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" }, - "AllowedMethods": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" + "Header": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html#cfn-networkfirewall-rulegroup-statefulrule-header", + "Required": true, + "Type": "Header", + "UpdateType": "Mutable" }, - "AllowedOrigins": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins", - "PrimitiveItemType": "String", + "RuleOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html#cfn-networkfirewall-rulegroup-statefulrule-ruleoptions", + "Required": true, + "Type": "RuleOptions", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.StatefulRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrules.html", + "Properties": { + "StatefulRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrules.html#cfn-networkfirewall-rulegroup-statefulrules-statefulrules", + "DuplicatesAllowed": false, + "ItemType": "StatefulRule", "Required": false, "Type": "List", "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.StatelessRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html", + "Properties": { + "Priority": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html#cfn-networkfirewall-rulegroup-statelessrule-priority", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" }, - "ExposeHeaders": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders", - "PrimitiveItemType": "String", + "RuleDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html#cfn-networkfirewall-rulegroup-statelessrule-ruledefinition", + "Required": true, + "Type": "RuleDefinition", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup.StatelessRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrules.html", + "Properties": { + "StatelessRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrules.html#cfn-networkfirewall-rulegroup-statelessrules-statelessrules", + "DuplicatesAllowed": false, + "ItemType": "StatelessRule", "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "MaxAgeSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::NetworkFirewall::RuleGroup.StatelessRulesAndCustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html", + "Properties": { + "CustomActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html#cfn-networkfirewall-rulegroup-statelessrulesandcustomactions-customactions", "Required": false, + "Type": "CustomActions", + "UpdateType": "Mutable" + }, + "StatelessRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html#cfn-networkfirewall-rulegroup-statelessrulesandcustomactions-statelessrules", + "Required": true, + "Type": "StatelessRules", "UpdateType": "Mutable" } } }, - "AWS::MediaStore::Container.MetricPolicy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html", + "AWS::NetworkFirewall::RuleGroup.TCPFlagField": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html", "Properties": { - "ContainerLevelMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-containerlevelmetrics", - "PrimitiveType": "String", + "Flags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html#cfn-networkfirewall-rulegroup-tcpflagfield-flags", "Required": true, + "Type": "Flags", "UpdateType": "Mutable" }, - "MetricPolicyRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-metricpolicyrules", - "ItemType": "MetricPolicyRule", + "Masks": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html#cfn-networkfirewall-rulegroup-tcpflagfield-masks", "Required": false, - "Type": "List", + "Type": "Flags", "UpdateType": "Mutable" } } }, - "AWS::MediaStore::Container.MetricPolicyRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html", + "AWS::NetworkFirewall::RuleGroup.TCPFlags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflags.html", "Properties": { - "ObjectGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroup", - "PrimitiveType": "String", - "Required": true, + "TCPFlags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflags.html#cfn-networkfirewall-rulegroup-tcpflags-tcpflags", + "DuplicatesAllowed": false, + "ItemType": "TCPFlagField", + "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "ObjectGroupName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroupname", - "PrimitiveType": "String", - "Required": true, + } + } + }, + "AWS::NetworkFirewall::RuleGroup.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tags.html#cfn-networkfirewall-rulegroup-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::Neptune::DBCluster.DBClusterRole": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html", + "AWS::NetworkFirewall::RuleGroup.TargetTypes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-targettypes.html", "Properties": { - "FeatureName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-featurename", - "PrimitiveType": "String", + "TargetTypes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-targettypes.html#cfn-networkfirewall-rulegroup-targettypes-targettypes", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-rolearn", - "PrimitiveType": "String", - "Required": true, + } + } + }, + "AWS::NetworkFirewall::RuleGroup.VariableDefinitionList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-variabledefinitionlist.html", + "Properties": { + "VariableDefinitionList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-variabledefinitionlist.html#cfn-networkfirewall-rulegroup-variabledefinitionlist-variabledefinitionlist", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", "UpdateType": "Mutable" } } @@ -38967,6 +41251,242 @@ } } }, + "AWS::S3::StorageLens.AccountLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html", + "Properties": { + "ActivityMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html#cfn-s3-storagelens-accountlevel-activitymetrics", + "Required": false, + "Type": "ActivityMetrics", + "UpdateType": "Mutable" + }, + "BucketLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html#cfn-s3-storagelens-accountlevel-bucketlevel", + "Required": true, + "Type": "BucketLevel", + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.ActivityMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-activitymetrics.html", + "Properties": { + "IsEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-activitymetrics.html#cfn-s3-storagelens-activitymetrics-isenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.AwsOrg": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-awsorg.html", + "Properties": { + "Arn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-awsorg.html#cfn-s3-storagelens-awsorg-arn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.BucketLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html", + "Properties": { + "ActivityMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html#cfn-s3-storagelens-bucketlevel-activitymetrics", + "Required": false, + "Type": "ActivityMetrics", + "UpdateType": "Mutable" + }, + "PrefixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html#cfn-s3-storagelens-bucketlevel-prefixlevel", + "Required": false, + "Type": "PrefixLevel", + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.BucketsAndRegions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html", + "Properties": { + "Buckets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html#cfn-s3-storagelens-bucketsandregions-buckets", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Regions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html#cfn-s3-storagelens-bucketsandregions-regions", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.DataExport": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-dataexport.html", + "Properties": { + "S3BucketDestination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-dataexport.html#cfn-s3-storagelens-dataexport-s3bucketdestination", + "Required": true, + "Type": "S3BucketDestination", + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-encryption.html" + }, + "AWS::S3::StorageLens.PrefixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html", + "Properties": { + "StorageMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html#cfn-s3-storagelens-prefixlevel-storagemetrics", + "Required": true, + "Type": "PrefixLevelStorageMetrics", + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html", + "Properties": { + "IsEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html#cfn-s3-storagelens-prefixlevelstoragemetrics-isenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "SelectionCriteria": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html#cfn-s3-storagelens-prefixlevelstoragemetrics-selectioncriteria", + "Required": false, + "Type": "SelectionCriteria", + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.S3BucketDestination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html", + "Properties": { + "AccountId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-accountid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Arn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-arn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-encryption", + "Required": false, + "Type": "Encryption", + "UpdateType": "Mutable" + }, + "Format": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-format", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "OutputSchemaVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-outputschemaversion", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Prefix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-prefix", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.SelectionCriteria": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html", + "Properties": { + "Delimiter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html#cfn-s3-storagelens-selectioncriteria-delimiter", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxDepth": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html#cfn-s3-storagelens-selectioncriteria-maxdepth", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MinStorageBytesPercentage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html#cfn-s3-storagelens-selectioncriteria-minstoragebytespercentage", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::S3::StorageLens.StorageLensConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html", + "Properties": { + "AccountLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-accountlevel", + "Required": true, + "Type": "AccountLevel", + "UpdateType": "Mutable" + }, + "AwsOrg": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-awsorg", + "Required": false, + "Type": "AwsOrg", + "UpdateType": "Mutable" + }, + "DataExport": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-dataexport", + "Required": false, + "Type": "DataExport", + "UpdateType": "Mutable" + }, + "Exclude": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-exclude", + "Required": false, + "Type": "BucketsAndRegions", + "UpdateType": "Mutable" + }, + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-id", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Include": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-include", + "Required": false, + "Type": "BucketsAndRegions", + "UpdateType": "Mutable" + }, + "IsEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-isenabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + }, + "StorageLensArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-storagelensarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::SES::ConfigurationSetEventDestination.CloudWatchDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-configurationseteventdestination-cloudwatchdestination.html", "Properties": { @@ -40050,6 +42570,12 @@ "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" + }, + "MultiModelConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-multimodelconfig", + "Required": false, + "Type": "MultiModelConfig", + "UpdateType": "Immutable" } } }, @@ -40064,6 +42590,17 @@ } } }, + "AWS::SageMaker::Model.MultiModelConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition-multimodelconfig.html", + "Properties": { + "ModelCacheSetting": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition-multimodelconfig.html#cfn-sagemaker-model-containerdefinition-multimodelconfig-modelcachesetting", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::SageMaker::Model.VpcConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html", "Properties": { @@ -40850,6 +43387,23 @@ } } }, + "AWS::Signer::SigningProfile.SignatureValidityPeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-signer-signingprofile-signaturevalidityperiod.html", + "Properties": { + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-signer-signingprofile-signaturevalidityperiod.html#cfn-signer-signingprofile-signaturevalidityperiod-type", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-signer-signingprofile-signaturevalidityperiod.html#cfn-signer-signingprofile-signaturevalidityperiod-value", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::StepFunctions::Activity.TagsEntry": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-activity-tagsentry.html", "Properties": { @@ -41011,6 +43565,13 @@ "Required": false, "UpdateType": "Mutable" }, + "EnvironmentVariables": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-environmentvariables", + "PrimitiveItemType": "String", + "Required": false, + "Type": "Map", + "UpdateType": "Mutable" + }, "MemoryInMB": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-memoryinmb", "PrimitiveType": "Integer", @@ -43274,7 +45835,7 @@ } } }, - "ResourceSpecificationVersion": "20.2.0", + "ResourceSpecificationVersion": "21.0.0", "ResourceTypes": { "AWS::ACMPCA::Certificate": { "Attributes": { @@ -43703,6 +46264,12 @@ "Required": false, "UpdateType": "Mutable" }, + "CustomHeaders": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customheaders", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "CustomRules": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customrules", "ItemType": "CustomRule", @@ -48593,6 +51160,25 @@ } } }, + "AWS::CloudFront::KeyGroup": { + "Attributes": { + "Id": { + "PrimitiveType": "String" + }, + "LastModifiedTime": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keygroup.html", + "Properties": { + "KeyGroupConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keygroup.html#cfn-cloudfront-keygroup-keygroupconfig", + "Required": true, + "Type": "KeyGroupConfig", + "UpdateType": "Mutable" + } + } + }, "AWS::CloudFront::OriginRequestPolicy": { "Attributes": { "Id": { @@ -48612,6 +51198,25 @@ } } }, + "AWS::CloudFront::PublicKey": { + "Attributes": { + "CreatedTime": { + "PrimitiveType": "String" + }, + "Id": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-publickey.html", + "Properties": { + "PublicKeyConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-publickey.html#cfn-cloudfront-publickey-publickeyconfig", + "Required": true, + "Type": "PublicKeyConfig", + "UpdateType": "Mutable" + } + } + }, "AWS::CloudFront::RealtimeLogConfig": { "Attributes": { "Arn": { @@ -49883,6 +52488,12 @@ "Type": "Code", "UpdateType": "Mutable" }, + "ConnectionArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html#cfn-codestar-githubrepository-connectionarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "EnableIssues": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html#cfn-codestar-githubrepository-enableissues", "PrimitiveType": "Boolean", @@ -49898,7 +52509,7 @@ "RepositoryAccessToken": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html#cfn-codestar-githubrepository-repositoryaccesstoken", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "RepositoryDescription": { @@ -51432,7 +54043,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-availabilityzone", "PrimitiveType": "String", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, "EngineVersion": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-engineversion", @@ -51607,6 +54218,243 @@ } } }, + "AWS::DataBrew::Dataset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html", + "Properties": { + "FormatOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-formatoptions", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, + "Input": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-input", + "PrimitiveType": "Json", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-tags", + "DuplicatesAllowed": true, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::DataBrew::Job": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html", + "Properties": { + "DatasetName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-datasetname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EncryptionKeyArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-encryptionkeyarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EncryptionMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-encryptionmode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "LogSubscription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-logsubscription", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-maxcapacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-maxretries", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "OutputLocation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-outputlocation", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, + "Outputs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-outputs", + "ItemType": "Output", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "ProjectName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-projectname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Recipe": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-recipe", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-tags", + "DuplicatesAllowed": true, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "Timeout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-timeout", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataBrew::Project": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html", + "Properties": { + "DatasetName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-datasetname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "RecipeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-recipename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Sample": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-sample", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-tags", + "DuplicatesAllowed": true, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::DataBrew::Recipe": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html", + "Properties": { + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Steps": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-steps", + "ItemType": "RecipeStep", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-tags", + "DuplicatesAllowed": true, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::DataBrew::Schedule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html", + "Properties": { + "CronExpression": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-cronexpression", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "JobNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-jobnames", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-tags", + "DuplicatesAllowed": true, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, "AWS::DataPipeline::Pipeline": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html", "Properties": { @@ -52335,6 +55183,12 @@ "Required": true, "UpdateType": "Immutable" }, + "ClientConnectOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientconnectoptions", + "Required": false, + "Type": "ClientConnectOptions", + "UpdateType": "Mutable" + }, "ConnectionLogOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-connectionlogoptions", "Required": true, @@ -54470,6 +57324,13 @@ "Required": false, "UpdateType": "Mutable" }, + "GatewayLoadBalancerArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservice.html#cfn-ec2-vpcendpointservice-gatewayloadbalancerarns", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "NetworkLoadBalancerArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservice.html#cfn-ec2-vpcendpointservice-networkloadbalancerarns", "PrimitiveItemType": "String", @@ -56711,11 +59572,15 @@ } }, "AWS::ElasticLoadBalancingV2::Listener": { + "Attributes": { + "ListenerArn": { + "PrimitiveType": "String" + } + }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html", "Properties": { "AlpnPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-alpnpolicy", - "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "List", @@ -57355,7 +60220,7 @@ "Action": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-action", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "Condition": { @@ -57373,7 +60238,13 @@ "Principal": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-principal", "PrimitiveType": "String", - "Required": true, + "Required": false, + "UpdateType": "Mutable" + }, + "Statement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-statement", + "PrimitiveType": "Json", + "Required": false, "UpdateType": "Mutable" }, "StatementId": { @@ -58672,6 +61543,12 @@ "Required": false, "UpdateType": "Mutable" }, + "TransformEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-mltransform.html#cfn-glue-mltransform-transformencryption", + "Required": false, + "Type": "TransformEncryption", + "UpdateType": "Mutable" + }, "TransformParameters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-mltransform.html#cfn-glue-mltransform-transformparameters", "Required": true, @@ -58715,6 +61592,142 @@ } } }, + "AWS::Glue::Registry": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html", + "Properties": { + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html#cfn-glue-registry-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html#cfn-glue-registry-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html#cfn-glue-registry-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::Glue::Schema": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + }, + "InitialSchemaVersionId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html", + "Properties": { + "CheckpointVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-checkpointversion", + "Required": false, + "Type": "SchemaVersion", + "UpdateType": "Mutable" + }, + "Compatibility": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-compatibility", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "DataFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-dataformat", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Registry": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-registry", + "Required": false, + "Type": "Registry", + "UpdateType": "Immutable" + }, + "SchemaDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-schemadefinition", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::Glue::SchemaVersion": { + "Attributes": { + "VersionId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html", + "Properties": { + "Schema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html#cfn-glue-schemaversion-schema", + "Required": true, + "Type": "Schema", + "UpdateType": "Immutable" + }, + "SchemaDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html#cfn-glue-schemaversion-schemadefinition", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::Glue::SchemaVersionMetadata": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html#cfn-glue-schemaversionmetadata-key", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "SchemaVersionId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html#cfn-glue-schemaversionmetadata-schemaversionid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html#cfn-glue-schemaversionmetadata-value", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::Glue::SecurityConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-securityconfiguration.html", "Properties": { @@ -60885,6 +63898,31 @@ } } }, + "AWS::IoT::TopicRuleDestination": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + }, + "StatusReason": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html", + "Properties": { + "HttpUrlProperties": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html#cfn-iot-topicruledestination-httpurlproperties", + "Required": false, + "Type": "HttpUrlDestinationSummary", + "UpdateType": "Immutable" + }, + "Status": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html#cfn-iot-topicruledestination-status", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::IoTAnalytics::Channel": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html", "Properties": { @@ -61298,6 +64336,12 @@ "Required": true, "UpdateType": "Mutable" }, + "KeySpec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyspec", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "KeyUsage": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyusage", "PrimitiveType": "String", @@ -61920,6 +64964,37 @@ } } }, + "AWS::Lambda::CodeSigningConfig": { + "Attributes": { + "CodeSigningConfigArn": { + "PrimitiveType": "String" + }, + "CodeSigningConfigId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html", + "Properties": { + "AllowedPublishers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html#cfn-lambda-codesigningconfig-allowedpublishers", + "Required": true, + "Type": "AllowedPublishers", + "UpdateType": "Mutable" + }, + "CodeSigningPolicies": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html#cfn-lambda-codesigningconfig-codesigningpolicies", + "Required": false, + "Type": "CodeSigningPolicies", + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html#cfn-lambda-codesigningconfig-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Lambda::EventInvokeConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventinvokeconfig.html", "Properties": { @@ -62023,6 +65098,12 @@ "Required": false, "UpdateType": "Mutable" }, + "PartialBatchResponse": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-partialbatchresponse", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "Queues": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-queues", "DuplicatesAllowed": false, @@ -62052,6 +65133,12 @@ "Required": false, "Type": "List", "UpdateType": "Mutable" + }, + "TumblingWindowInSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-tumblingwindowinseconds", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" } } }, @@ -62069,6 +65156,12 @@ "Type": "Code", "UpdateType": "Mutable" }, + "CodeSigningConfigArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-codesigningconfigarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "DeadLetterConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-deadletterconfig", "Required": false, @@ -63727,6 +66820,187 @@ } } }, + "AWS::NetworkFirewall::Firewall": { + "Attributes": { + "EndpointIds": { + "PrimitiveItemType": "String", + "Type": "List" + }, + "FirewallArn": { + "PrimitiveType": "String" + }, + "FirewallId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html", + "Properties": { + "DeleteProtection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-deleteprotection", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FirewallName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-firewallname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "FirewallPolicyArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-firewallpolicyarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "FirewallPolicyChangeProtection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-firewallpolicychangeprotection", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "SubnetChangeProtection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-subnetchangeprotection", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "SubnetMappings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-subnetmappings", + "DuplicatesAllowed": false, + "ItemType": "SubnetMapping", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-tags", + "Required": false, + "Type": "Tags", + "UpdateType": "Mutable" + }, + "VpcId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-vpcid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::NetworkFirewall::FirewallPolicy": { + "Attributes": { + "FirewallPolicyArn": { + "PrimitiveType": "String" + }, + "FirewallPolicyId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html", + "Properties": { + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FirewallPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy", + "Required": true, + "Type": "FirewallPolicy", + "UpdateType": "Mutable" + }, + "FirewallPolicyName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicyname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-tags", + "Required": false, + "Type": "Tags", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::LoggingConfiguration": { + "Attributes": { + "FirewallArn": { + "PrimitiveType": "String" + }, + "FirewallName": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html", + "Properties": { + "LoggingConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html#cfn-networkfirewall-loggingconfiguration-loggingconfiguration", + "Required": true, + "Type": "LoggingConfiguration", + "UpdateType": "Mutable" + } + } + }, + "AWS::NetworkFirewall::RuleGroup": { + "Attributes": { + "RuleGroupArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html", + "Properties": { + "Capacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-capacity", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Immutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RuleGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroup", + "Required": false, + "Type": "RuleGroup", + "UpdateType": "Mutable" + }, + "RuleGroupId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroupid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RuleGroupName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroupname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-tags", + "Required": false, + "Type": "Tags", + "UpdateType": "Mutable" + }, + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::NetworkManager::CustomerGatewayAssociation": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-customergatewayassociation.html", "Properties": { @@ -67950,6 +71224,30 @@ } } }, + "AWS::S3::StorageLens": { + "Attributes": { + "StorageLensArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html", + "Properties": { + "StorageLensConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html#cfn-s3-storagelens-storagelensconfiguration", + "Required": true, + "Type": "StorageLensConfiguration", + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html#cfn-s3-storagelens-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::SDB::Domain": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html", "Properties": { @@ -69092,14 +72390,16 @@ } }, "AWS::SageMaker::MonitoringSchedule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html", - "Properties": { + "Attributes": { "CreationTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-creationtime", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" + "PrimitiveType": "String" }, + "LastModifiedTime": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html", + "Properties": { "EndpointName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-endpointname", "PrimitiveType": "String", @@ -69112,12 +72412,6 @@ "Required": false, "UpdateType": "Mutable" }, - "LastModifiedTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-lastmodifiedtime", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "LastMonitoringExecutionSummary": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-lastmonitoringexecutionsummary", "Required": false, @@ -70206,6 +73500,79 @@ } } }, + "AWS::Signer::ProfilePermission": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html", + "Properties": { + "Action": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-action", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Principal": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-principal", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "ProfileName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-profilename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "ProfileVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-profileversion", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "StatementId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-statementid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::Signer::SigningProfile": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + }, + "ProfileName": { + "PrimitiveType": "String" + }, + "ProfileVersion": { + "PrimitiveType": "String" + }, + "ProfileVersionArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html", + "Properties": { + "PlatformId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html#cfn-signer-signingprofile-platformid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "SignatureValidityPeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html#cfn-signer-signingprofile-signaturevalidityperiod", + "Required": false, + "Type": "SignatureValidityPeriod", + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html#cfn-signer-signingprofile-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::StepFunctions::Activity": { "Attributes": { "Name": { diff --git a/packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json b/packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json new file mode 100644 index 0000000000000..12e9cd1768ea6 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json @@ -0,0 +1,32 @@ +{ + "PropertyTypes": { + "AWS::DataBrew::Recipe.Action": { + "patch": { + "description": "AWS::DataBrew::Recipe.Action.Parameters does not have a type", + "operations": [ + { + "op": "add", + "path": "/Properties/Parameters/Type", + "value": "Map" + }, + { + "op": "add", + "path": "/Properties/Parameters/PrimitiveItemType", + "value": "String" + } + ] + } + }, + "AWS::DataBrew::Recipe.RecipeStep": { + "patch": { + "description": "AWS::DataBrew::Recipe.RecipeStep.Action has both PrimitiveType and Type", + "operations": [ + { + "op": "remove", + "path": "/Properties/Action/PrimitiveType" + } + ] + } + } + } +} diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index c9258888b3c6d..6eb7b2887f3dd 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -58,7 +58,7 @@ "jest": "^26.6.3", "mock-fs": "^4.13.0", "pkglint": "0.0.0", - "typescript-json-schema": "^0.43.0" + "typescript-json-schema": "^0.44.0" }, "repository": { "url": "https://github.com/aws/aws-cdk.git", diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index e465c8aa10595..1f0284428620e 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -26,7 +26,7 @@ "diff": "^5.0.0", "fast-deep-equal": "^3.1.3", "string-width": "^4.2.0", - "table": "^6.0.3" + "table": "^6.0.4" }, "devDependencies": { "@types/jest": "^26.0.15", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index 740c7d4a5ad7a..24fd055058c4d 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -107,6 +107,7 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", + "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -161,6 +162,7 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", + "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -183,6 +185,7 @@ "@aws-cdk/aws-servicecatalog": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", + "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", @@ -240,6 +243,7 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", + "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -294,6 +298,7 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", + "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -316,6 +321,7 @@ "@aws-cdk/aws-servicecatalog": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", + "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", diff --git a/packages/@aws-cdk/core/lib/cfn-element.ts b/packages/@aws-cdk/core/lib/cfn-element.ts index d381441f9a19e..5e2cf1602c614 100644 --- a/packages/@aws-cdk/core/lib/cfn-element.ts +++ b/packages/@aws-cdk/core/lib/cfn-element.ts @@ -60,7 +60,7 @@ export abstract class CfnElement extends CoreConstruct { this.stack = Stack.of(this); - this.logicalId = Lazy.stringValue({ produce: () => this.synthesizeLogicalId() }, { + this.logicalId = Lazy.uncachedString({ produce: () => this.synthesizeLogicalId() }, { displayHint: `${notTooLong(Node.of(this).path)}.LogicalID`, }); diff --git a/packages/@aws-cdk/core/lib/cfn-parse.ts b/packages/@aws-cdk/core/lib/cfn-parse.ts index 663bdd6437a98..c5fc563c3778f 100644 --- a/packages/@aws-cdk/core/lib/cfn-parse.ts +++ b/packages/@aws-cdk/core/lib/cfn-parse.ts @@ -492,7 +492,7 @@ export class CfnParser { // as otherwise Fn.join() will try to concatenate // the non-token parts, // causing a diff with the original template - return Fn.join(value[0], Lazy.listValue({ produce: () => value[1] })); + return Fn.join(value[0], Lazy.list({ produce: () => value[1] })); } case 'Fn::Cidr': { const value = this.parseValue(object[key]); @@ -670,7 +670,7 @@ export class CfnParser { // as Fn.valueOf() returns a string, // which is incorrect // (Fn::ValueOf can also return an array) - return Lazy.anyValue({ produce: () => ({ 'Fn::ValueOf': [param.logicalId, value[1]] }) }); + return Lazy.any({ produce: () => ({ 'Fn::ValueOf': [param.logicalId, value[1]] }) }); } default: // I don't want to hard-code the list of supported Rules-specific intrinsics in this function; diff --git a/packages/@aws-cdk/core/lib/lazy.ts b/packages/@aws-cdk/core/lib/lazy.ts index c4fa348dd56db..58eb3bd6522b9 100644 --- a/packages/@aws-cdk/core/lib/lazy.ts +++ b/packages/@aws-cdk/core/lib/lazy.ts @@ -13,6 +13,16 @@ export interface IStringProducer { produce(context: IResolveContext): string | undefined; } +/** + * Interface for (stable) lazy string producers + */ +export interface IStableStringProducer { + /** + * Produce the string value + */ + produce(): string | undefined; +} + /** * Interface for lazy list producers */ @@ -23,6 +33,16 @@ export interface IListProducer { produce(context: IResolveContext): string[] | undefined; } +/** + * Interface for (stable) lazy list producers + */ +export interface IStableListProducer { + /** + * Produce the list value + */ + produce(): string[] | undefined; +} + /** * Interface for lazy number producers */ @@ -33,6 +53,16 @@ export interface INumberProducer { produce(context: IResolveContext): number | undefined; } +/** + * Interface for (stable) lazy number producers + */ +export interface IStableNumberProducer { + /** + * Produce the number value + */ + produce(): number | undefined; +} + /** * Interface for lazy untyped value producers */ @@ -43,6 +73,16 @@ export interface IAnyProducer { produce(context: IResolveContext): any; } +/** + * Interface for (stable) lazy untyped value producers + */ +export interface IStableAnyProducer { + /** + * Produce the value + */ + produce(): any; +} + /** * Options for creating a lazy string token */ @@ -100,30 +140,202 @@ export interface LazyAnyValueOptions { * will only be calculated later, during synthesis. */ export class Lazy { + /** + * Defer the calculation of a string value to synthesis time + * + * Use this if you want to render a string to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * If you are simply looking to force a value to a `string` type and don't need + * the calculation to be deferred, use `Token.asString()` instead. + * + * @deprecated Use `Lazy.string()` or `Lazy.uncachedString()` instead. + */ public static stringValue(producer: IStringProducer, options: LazyStringValueOptions = {}) { - return Token.asString(new LazyString(producer), options); + return Token.asString(new LazyString(producer, false), options); + } + + /** + * Defer the one-time calculation of a string value to synthesis time + * + * Use this if you want to render a string to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * If you are simply looking to force a value to a `string` type and don't need + * the calculation to be deferred, use `Token.asString()` instead. + * + * The inner function will only be invoked once, and the resolved value + * cannot depend on the Stack the Token is used in. + */ + public static string(producer: IStableStringProducer, options: LazyStringValueOptions = {}) { + return Token.asString(new LazyString(producer, true), options); + } + + /** + * Defer the calculation of a string value to synthesis time + * + * Use of this function is not recommended; unless you know you need it for sure, you + * probably don't. Use `Lazy.string()` instead. + * + * The inner function may be invoked multiple times during synthesis. You + * should only use this method if the returned value depends on variables + * that may change during the Aspect application phase of synthesis, or if + * the value depends on the Stack the value is being used in. Both of these + * cases are rare, and only ever occur for AWS Construct Library authors. + */ + public static uncachedString(producer: IStringProducer, options: LazyStringValueOptions = {}) { + return Token.asString(new LazyString(producer, false), options); } + /** + * Defer the one-time calculation of a number value to synthesis time + * + * Use this if you want to render a number to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * If you are simply looking to force a value to a `number` type and don't need + * the calculation to be deferred, use `Token.asNumber()` instead. + * + * @deprecated Use `Lazy.number()` or `Lazy.uncachedNumber()` instead. + */ public static numberValue(producer: INumberProducer) { - return Token.asNumber(new LazyNumber(producer)); + return Token.asNumber(new LazyNumber(producer, false)); + } + + /** + * Defer the one-time calculation of a number value to synthesis time + * + * Use this if you want to render a number to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * If you are simply looking to force a value to a `number` type and don't need + * the calculation to be deferred, use `Token.asNumber()` instead. + * + * The inner function will only be invoked once, and the resolved value + * cannot depend on the Stack the Token is used in. + */ + public static number(producer: IStableNumberProducer) { + return Token.asNumber(new LazyNumber(producer, true)); + } + + /** + * Defer the calculation of a number value to synthesis time + * + * Use of this function is not recommended; unless you know you need it for sure, you + * probably don't. Use `Lazy.number()` instead. + * + * The inner function may be invoked multiple times during synthesis. You + * should only use this method if the returned value depends on variables + * that may change during the Aspect application phase of synthesis, or if + * the value depends on the Stack the value is being used in. Both of these + * cases are rare, and only ever occur for AWS Construct Library authors. + */ + public static uncachedNumber(producer: INumberProducer) { + return Token.asNumber(new LazyNumber(producer, false)); } + /** + * Defer the one-time calculation of a list value to synthesis time + * + * Use this if you want to render a list to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * If you are simply looking to force a value to a `string[]` type and don't need + * the calculation to be deferred, use `Token.asList()` instead. + * + * @deprecated Use `Lazy.list()` or `Lazy.uncachedList()` instead. + */ public static listValue(producer: IListProducer, options: LazyListValueOptions = {}) { - return Token.asList(new LazyList(producer, options), options); + return Token.asList(new LazyList(producer, false, options), options); + } + + /** + * Defer the calculation of a list value to synthesis time + * + * Use of this function is not recommended; unless you know you need it for sure, you + * probably don't. Use `Lazy.list()` instead. + * + * The inner function may be invoked multiple times during synthesis. You + * should only use this method if the returned value depends on variables + * that may change during the Aspect application phase of synthesis, or if + * the value depends on the Stack the value is being used in. Both of these + * cases are rare, and only ever occur for AWS Construct Library authors. + */ + public static uncachedList(producer: IListProducer, options: LazyListValueOptions = {}) { + return Token.asList(new LazyList(producer, false, options), options); + } + + /** + * Defer the one-time calculation of a list value to synthesis time + * + * Use this if you want to render a list to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * If you are simply looking to force a value to a `string[]` type and don't need + * the calculation to be deferred, use `Token.asList()` instead. + * + * The inner function will only be invoked once, and the resolved value + * cannot depend on the Stack the Token is used in. + */ + public static list(producer: IStableListProducer, options: LazyListValueOptions = {}) { + return Token.asList(new LazyList(producer, true, options), options); } + /** + * Defer the one-time calculation of an arbitrarily typed value to synthesis time + * + * Use this if you want to render an object to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * @deprecated Use `Lazy.any()` or `Lazy.uncachedAny()` instead. + */ public static anyValue(producer: IAnyProducer, options: LazyAnyValueOptions = {}): IResolvable { - return new LazyAny(producer, options); + return new LazyAny(producer, false, options); + } + + /** + * Defer the one-time calculation of an arbitrarily typed value to synthesis time + * + * Use this if you want to render an object to a template whose actual value depends on + * some state mutation that may happen after the construct has been created. + * + * The inner function will only be invoked one time and cannot depend on + * resolution context. + */ + public static any(producer: IStableAnyProducer, options: LazyAnyValueOptions = {}): IResolvable { + return new LazyAny(producer, true, options); + } + + /** + * Defer the calculation of an untyped value to synthesis time + * + * Use of this function is not recommended; unless you know you need it for sure, you + * probably don't. Use `Lazy.any()` instead. + * + * The inner function may be invoked multiple times during synthesis. You + * should only use this method if the returned value depends on variables + * that may change during the Aspect application phase of synthesis, or if + * the value depends on the Stack the value is being used in. Both of these + * cases are rare, and only ever occur for AWS Construct Library authors. + */ + public static uncachedAny(producer: IAnyProducer, options: LazyAnyValueOptions = {}): IResolvable { + return new LazyAny(producer, false, options); } private constructor() { } } -abstract class LazyBase implements IResolvable { + +interface ILazyProducer { + produce(context: IResolveContext): A | undefined; +} + +abstract class LazyBase implements IResolvable { public readonly creationStack: string[]; + private _cached?: A; - constructor() { + constructor(private readonly producer: ILazyProducer, private readonly cache: boolean) { // Stack trace capture is conditionned to `debugModeEnabled()`, because // lazies can be created in a fairly thrashy way, and the stack traces are // large and slow to obtain; but are mostly useful only when debugging a @@ -133,7 +345,13 @@ abstract class LazyBase implements IResolvable { : [`Execute again with ${CDK_DEBUG}=true to capture stack traces`]; } - public abstract resolve(context: IResolveContext): any; + public resolve(context: IResolveContext) { + if (this.cache) { + return this._cached ?? (this._cached = this.producer.produce(context)); + } else { + return this.producer.produce(context); + } + } public toString() { return Token.asString(this); @@ -150,50 +368,36 @@ abstract class LazyBase implements IResolvable { } -class LazyString extends LazyBase { - constructor(private readonly producer: IStringProducer) { - super(); - } - - public resolve(context: IResolveContext) { - return this.producer.produce(context); - } +class LazyString extends LazyBase { } -class LazyNumber extends LazyBase { - constructor(private readonly producer: INumberProducer) { - super(); - } - - public resolve(context: IResolveContext) { - return this.producer.produce(context); - } +class LazyNumber extends LazyBase { } -class LazyList extends LazyBase { - constructor(private readonly producer: IListProducer, private readonly options: LazyListValueOptions = {}) { - super(); +class LazyList extends LazyBase> { + constructor(producer: IListProducer, cache: boolean, private readonly options: LazyListValueOptions = {}) { + super(producer, cache); } public resolve(context: IResolveContext) { - const ret = this.producer.produce(context); - if (ret !== undefined && ret.length === 0 && this.options.omitEmpty) { + const resolved = super.resolve(context); + if (resolved?.length === 0 && this.options.omitEmpty) { return undefined; } - return ret; + return resolved; } } -class LazyAny extends LazyBase { - constructor(private readonly producer: IAnyProducer, private readonly options: LazyAnyValueOptions = {}) { - super(); +class LazyAny extends LazyBase { + constructor(producer: IAnyProducer, cache: boolean, private readonly options: LazyAnyValueOptions = {}) { + super(producer, cache); } public resolve(context: IResolveContext) { - const ret = this.producer.produce(context); - if (Array.isArray(ret) && ret.length === 0 && this.options.omitEmptyArray) { + const resolved = super.resolve(context); + if (Array.isArray(resolved) && resolved.length === 0 && this.options.omitEmptyArray) { return undefined; } - return ret; + return resolved; } } diff --git a/packages/@aws-cdk/core/lib/nested-stack.ts b/packages/@aws-cdk/core/lib/nested-stack.ts index cca4b827b57cf..f130d00ded80b 100644 --- a/packages/@aws-cdk/core/lib/nested-stack.ts +++ b/packages/@aws-cdk/core/lib/nested-stack.ts @@ -120,8 +120,9 @@ export class NestedStack extends Stack { this.parameters = props.parameters || {}; this.resource = new CfnStack(parentScope, `${id}.NestedStackResource`, { - templateUrl: Lazy.stringValue({ produce: () => this._templateUrl || '' }), - parameters: Lazy.anyValue({ produce: () => Object.keys(this.parameters).length > 0 ? this.parameters : undefined }), + // This value cannot be cached since it changes during the synthesis phase + templateUrl: Lazy.uncachedString({ produce: () => this._templateUrl || '' }), + parameters: Lazy.any({ produce: () => Object.keys(this.parameters).length > 0 ? this.parameters : undefined }), notificationArns: props.notificationArns, timeoutInMinutes: props.timeout ? props.timeout.toMinutes() : undefined, }); diff --git a/packages/@aws-cdk/core/lib/private/cfn-reference.ts b/packages/@aws-cdk/core/lib/private/cfn-reference.ts index b25597602f6b6..34c3da0138ae8 100644 --- a/packages/@aws-cdk/core/lib/private/cfn-reference.ts +++ b/packages/@aws-cdk/core/lib/private/cfn-reference.ts @@ -50,7 +50,7 @@ export class CfnReference extends Reference { * the prepare() phase (for the purpose of cross-stack references), it's * important that the state isn't lost if it's lazily created, like so: * - * Lazy.stringValue({ produce: () => new CfnReference(...) }) + * Lazy.string({ produce: () => new CfnReference(...) }) * */ public static for(target: CfnElement, attribute: string, refRender?: ReferenceRendering) { diff --git a/packages/@aws-cdk/core/lib/private/metadata-resource.ts b/packages/@aws-cdk/core/lib/private/metadata-resource.ts index 09813ccb87faa..ff84b931f819b 100644 --- a/packages/@aws-cdk/core/lib/private/metadata-resource.ts +++ b/packages/@aws-cdk/core/lib/private/metadata-resource.ts @@ -51,7 +51,7 @@ export class MetadataResource extends Construct { const resource = new CfnResource(this, 'Default', { type: 'AWS::CDK::Metadata', properties: { - Modules: Lazy.stringValue({ produce: () => MetadataResource.modulesProperty() }), + Modules: Lazy.string({ produce: () => MetadataResource.modulesProperty() }), }, }); diff --git a/packages/@aws-cdk/core/lib/resource.ts b/packages/@aws-cdk/core/lib/resource.ts index 6a810b8a971e8..917a2c442dcf1 100644 --- a/packages/@aws-cdk/core/lib/resource.ts +++ b/packages/@aws-cdk/core/lib/resource.ts @@ -126,7 +126,7 @@ export abstract class Resource extends CoreConstruct implements IResource { // auto-generate only if cross-env is required this._physicalName = undefined; this._allowCrossEnvironment = true; - physicalName = Lazy.stringValue({ produce: () => this._physicalName }); + physicalName = Lazy.string({ produce: () => this._physicalName }); } else if (props.physicalName && !Token.isUnresolved(props.physicalName)) { // concrete value specified by the user this._physicalName = props.physicalName; @@ -181,7 +181,7 @@ export abstract class Resource extends CoreConstruct implements IResource { * @experimental */ protected getResourceNameAttribute(nameAttr: string) { - return Lazy.stringValue({ + return Lazy.uncachedString({ produce: (context: IResolveContext) => { const consumingStack = Stack.of(context.scope); diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts index 67524b0b96c1c..929338f8fbc05 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts @@ -233,6 +233,10 @@ export class DefaultStackSynthesizer extends StackSynthesizer { } public bind(stack: Stack): void { + if (this._stack !== undefined) { + throw new Error('A StackSynthesizer can only be used for one Stack: create a new instance to use with a different Stack'); + } + this._stack = stack; const qualifier = this.props.qualifier ?? stack.node.tryGetContext(BOOTSTRAP_QUALIFIER_CONTEXT) ?? DefaultStackSynthesizer.DEFAULT_QUALIFIER; diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts index bacf1514a8b4b..e6dfd63235b8c 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts @@ -48,6 +48,9 @@ export class LegacyStackSynthesizer extends StackSynthesizer { private readonly addedImageAssets = new Set(); public bind(stack: Stack): void { + if (this.stack !== undefined) { + throw new Error('A StackSynthesizer can only be used for one Stack: create a new instance to use with a different Stack'); + } this.stack = stack; } diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts index bc909775fee8a..8eb05d34cba9e 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts @@ -18,6 +18,9 @@ export class NestedStackSynthesizer extends StackSynthesizer { } public bind(stack: Stack): void { + if (this.stack !== undefined) { + throw new Error('A StackSynthesizer can only be used for one Stack: create a new instance to use with a different Stack'); + } this.stack = stack; } diff --git a/packages/@aws-cdk/core/lib/token.ts b/packages/@aws-cdk/core/lib/token.ts index 35f2667f67365..5f98db7a4f11f 100644 --- a/packages/@aws-cdk/core/lib/token.ts +++ b/packages/@aws-cdk/core/lib/token.ts @@ -179,7 +179,7 @@ export class Tokenization { // only convert numbers to strings so that Refs, conditions, and other things don't end up synthesizing as [object object] if (Token.isUnresolved(x)) { - return Lazy.stringValue({ + return Lazy.uncachedString({ produce: context => { const resolved = context.resolve(x); return typeof resolved !== 'number' ? resolved : `${resolved}`; diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index 7b1dadc4bbc23..81211b655baf5 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -171,8 +171,8 @@ "devDependencies": { "@types/lodash": "^4.14.165", "@types/minimatch": "^3.0.3", - "@types/node": "^10.17.46", - "@types/sinon": "^9.0.8", + "@types/node": "^10.17.47", + "@types/sinon": "^9.0.9", "cdk-build-tools": "0.0.0", "cfn2ts": "0.0.0", "fast-check": "^2.7.0", diff --git a/packages/@aws-cdk/core/test/cfn-json.test.ts b/packages/@aws-cdk/core/test/cfn-json.test.ts index 85ee12c822cb8..150d1971cc39f 100644 --- a/packages/@aws-cdk/core/test/cfn-json.test.ts +++ b/packages/@aws-cdk/core/test/cfn-json.test.ts @@ -42,7 +42,7 @@ nodeunitShim({ value: { [other.ref]: 1234, world: { - bar: `this is a ${Lazy.stringValue({ produce: () => 'I am lazy' })}`, + bar: `this is a ${Lazy.string({ produce: () => 'I am lazy' })}`, }, }, }); @@ -62,7 +62,7 @@ nodeunitShim({ const res = new CfnResource(stack, 'MyResource', { type: 'Foo' }); const cfnjson = new CfnJson(stack, 'MyCfnJson', { value: { - [`ref=${res.ref}`]: `this is a ${Lazy.stringValue({ produce: () => 'I am lazy' })}`, + [`ref=${res.ref}`]: `this is a ${Lazy.string({ produce: () => 'I am lazy' })}`, }, }); diff --git a/packages/@aws-cdk/core/test/cloudformation-json.test.ts b/packages/@aws-cdk/core/test/cloudformation-json.test.ts index 8d7e571501462..e9d850eb178a2 100644 --- a/packages/@aws-cdk/core/test/cloudformation-json.test.ts +++ b/packages/@aws-cdk/core/test/cloudformation-json.test.ts @@ -155,7 +155,7 @@ nodeunitShim({ 'Doubly nested strings evaluate correctly in JSON context'(test: Test) { // WHEN const stack = new Stack(); - const fidoSays = Lazy.stringValue({ produce: () => 'woof' }); + const fidoSays = Lazy.string({ produce: () => 'woof' }); // WHEN const resolved = stack.resolve(stack.toJsonString({ @@ -171,7 +171,7 @@ nodeunitShim({ 'Doubly nested intrinsics evaluate correctly in JSON context'(test: Test) { // GIVEN const stack = new Stack(); - const fidoSays = Lazy.anyValue({ produce: () => ({ Ref: 'Something' }) }); + const fidoSays = Lazy.any({ produce: () => ({ Ref: 'Something' }) }); // WHEN const resolved = stack.resolve(stack.toJsonString({ @@ -188,7 +188,7 @@ nodeunitShim({ 'Quoted strings in embedded JSON context are escaped'(test: Test) { // GIVEN const stack = new Stack(); - const fidoSays = Lazy.stringValue({ produce: () => '"woof"' }); + const fidoSays = Lazy.string({ produce: () => '"woof"' }); // WHEN const resolved = stack.resolve(stack.toJsonString({ @@ -235,6 +235,30 @@ nodeunitShim({ test.done(); }, + + 'Every Token used inside a JSONified string is given an opportunity to be uncached'(test: Test) { + // Check that tokens aren't accidentally fully resolved by the first invocation/resolution + // of toJsonString(). On every evaluation, Tokens referenced inside the structure should be + // given a chance to be either cached or uncached. + // + // (NOTE: This does not check whether the implementation of toJsonString() itself is cached or + // not; that depends on aws/aws-cdk#11224 and should be done in a different PR). + + // GIVEN + const app = new App(); + const stack = new Stack(app, 'Stack1'); + + // WHEN + let counter = 0; + const counterString = Token.asString({ resolve: () => `${++counter}` }); + const jsonString = stack.toJsonString({ counterString }); + + // THEN + expect(stack.resolve(jsonString)).toEqual('{"counterString":"1"}'); + expect(stack.resolve(jsonString)).toEqual('{"counterString":"2"}'); + + test.done(); + }, }); /** @@ -243,6 +267,6 @@ nodeunitShim({ function tokensThatResolveTo(value: any): Token[] { return [ new Intrinsic(value), - Lazy.anyValue({ produce: () => value }), + Lazy.any({ produce: () => value }), ]; } diff --git a/packages/@aws-cdk/core/test/construct.test.ts b/packages/@aws-cdk/core/test/construct.test.ts index 872ba9dceedca..a190ebaac7327 100644 --- a/packages/@aws-cdk/core/test/construct.test.ts +++ b/packages/@aws-cdk/core/test/construct.test.ts @@ -67,7 +67,7 @@ nodeunitShim({ 'dont allow unresolved tokens to be used in construct IDs'(test: Test) { // GIVEN const root = new Root(); - const token = Lazy.stringValue({ produce: () => 'lazy' }); + const token = Lazy.string({ produce: () => 'lazy' }); // WHEN + THEN test.throws(() => new Construct(root, `MyID: ${token}`), /Cannot use tokens in construct ID: MyID: \${Token/); diff --git a/packages/@aws-cdk/core/test/duration.test.ts b/packages/@aws-cdk/core/test/duration.test.ts index 4d84d80c3eaf7..70b7cb786e344 100644 --- a/packages/@aws-cdk/core/test/duration.test.ts +++ b/packages/@aws-cdk/core/test/duration.test.ts @@ -145,7 +145,7 @@ nodeunitShim({ 'to human string'(test: Test) { test.equal(Duration.minutes(0).toHumanString(), '0 minutes'); - test.equal(Duration.minutes(Lazy.numberValue({ produce: () => 5 })).toHumanString(), ' minutes'); + test.equal(Duration.minutes(Lazy.number({ produce: () => 5 })).toHumanString(), ' minutes'); test.equal(Duration.minutes(10).toHumanString(), '10 minutes'); test.equal(Duration.minutes(1).toHumanString(), '1 minute'); diff --git a/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts b/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts index 2d6e5e93d8d2a..22539e435b214 100644 --- a/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts +++ b/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts @@ -113,7 +113,7 @@ nodeunitShim({ isGeneratedWhenNeededMarker: { 'correctly response for other tokens'(test: Test) { test.ok(!isGeneratedWhenNeededMarker('this is not even a token!')); - test.ok(!isGeneratedWhenNeededMarker(Lazy.stringValue({ produce: () => 'Bazinga!' }))); + test.ok(!isGeneratedWhenNeededMarker(Lazy.string({ produce: () => 'Bazinga!' }))); test.done(); }, diff --git a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts index ce64cf5991e1a..f62df683c422a 100644 --- a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts +++ b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts @@ -123,7 +123,7 @@ nodeunitShim({ class MyCfnResource extends AbstractCfnResource { protected get cfnProperties(): { [key: string]: any } { return { - lazykey: Lazy.stringValue({ produce: () => 'LazyResolved!' }), + lazykey: Lazy.string({ produce: () => 'LazyResolved!' }), cfnparamkey: cfnparam, }; } @@ -178,7 +178,7 @@ nodeunitShim({ constructor(scope: Construct, id: string) { super(scope, id); - this.lazykey = Lazy.stringValue({ produce: () => 'LazyResolved!' }); + this.lazykey = Lazy.string({ produce: () => 'LazyResolved!' }); } protected get cfnProperties(): { [key: string]: any } { diff --git a/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts b/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts index 7ae1681d011bd..0b30ec049f6ae 100644 --- a/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts +++ b/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts @@ -256,6 +256,18 @@ nodeunitShim({ test.done(); }, + + 'cannot use same synthesizer for multiple stacks'(test: Test) { + // GIVEN + const synthesizer = new DefaultStackSynthesizer(); + + // WHEN + new Stack(app, 'Stack2', { synthesizer }); + test.throws(() => { + new Stack(app, 'Stack3', { synthesizer }); + }, /A StackSynthesizer can only be used for one Stack/); + test.done(); + }, }); /** diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index 50a91b7be7827..dad2a64b3235c 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -309,7 +309,7 @@ nodeunitShim({ const stack2 = new Stack(app, 'Stack2'); // WHEN - used in another stack - new CfnParameter(stack2, 'SomeParameter', { type: 'String', default: Lazy.stringValue({ produce: () => account1 }) }); + new CfnParameter(stack2, 'SomeParameter', { type: 'String', default: Lazy.string({ produce: () => account1 }) }); const assembly = app.synth(); const template1 = assembly.getStackByName(stack1.stackName).template; diff --git a/packages/@aws-cdk/core/test/tokens.test.ts b/packages/@aws-cdk/core/test/tokens.test.ts index e8dec9c64212a..39f4332d0ad86 100644 --- a/packages/@aws-cdk/core/test/tokens.test.ts +++ b/packages/@aws-cdk/core/test/tokens.test.ts @@ -273,7 +273,7 @@ nodeunitShim({ 'tokens can be nested in hash keys'(test: Test) { // GIVEN - const token = new Intrinsic(Lazy.stringValue({ produce: () => Lazy.stringValue({ produce: (() => 'I am a string') }) })); + const token = new Intrinsic(Lazy.string({ produce: () => Lazy.string({ produce: (() => 'I am a string') }) })); // WHEN const s = { @@ -285,6 +285,55 @@ nodeunitShim({ test.done(); }, + 'Function passed to Lazy.uncachedString() is evaluated multiple times'(test: Test) { + // GIVEN + let counter = 0; + const counterString = Lazy.uncachedString({ produce: () => `${++counter}` }); + + // THEN + expect(resolve(counterString)).toEqual('1'); + expect(resolve(counterString)).toEqual('2'); + + test.done(); + }, + + 'Function passed to Lazy.string() is only evaluated once'(test: Test) { + // GIVEN + let counter = 0; + const counterString = Lazy.string({ produce: () => `${++counter}` }); + + // THEN + expect(resolve(counterString)).toEqual('1'); + expect(resolve(counterString)).toEqual('1'); + + test.done(); + }, + + 'Uncached tokens returned by cached tokens are still evaluated multiple times'(test: Test) { + // Check that nested token returns aren't accidentally fully resolved by the + // first resolution. On every evaluation, Tokens referenced inside the + // structure should be given a chance to be either cached or uncached. + + // GIVEN + let counter = 0; + const uncachedToken = Lazy.uncachedString({ produce: () => `${++counter}` }); + // Directly returned + const counterString1 = Lazy.string({ produce: () => uncachedToken }); + // In quoted context + const counterString2 = Lazy.string({ produce: () => `->${uncachedToken}` }); + // In object context + const counterObject = Lazy.any({ produce: () => ({ finalCount: uncachedToken }) }); + + // THEN + expect(resolve(counterString1)).toEqual('1'); + expect(resolve(counterString1)).toEqual('2'); + expect(resolve(counterString2)).toEqual('->3'); + expect(resolve(counterString2)).toEqual('->4'); + expect(resolve(counterObject)).toEqual({ finalCount: '5' }); + + test.done(); + }, + 'tokens can be nested and concatenated in hash keys'(test: Test) { // GIVEN const innerToken = new Intrinsic( 'toot'); @@ -591,7 +640,7 @@ nodeunitShim({ 'creation stack is attached to errors emitted during resolve with CDK_DEBUG=true'(test: Test) { function showMeInTheStackTrace() { - return Lazy.stringValue({ produce: () => { throw new Error('fooError'); } }); + return Lazy.string({ produce: () => { throw new Error('fooError'); } }); } const previousValue = process.env.CDK_DEBUG; @@ -658,7 +707,7 @@ nodeunitShim({ 'lazy Ref remains the same'(test: Test) { const resolvedVal = { Ref: 'SomeLogicalId' }; - const tokenizedVal = Lazy.anyValue({ + const tokenizedVal = Lazy.any({ produce: () => resolvedVal, }); const res = Tokenization.stringifyNumber(tokenizedVal as any) as any; @@ -720,7 +769,7 @@ class DataType extends BaseDataType { function tokensThatResolveTo(value: any): Token[] { return [ new Intrinsic(value), - Lazy.anyValue({ produce: () => value }), + Lazy.any({ produce: () => value }), ]; } diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index ba8017fa964fc..92c36d248b6f5 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -79,8 +79,8 @@ "@aws-cdk/aws-ssm": "0.0.0", "@types/aws-lambda": "^8.10.64", "@types/fs-extra": "^8.1.1", - "@types/sinon": "^9.0.8", - "aws-sdk": "^2.797.0", + "@types/sinon": "^9.0.9", + "aws-sdk": "^2.799.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts b/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts index 1e2adadafb52d..0c661b61e9251 100644 --- a/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts +++ b/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts @@ -116,7 +116,7 @@ export class PublishAssetsAction extends CoreConstruct implements codepipeline.I commands: `npm install -g cdk-assets${installSuffix}`, }, build: { - commands: Lazy.listValue({ produce: () => this.commands }), + commands: Lazy.list({ produce: () => this.commands }), }, }, }), diff --git a/packages/@monocdk-experiment/assert/package.json b/packages/@monocdk-experiment/assert/package.json index 1c56ccf720d75..f7897e0d5f9bd 100644 --- a/packages/@monocdk-experiment/assert/package.json +++ b/packages/@monocdk-experiment/assert/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@monocdk-experiment/rewrite-imports": "0.0.0", "@types/jest": "^26.0.15", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "cdk-build-tools": "0.0.0", "constructs": "^3.2.0", "jest": "^26.6.3", diff --git a/packages/@monocdk-experiment/rewrite-imports/package.json b/packages/@monocdk-experiment/rewrite-imports/package.json index b68d68970af52..f7aa681b86f4a 100644 --- a/packages/@monocdk-experiment/rewrite-imports/package.json +++ b/packages/@monocdk-experiment/rewrite-imports/package.json @@ -38,7 +38,7 @@ "devDependencies": { "@types/glob": "^7.1.3", "@types/jest": "^26.0.15", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "cdk-build-tools": "0.0.0", "pkglint": "0.0.0" }, diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index b8cbe431156b0..27e2540bce14f 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -146,6 +146,7 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", + "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -211,6 +212,7 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", + "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -239,6 +241,7 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-ses-actions": "0.0.0", + "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", @@ -262,7 +265,7 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "@types/fs-extra": "^8.1.1", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "cdk-build-tools": "0.0.0", "constructs": "^3.2.0", "fs-extra": "^9.0.1", diff --git a/packages/aws-cdk/.eslintrc.js b/packages/aws-cdk/.eslintrc.js index 463cac21e7e1d..b5e0934b9d544 100644 --- a/packages/aws-cdk/.eslintrc.js +++ b/packages/aws-cdk/.eslintrc.js @@ -1,4 +1,4 @@ const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.ignorePatterns.push('lib/init-templates/*/typescript/**/*.ts'); +baseConfig.ignorePatterns.push('lib/init-templates/**/typescript/**/*.ts'); baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; module.exports = baseConfig; diff --git a/packages/aws-cdk/.npmignore b/packages/aws-cdk/.npmignore index 64b361e8e8b52..c9307723524b0 100644 --- a/packages/aws-cdk/.npmignore +++ b/packages/aws-cdk/.npmignore @@ -11,19 +11,19 @@ dist .LAST_BUILD *.snk -!lib/init-templates/*/*/tsconfig.json !test/integ/cli/**/*.js !test/integ/run-wrappers/dist *.tsbuildinfo +jest.config.js tsconfig.json +.eslintrc.js # init templates include default tsconfig.json files which we need !lib/init-templates/**/tsconfig.json -.eslintrc.js -jest.config.js !lib/init-templates/**/jest.config.js + !test/integ/cli/jest.config.js !test/integ/cli-regression-patches/**/* @@ -31,4 +31,4 @@ jest.config.js # exclude cdk artifacts **/cdk.out -junit.xml \ No newline at end of file +junit.xml diff --git a/packages/aws-cdk/CONTRIBUTING.md b/packages/aws-cdk/CONTRIBUTING.md index f0839777aecc0..8df338dad6049 100644 --- a/packages/aws-cdk/CONTRIBUTING.md +++ b/packages/aws-cdk/CONTRIBUTING.md @@ -58,6 +58,9 @@ than one test will run at a time in that region. If `AWS_REGIONS` is not set, all tests will sequentially run in the one region set in `AWS_REGION`. +Run with `env INTEG_NO_CLEAN=1` to forego cleaning up the temporary directory, +in order to be able to debug 'cdk synth' output. + ### CLI integration tests CLI tests will exercise a number of common CLI scenarios, and deploy actual diff --git a/packages/aws-cdk/bin/cdk.ts b/packages/aws-cdk/bin/cdk.ts index bb87342478f98..e305da55164e5 100644 --- a/packages/aws-cdk/bin/cdk.ts +++ b/packages/aws-cdk/bin/cdk.ts @@ -37,7 +37,7 @@ async function parseCommandLineArguments() { // // ./prog --arg one --arg two position => will parse to { arg: ['one', 'two'], _: ['positional'] }. - const initTemplateLanuages = await availableInitLanguages; + const initTemplateLanuages = await availableInitLanguages(); return yargs .env('CDK') .usage('Usage: cdk -a COMMAND') @@ -46,6 +46,7 @@ async function parseCommandLineArguments() { .option('plugin', { type: 'array', alias: 'p', desc: 'Name or path of a node package that extend the CDK features. Can be specified multiple times', nargs: 1 }) .option('trace', { type: 'boolean', desc: 'Print trace for stack warnings' }) .option('strict', { type: 'boolean', desc: 'Do not construct stacks with warnings' }) + .option('lookups', { type: 'boolean', desc: 'Perform context lookups (synthesis fails if this is disabled and context lookups need to be performed)', default: true }) .option('ignore-errors', { type: 'boolean', default: false, desc: 'Ignores synthesis errors, which will likely produce an invalid output' }) .option('json', { type: 'boolean', alias: 'j', desc: 'Use JSON output instead of YAML when templates are printed to STDOUT', default: false }) .option('verbose', { type: 'boolean', alias: 'v', desc: 'Show debug logs (specify multiple times to increase verbosity)', default: false }) diff --git a/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts b/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts index 9f3e32ddb2389..3a454177469f0 100644 --- a/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts +++ b/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts @@ -66,9 +66,16 @@ export class CloudExecutable { while (true) { const assembly = await this.props.synthesizer(this.props.sdkProvider, this.props.configuration); - if (assembly.manifest.missing) { + if (assembly.manifest.missing && assembly.manifest.missing.length > 0) { const missingKeys = missingContextKeys(assembly.manifest.missing); + if (!this.canLookup) { + throw new Error( + 'Context lookups have been disabled. ' + + 'Make sure all necessary context is already in \'cdk.context.json\' by running \'cdk synth\' on a machine with sufficient AWS credentials and committing the result. ' + + `Missing context keys: '${Array.from(missingKeys).join(', ')}'`); + } + let tryLookup = true; if (previouslyMissingKeys && setsEqual(missingKeys, previouslyMissingKeys)) { debug('Not making progress trying to resolve environmental context. Giving up.'); @@ -162,6 +169,10 @@ export class CloudExecutable { await fs.writeFile(stack.templateFullPath, JSON.stringify(stack.template, undefined, 2), { encoding: 'utf-8' }); } } + + private get canLookup() { + return !!(this.props.configuration.settings.get(['lookups']) ?? true); + } } /** diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/csharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/README.md b/packages/aws-cdk/lib/init-templates/v1/app/csharp/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/README.md rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/README.md diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v1/app/csharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/app/csharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/add-project.hook.ts index c839c1e01db08..37b1fe6ad3e5f 100644 --- a/packages/aws-cdk/lib/init-templates/app/csharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/v1/app/csharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../init'; +import { InvokeHook } from '../../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/app/csharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs diff --git a/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs rename to packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/README.md b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/README.md rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/README.md diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/app/fsharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts index efeed98d57ee2..b9b091fa35ff1 100644 --- a/packages/aws-cdk/lib/init-templates/app/fsharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../init'; +import { InvokeHook } from '../../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs diff --git a/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/Program.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs rename to packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/Program.template.fs diff --git a/packages/aws-cdk/lib/init-templates/app/info.json b/packages/aws-cdk/lib/init-templates/v1/app/info.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/info.json rename to packages/aws-cdk/lib/init-templates/v1/app/info.json diff --git a/packages/aws-cdk/lib/init-templates/app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/java/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/app/java/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/app/java/README.md b/packages/aws-cdk/lib/init-templates/v1/app/java/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/README.md rename to packages/aws-cdk/lib/init-templates/v1/app/java/README.md diff --git a/packages/aws-cdk/lib/init-templates/app/java/cdk.json b/packages/aws-cdk/lib/init-templates/v1/app/java/cdk.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/cdk.json rename to packages/aws-cdk/lib/init-templates/v1/app/java/cdk.json diff --git a/packages/aws-cdk/lib/init-templates/app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v1/app/java/pom.template.xml similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/pom.template.xml rename to packages/aws-cdk/lib/init-templates/v1/app/java/pom.template.xml diff --git a/packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java rename to packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java diff --git a/packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java rename to packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java diff --git a/packages/aws-cdk/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java b/packages/aws-cdk/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java rename to packages/aws-cdk/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/README.md b/packages/aws-cdk/lib/init-templates/v1/app/javascript/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/README.md rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/README.md diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/v1/app/javascript/bin/%name%.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/bin/%name%.template.js rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/bin/%name%.template.js diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/app/javascript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/lib/%name%-stack.template.js rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/v1/app/javascript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/package.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/v1/app/javascript/test/%name%.test.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/javascript/test/%name%.test.template.js rename to packages/aws-cdk/lib/init-templates/v1/app/javascript/test/%name%.test.template.js diff --git a/packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py rename to packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py diff --git a/packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/__init__.py rename to packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/app/python/README.template.md b/packages/aws-cdk/lib/init-templates/v1/app/python/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/app/python/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v1/app/python/app.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/app.template.py rename to packages/aws-cdk/lib/init-templates/v1/app/python/app.template.py diff --git a/packages/aws-cdk/lib/init-templates/app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/app/python/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/python/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/v1/app/python/requirements.txt similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/requirements.txt rename to packages/aws-cdk/lib/init-templates/v1/app/python/requirements.txt diff --git a/packages/aws-cdk/lib/init-templates/app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v1/app/python/setup.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/setup.template.py rename to packages/aws-cdk/lib/init-templates/v1/app/python/setup.template.py diff --git a/packages/aws-cdk/lib/init-templates/app/python/source.bat b/packages/aws-cdk/lib/init-templates/v1/app/python/source.bat similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/python/source.bat rename to packages/aws-cdk/lib/init-templates/v1/app/python/source.bat diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/README.md b/packages/aws-cdk/lib/init-templates/v1/app/typescript/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/README.md rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/README.md diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/v1/app/typescript/bin/%name%.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/bin/%name%.template.ts rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/bin/%name%.template.ts diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/app/typescript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v1/app/typescript/jest.config.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/jest.config.js rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/jest.config.js diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/lib/%name%-stack.template.ts rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v1/app/typescript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/package.template.json rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/test/%name%.test.template.ts rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts diff --git a/packages/aws-cdk/lib/init-templates/app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v1/app/typescript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/app/typescript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/v1/app/typescript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/lib/info.json b/packages/aws-cdk/lib/init-templates/v1/lib/info.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/info.json rename to packages/aws-cdk/lib/init-templates/v1/lib/info.json diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/jest.config.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/jest.config.js rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/jest.config.js diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/lib/index.template.ts b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/lib/index.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/lib/index.template.ts rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/lib/index.template.ts diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/package.template.json rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/test/%name%.test.template.ts rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts diff --git a/packages/aws-cdk/lib/init-templates/lib/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v1/lib/typescript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/lib/typescript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/v1/lib/typescript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/README.template.md b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/add-project.hook.ts index c839c1e01db08..37b1fe6ad3e5f 100644 --- a/packages/aws-cdk/lib/init-templates/sample-app/csharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../init'; +import { InvokeHook } from '../../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs diff --git a/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/Program.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs rename to packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/Program.template.cs diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/README.template.md b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts index efeed98d57ee2..b9b091fa35ff1 100644 --- a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../init'; +import { InvokeHook } from '../../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs diff --git a/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs rename to packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs diff --git a/packages/aws-cdk/lib/init-templates/sample-app/info.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/info.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/info.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/info.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/README.template.md b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/cdk.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/cdk.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/cdk.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/cdk.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/pom.template.xml similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/pom.template.xml rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/pom.template.xml diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java diff --git a/packages/aws-cdk/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java b/packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java rename to packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/README.template.md b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/bin/%name%.template.js rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/package.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/test/%name%.test.template.js rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js diff --git a/packages/aws-cdk/lib/init-templates/sample-app/javascript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/javascript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/README.template.md b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/app.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/app.template.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/app.template.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/requirements.txt similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/requirements.txt rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/requirements.txt diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/setup.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/setup.template.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/setup.template.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/source.bat b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/source.bat similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/source.bat rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/source.bat diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/tests/__init__.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/tests/__init__.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/__init__.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/__init__.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py rename to packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/README.template.md rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/bin/%name%.template.ts rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/jest.config.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/jest.config.js rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/jest.config.js diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/package.template.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts diff --git a/packages/aws-cdk/lib/init-templates/sample-app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/sample-app/typescript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore new file mode 100644 index 0000000000000..f555633ead8f0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore @@ -0,0 +1,342 @@ +# CDK asset staging directory +.cdk.staging +cdk.out + +# Created by https://www.gitignore.io/api/csharp + +### Csharp ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + + +# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md b/packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md new file mode 100644 index 0000000000000..fee04ca40c848 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md @@ -0,0 +1,14 @@ +# Welcome to your CDK C# project! + +This is a blank project for C# development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. + +## Useful commands + +* `dotnet build src` compile this app +* `cdk deploy` deploy this stack to your default AWS account/region +* `cdk diff` compare deployed stack with current state +* `cdk synth` emits the synthesized CloudFormation template \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts new file mode 100644 index 0000000000000..37b1fe6ad3e5f --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts @@ -0,0 +1,33 @@ +import * as child_process from 'child_process'; +import * as path from 'path'; +import { InvokeHook } from '../../../../init'; + +export const invoke: InvokeHook = async (targetDirectory: string) => { + const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); + const csprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.csproj'); + + const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', csprojPath], { + // Need this for Windows where we want .cmd and .bat to be found as well. + shell: true, + stdio: ['ignore', 'pipe', 'inherit'], + }); + + await new Promise((resolve, reject) => { + const stdout = new Array(); + + child.stdout.on('data', chunk => { + process.stdout.write(chunk); + stdout.push(chunk); + }); + + child.once('error', reject); + + child.once('exit', code => { + if (code === 0) { + resolve(Buffer.concat(stdout).toString('utf-8')); + } else { + reject(new Error(`Could not add project %name.PascalCased%.csproj to solution %name.PascalCased%.sln. Error code: ${code}`)); + } + }); + }); +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json new file mode 100644 index 0000000000000..94c37dee310c0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln new file mode 100644 index 0000000000000..2f92ebd9bda92 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj new file mode 100644 index 0000000000000..0ac3cc0a4c6cb --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj @@ -0,0 +1,19 @@ + + + + Exe + netcoreapp3.1 + + Major + + + + + + + + + + diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs new file mode 100644 index 0000000000000..998db3c5335cd --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs @@ -0,0 +1,12 @@ +using Amazon.CDK.Lib; + +namespace %name.PascalCased% +{ + public class %name.PascalCased%Stack : Stack + { + internal %name.PascalCased%Stack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) + { + // The code that defines your stack goes here + } + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs new file mode 100644 index 0000000000000..26233fcb54b5c --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs @@ -0,0 +1 @@ +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Potential Code Quality Issues", "RECS0026:Possible unassigned object created by 'new'", Justification = "Constructs add themselves to the scope in which they are created")] diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs new file mode 100644 index 0000000000000..93f1e27a57523 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs @@ -0,0 +1,17 @@ +using Amazon.CDK.Lib; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace %name.PascalCased% +{ + sealed class Program + { + public static void Main(string[] args) + { + var app = new App(); + new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); + app.Synth(); + } + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore new file mode 100644 index 0000000000000..f555633ead8f0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore @@ -0,0 +1,342 @@ +# CDK asset staging directory +.cdk.staging +cdk.out + +# Created by https://www.gitignore.io/api/csharp + +### Csharp ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + + +# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md new file mode 100644 index 0000000000000..16f13d4596dcf --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md @@ -0,0 +1,18 @@ +## Welcome to your CDK F# project! + +This is a blank project for F# development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. + +## Useful commands + +* `dotnet build src` compile this app +* `cdk ls` list all stacks in the app +* `cdk synth` emits the synthesized CloudFormation template +* `cdk deploy` deploy this stack to your default AWS account/region +* `cdk diff` compare deployed stack with current state +* `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts new file mode 100644 index 0000000000000..b9b091fa35ff1 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts @@ -0,0 +1,33 @@ +import * as child_process from 'child_process'; +import * as path from 'path'; +import { InvokeHook } from '../../../../init'; + +export const invoke: InvokeHook = async (targetDirectory: string) => { + const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); + const fsprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.fsproj'); + + const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', fsprojPath], { + // Need this for Windows where we want .cmd and .bat to be found as well. + shell: true, + stdio: ['ignore', 'pipe', 'inherit'], + }); + + await new Promise((resolve, reject) => { + const stdout = new Array(); + + child.stdout.on('data', chunk => { + process.stdout.write(chunk); + stdout.push(chunk); + }); + + child.once('error', reject); + + child.once('exit', code => { + if (code === 0) { + resolve(Buffer.concat(stdout).toString('utf-8')); + } else { + reject(new Error(`Could not add project %name.PascalCased%.fsproj to solution %name.PascalCased%.sln. Error code: ${code}`)); + } + }); + }); +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json new file mode 100644 index 0000000000000..a08c461d2a2e2 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln new file mode 100644 index 0000000000000..d73885e1eacb9 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj new file mode 100644 index 0000000000000..226943c6d3bf7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj @@ -0,0 +1,24 @@ + + + + Exe + netcoreapp3.1 + + Major + + + + + + + + + + + + + + + diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs new file mode 100644 index 0000000000000..40f90dc43d77e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs @@ -0,0 +1,8 @@ +namespace %name.PascalCased% + +open Amazon.CDK.Lib + +type %name.PascalCased%Stack(scope, id, props) as this = + inherit Stack(scope, id, props) + + // The code that defines your stack goes here diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs new file mode 100644 index 0000000000000..4b28d1e03ba9a --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs @@ -0,0 +1,11 @@ +open Amazon.CDK.Lib +open %name.PascalCased% + +[] +let main _ = + let app = App(null) + + %name.PascalCased%Stack(app, "%name.PascalCased%Stack", StackProps()) |> ignore + + app.Synth() |> ignore + 0 diff --git a/packages/aws-cdk/lib/init-templates/v2/app/info.json b/packages/aws-cdk/lib/init-templates/v2/app/info.json new file mode 100644 index 0000000000000..1a96dac2b1103 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/info.json @@ -0,0 +1,4 @@ +{ + "description": "Template for a CDK Application", + "aliases": ["application", "default"] +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore new file mode 100644 index 0000000000000..1db21f162937f --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore @@ -0,0 +1,13 @@ +.classpath.txt +target +.classpath +.project +.idea +.settings +.vscode +*.iml + +# CDK asset staging directory +.cdk.staging +cdk.out + diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/README.md b/packages/aws-cdk/lib/init-templates/v2/app/java/README.md new file mode 100644 index 0000000000000..6f46c4de8c441 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/README.md @@ -0,0 +1,18 @@ +# Welcome to your CDK Java project! + +This is a blank project for Java development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It is a [Maven](https://maven.apache.org/) based project, so you can open this project with any Maven compatible Java IDE to build and run tests. + +## Useful commands + + * `mvn package` compile and run tests + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json b/packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json new file mode 100644 index 0000000000000..b112918622f63 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "mvn -e -q compile exec:java" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml new file mode 100644 index 0000000000000..efc6616ae82a0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml @@ -0,0 +1,66 @@ + + + 4.0.0 + + com.myorg + %name% + 0.1 + + + UTF-8 + %cdk-version% + 5.7.0 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + com.myorg.%name.PascalCased%App + + + + + + + + + software.amazon.awscdk + lib + ${cdk.version} + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + org.assertj + assertj-core + 3.18.0 + test + + + diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java new file mode 100644 index 0000000000000..2574c970d3992 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java @@ -0,0 +1,15 @@ +package com.myorg; + +import software.amazon.awscdk.lib.App; + +import java.util.Arrays; + +public class %name.PascalCased%App { + public static void main(final String[] args) { + App app = new App(); + + new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); + + app.synth(); + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java new file mode 100644 index 0000000000000..dd5dce86a5bb1 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java @@ -0,0 +1,17 @@ +package com.myorg; + +import software.amazon.awscdk.lib.Construct; +import software.amazon.awscdk.lib.Stack; +import software.amazon.awscdk.lib.StackProps; + +public class %name.PascalCased%Stack extends Stack { + public %name.PascalCased%Stack(final Construct scope, final String id) { + this(scope, id, null); + } + + public %name.PascalCased%Stack(final Construct scope, final String id, final StackProps props) { + super(scope, id, props); + + // The code that defines your stack goes here + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java new file mode 100644 index 0000000000000..724dedacf5dc2 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java @@ -0,0 +1,28 @@ +package com.myorg; + +import software.amazon.awscdk.lib.App; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; + +import java.io.IOException; + +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +public class %name.PascalCased%Test { + private final static ObjectMapper JSON = + new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true); + + @Test + public void testStack() throws IOException { + App app = new App(); + %name.PascalCased%Stack stack = new %name.PascalCased%Stack(app, "test"); + + // synthesize the stack to a CloudFormation template and compare against + // a checked-in JSON file. + JsonNode actual = JSON.valueToTree(app.synth().getStackArtifact(stack.getArtifactId()).getTemplate()); + + assertThat(new ObjectMapper().createObjectNode()).isEqualTo(actual); + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore new file mode 100644 index 0000000000000..a2da1bef05b07 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore @@ -0,0 +1,8 @@ +node_modules + +# CDK asset staging directory +.cdk.staging +cdk.out + +# Parcel default cache directory +.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore new file mode 100644 index 0000000000000..5de422a0b42a0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore @@ -0,0 +1,3 @@ +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md b/packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md new file mode 100644 index 0000000000000..e3e563e115404 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md @@ -0,0 +1,12 @@ +# Welcome to your CDK JavaScript project! + +This is a blank project for JavaScript development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. The build step is not required when using JavaScript. + +## Useful commands + + * `npm run test` perform the jest unit tests + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js new file mode 100644 index 0000000000000..637cb35435106 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node + +const cdk = require('aws-cdk-lib'); +const { %name.PascalCased%Stack } = require('../lib/%name%-stack'); + +const app = new cdk.App(); +new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json new file mode 100644 index 0000000000000..ca1d40ed37e2d --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "node bin/%name%.js" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js new file mode 100644 index 0000000000000..e8916db57ad71 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js @@ -0,0 +1,17 @@ +const cdk = require('aws-cdk-lib'); + +class %name.PascalCased%Stack extends cdk.Stack { + /** + * + * @param {cdk.Construct} scope + * @param {string} id + * @param {cdk.StackProps=} props + */ + constructor(scope, id, props) { + super(scope, id, props); + + // The code that defines your stack goes here + } +} + +module.exports = { %name.PascalCased%Stack } diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json new file mode 100644 index 0000000000000..165f100d82429 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json @@ -0,0 +1,20 @@ +{ + "name": "%name%", + "version": "0.1.0", + "bin": { + "%name%": "bin/%name%.js" + }, + "scripts": { + "build": "echo \"The build step is not required when using JavaScript!\" && exit 0", + "cdk": "cdk", + "test": "jest" + }, + "devDependencies": { + "aws-cdk": "%cdk-version%", + "jest": "^26.4.2" + }, + "dependencies": { + "aws-cdk-lib": "%cdk-version%", + "constructs": "^3.0.4" + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js new file mode 100644 index 0000000000000..e662bff225941 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js @@ -0,0 +1,11 @@ +const cdk = require('aws-cdk-lib'); +const %name.PascalCased% = require('../lib/%name%-stack'); + +test('Empty Stack', () => { + const app = new cdk.App(); + // WHEN + const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); + // THEN + const actual = app.synth().getStackArtifact(stack.artifactId).template; + expect(actual).toEqual({}); +}); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py new file mode 100644 index 0000000000000..40bad7e3b032d --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py @@ -0,0 +1,9 @@ +import aws_cdk_lib as core + + +class %name.PascalCased%Stack(core.Stack): + + def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None: + super().__init__(scope, construct_id, **kwargs) + + # The code that defines your stack goes here diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore new file mode 100644 index 0000000000000..383cdd5040f7e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore @@ -0,0 +1,10 @@ +*.swp +package-lock.json +__pycache__ +.pytest_cache +.env +*.egg-info + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md b/packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md new file mode 100644 index 0000000000000..ecb028bfa951e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md @@ -0,0 +1,58 @@ + +# Welcome to your CDK Python project! + +This is a blank project for Python development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +This project is set up like a standard Python project. The initialization +process also creates a virtualenv within this project, stored under the `.venv` +directory. To create the virtualenv it assumes that there is a `python3` +(or `python` for Windows) executable in your path with access to the `venv` +package. If for any reason the automatic creation of the virtualenv fails, +you can create the virtualenv manually. + +To manually create a virtualenv on MacOS and Linux: + +``` +$ %python-executable% -m venv .venv +``` + +After the init process completes and the virtualenv is created, you can use the following +step to activate your virtualenv. + +``` +$ source .venv/bin/activate +``` + +If you are a Windows platform, you would activate the virtualenv like this: + +``` +% .venv\Scripts\activate.bat +``` + +Once the virtualenv is activated, you can install the required dependencies. + +``` +$ pip install -r requirements.txt +``` + +At this point you can now synthesize the CloudFormation template for this code. + +``` +$ cdk synth +``` + +To add additional dependencies, for example other CDK libraries, just add +them to your `setup.py` file and rerun the `pip install -r requirements.txt` +command. + +## Useful commands + + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py new file mode 100644 index 0000000000000..a1dd331433422 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import aws_cdk_lib as core + +from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack + + +app = core.App() +%name.PascalCased%Stack(app, "%name.StackName%") + +app.synth() diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json new file mode 100644 index 0000000000000..d7293493c4415 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "%python-executable% app.py" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt new file mode 100644 index 0000000000000..d6e1198b1ab1f --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt @@ -0,0 +1 @@ +-e . diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py new file mode 100644 index 0000000000000..4aadde6ecede7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py @@ -0,0 +1,45 @@ +import setuptools + + +with open("README.md") as fp: + long_description = fp.read() + + +setuptools.setup( + name="%name.PythonModule%", + version="0.0.1", + + description="An empty CDK Python app", + long_description=long_description, + long_description_content_type="text/markdown", + + author="author", + + package_dir={"": "%name.PythonModule%"}, + packages=setuptools.find_packages(where="%name.PythonModule%"), + + install_requires=[ + "aws-cdk-lib==%cdk-version%", + ], + + python_requires=">=3.6", + + classifiers=[ + "Development Status :: 4 - Beta", + + "Intended Audience :: Developers", + + "License :: OSI Approved :: Apache Software License", + + "Programming Language :: JavaScript", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + + "Topic :: Software Development :: Code Generators", + "Topic :: Utilities", + + "Typing :: Typed", + ], +) diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/source.bat b/packages/aws-cdk/lib/init-templates/v2/app/python/source.bat new file mode 100644 index 0000000000000..9e1a83442abd7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/source.bat @@ -0,0 +1,13 @@ +@echo off + +rem The sole purpose of this script is to make the command +rem +rem source .venv/bin/activate +rem +rem (which activates a Python virtualenv on Linux or Mac OS X) work on Windows. +rem On Windows, this command just runs this batch file (the argument is ignored). +rem +rem Now we don't need to document a Windows command for activating a virtualenv. + +echo Executing .venv\Scripts\activate.bat for you +.venv\Scripts\activate.bat diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore new file mode 100644 index 0000000000000..305c7fbcc4d89 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore @@ -0,0 +1,11 @@ +*.js +!jest.config.js +*.d.ts +node_modules + +# CDK asset staging directory +.cdk.staging +cdk.out + +# Parcel default cache directory +.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore new file mode 100644 index 0000000000000..c1d6d45dcf388 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore @@ -0,0 +1,6 @@ +*.ts +!*.d.ts + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md b/packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md new file mode 100644 index 0000000000000..3247665185ed7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md @@ -0,0 +1,14 @@ +# Welcome to your CDK TypeScript project! + +This is a blank project for TypeScript development with CDK. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +## Useful commands + + * `npm run build` compile typescript to js + * `npm run watch` watch for changes and compile + * `npm run test` perform the jest unit tests + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts new file mode 100644 index 0000000000000..2a54cb5615400 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts @@ -0,0 +1,7 @@ +#!/usr/bin/env node +import 'source-map-support/register'; +import * as cdk from 'aws-cdk-lib'; +import { %name.PascalCased%Stack } from '../lib/%name%-stack'; + +const app = new cdk.App(); +new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json new file mode 100644 index 0000000000000..4b132c728abd7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "npx ts-node --prefer-ts-exts bin/%name%.ts" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js new file mode 100644 index 0000000000000..772f974903b79 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + roots: ['/test'], + testMatch: ['**/*.test.ts'], + transform: { + '^.+\\.tsx?$': 'ts-jest' + } +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts new file mode 100644 index 0000000000000..e952c5e6e2488 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts @@ -0,0 +1,9 @@ +import * as cdk from 'aws-cdk-lib'; + +export class %name.PascalCased%Stack extends cdk.Stack { + constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + // The code that defines your stack goes here + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json new file mode 100644 index 0000000000000..c71e1aea5f5ae --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json @@ -0,0 +1,27 @@ +{ + "name": "%name%", + "version": "0.1.0", + "bin": { + "%name%": "bin/%name%.js" + }, + "scripts": { + "build": "tsc", + "watch": "tsc -w", + "test": "jest", + "cdk": "cdk" + }, + "devDependencies": { + "@types/jest": "^26.0.10", + "@types/node": "10.17.27", + "jest": "^26.4.2", + "ts-jest": "^26.2.0", + "aws-cdk": "%cdk-version%", + "ts-node": "^9.0.0", + "typescript": "~3.9.7" + }, + "dependencies": { + "aws-cdk-lib": "%cdk-version%", + "constructs": "^3.0.4", + "source-map-support": "^0.5.16" + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts new file mode 100644 index 0000000000000..6baa631335298 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts @@ -0,0 +1,11 @@ +import * as cdk from 'aws-cdk-lib'; +import * as %name.PascalCased% from '../lib/%name%-stack'; + +test('Empty Stack', () => { + const app = new cdk.App(); + // WHEN + const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); + // THEN + const actual = app.synth().getStackArtifact(stack.artifactId).template; + expect(actual).toEqual({}); +}); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json new file mode 100644 index 0000000000000..ec75123ce6554 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2018", + "module": "commonjs", + "lib": ["es2018"], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization": false, + "typeRoots": ["./node_modules/@types"] + }, + "exclude": ["cdk.out"] +} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/info.json b/packages/aws-cdk/lib/init-templates/v2/lib/info.json new file mode 100644 index 0000000000000..ccc35fd2fe3fe --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/info.json @@ -0,0 +1,4 @@ +{ + "description": "Template for a CDK Construct Library", + "aliases": "library" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore new file mode 100644 index 0000000000000..305c7fbcc4d89 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore @@ -0,0 +1,11 @@ +*.js +!jest.config.js +*.d.ts +node_modules + +# CDK asset staging directory +.cdk.staging +cdk.out + +# Parcel default cache directory +.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore new file mode 100644 index 0000000000000..c1d6d45dcf388 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore @@ -0,0 +1,6 @@ +*.ts +!*.d.ts + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md new file mode 100644 index 0000000000000..5c6e0f6d4d97c --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md @@ -0,0 +1,12 @@ +# Welcome to your CDK TypeScript Construct Library project! + +You should explore the contents of this project. It demonstrates a CDK Construct Library that includes a construct (`%name.PascalCased%`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The construct defines an interface (`%name.PascalCased%Props`) to configure the visibility timeout of the queue. + +## Useful commands + + * `npm run build` compile typescript to js + * `npm run watch` watch for changes and compile + * `npm run test` perform the jest unit tests \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js new file mode 100644 index 0000000000000..772f974903b79 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + roots: ['/test'], + testMatch: ['**/*.test.ts'], + transform: { + '^.+\\.tsx?$': 'ts-jest' + } +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts new file mode 100644 index 0000000000000..ad0b0de54569b --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts @@ -0,0 +1,14 @@ +import * as cdk from 'aws-cdk-lib'; + +export interface %name.PascalCased%Props { + // Define construct properties here +} + +export class %name.PascalCased% extends cdk.Construct { + + constructor(scope: cdk.Construct, id: string, props: %name.PascalCased%Props = {}) { + super(scope, id); + + // Define construct contents here + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json new file mode 100644 index 0000000000000..f255ef76f1fb9 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json @@ -0,0 +1,26 @@ +{ + "name": "%name%", + "version": "0.1.0", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "scripts": { + "build": "tsc", + "watch": "tsc -w", + "test": "jest" + }, + "devDependencies": { + "@types/jest": "^26.0.10", + "@types/node": "10.17.27", + "jest": "^26.4.2", + "ts-jest": "^26.2.0", + "typescript": "~3.9.7" + }, + "peerDependencies": { + "aws-cdk-lib": "%cdk-version%", + "constructs": "^3.0.4" + }, + "dependencies": { + "aws-cdk-lib": "%cdk-version%", + "constructs": "^3.0.4" + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts new file mode 100644 index 0000000000000..924869ad24bf7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts @@ -0,0 +1,12 @@ +import * as cdk from 'aws-cdk-lib'; +import * as %name.PascalCased% from '../lib/index'; + +test('Empty Stack', () => { + const app = new cdk.App(); + const stack = new cdk.Stack(app, "TestStack"); + // WHEN + new %name.PascalCased%.%name.PascalCased%(stack, 'MyTestConstruct'); + // THEN + const actual = app.synth().getStackArtifact(stack.artifactId).template; + expect(actual).toEqual({}); +}); diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json new file mode 100644 index 0000000000000..bb250aba2e496 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target":"ES2018", + "module": "commonjs", + "lib": ["es2018"], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization":false, + "typeRoots": ["./node_modules/@types"] + }, + "exclude": ["cdk.out"] +} + diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore new file mode 100644 index 0000000000000..f555633ead8f0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore @@ -0,0 +1,342 @@ +# CDK asset staging directory +.cdk.staging +cdk.out + +# Created by https://www.gitignore.io/api/csharp + +### Csharp ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + + +# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md new file mode 100644 index 0000000000000..411d4e653994e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md @@ -0,0 +1,19 @@ +# Welcome to your CDK C# project! + +You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. + +## Useful commands + +* `dotnet build src` compile this app +* `cdk ls` list all stacks in the app +* `cdk synth` emits the synthesized CloudFormation template +* `cdk deploy` deploy this stack to your default AWS account/region +* `cdk diff` compare deployed stack with current state +* `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts new file mode 100644 index 0000000000000..37b1fe6ad3e5f --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts @@ -0,0 +1,33 @@ +import * as child_process from 'child_process'; +import * as path from 'path'; +import { InvokeHook } from '../../../../init'; + +export const invoke: InvokeHook = async (targetDirectory: string) => { + const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); + const csprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.csproj'); + + const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', csprojPath], { + // Need this for Windows where we want .cmd and .bat to be found as well. + shell: true, + stdio: ['ignore', 'pipe', 'inherit'], + }); + + await new Promise((resolve, reject) => { + const stdout = new Array(); + + child.stdout.on('data', chunk => { + process.stdout.write(chunk); + stdout.push(chunk); + }); + + child.once('error', reject); + + child.once('exit', code => { + if (code === 0) { + resolve(Buffer.concat(stdout).toString('utf-8')); + } else { + reject(new Error(`Could not add project %name.PascalCased%.csproj to solution %name.PascalCased%.sln. Error code: ${code}`)); + } + }); + }); +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json new file mode 100644 index 0000000000000..94c37dee310c0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln new file mode 100644 index 0000000000000..2f92ebd9bda92 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj new file mode 100644 index 0000000000000..0ac3cc0a4c6cb --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj @@ -0,0 +1,19 @@ + + + + Exe + netcoreapp3.1 + + Major + + + + + + + + + + diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs new file mode 100644 index 0000000000000..db2baa2ca3924 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs @@ -0,0 +1,23 @@ +using Amazon.CDK.Lib; +using Amazon.CDK.AWS.SNS; +using Amazon.CDK.AWS.SNS.Subscriptions; +using Amazon.CDK.AWS.SQS; + +namespace %name.PascalCased% +{ + public class %name.PascalCased%Stack : Stack + { + internal %name.PascalCased%Stack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) + { + // The CDK includes built-in constructs for most resource types, such as Queues and Topics. + var queue = new Queue(this, "%name.PascalCased%Queue", new QueueProps + { + VisibilityTimeout = Duration.Seconds(300) + }); + + var topic = new Topic(this, "%name.PascalCased%Topic"); + + topic.AddSubscription(new SqsSubscription(queue)); + } + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs new file mode 100644 index 0000000000000..26233fcb54b5c --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs @@ -0,0 +1 @@ +[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Potential Code Quality Issues", "RECS0026:Possible unassigned object created by 'new'", Justification = "Constructs add themselves to the scope in which they are created")] diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs new file mode 100644 index 0000000000000..ce88608d08cfe --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs @@ -0,0 +1,15 @@ +using Amazon.CDK.Lib; + +namespace %name.PascalCased% +{ + sealed class Program + { + public static void Main(string[] args) + { + var app = new App(); + new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); + + app.Synth(); + } + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore new file mode 100644 index 0000000000000..f555633ead8f0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore @@ -0,0 +1,342 @@ +# CDK asset staging directory +.cdk.staging +cdk.out + +# Created by https://www.gitignore.io/api/csharp + +### Csharp ### +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + + +# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md new file mode 100644 index 0000000000000..d1bfcf9a90ccf --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md @@ -0,0 +1,20 @@ + +# Welcome to your CDK F# project! + +You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. + +## Useful commands + +* `dotnet build src` compile this app +* `cdk ls` list all stacks in the app +* `cdk synth` emits the synthesized CloudFormation template +* `cdk deploy` deploy this stack to your default AWS account/region +* `cdk diff` compare deployed stack with current state +* `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts new file mode 100644 index 0000000000000..b9b091fa35ff1 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts @@ -0,0 +1,33 @@ +import * as child_process from 'child_process'; +import * as path from 'path'; +import { InvokeHook } from '../../../../init'; + +export const invoke: InvokeHook = async (targetDirectory: string) => { + const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); + const fsprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.fsproj'); + + const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', fsprojPath], { + // Need this for Windows where we want .cmd and .bat to be found as well. + shell: true, + stdio: ['ignore', 'pipe', 'inherit'], + }); + + await new Promise((resolve, reject) => { + const stdout = new Array(); + + child.stdout.on('data', chunk => { + process.stdout.write(chunk); + stdout.push(chunk); + }); + + child.once('error', reject); + + child.once('exit', code => { + if (code === 0) { + resolve(Buffer.concat(stdout).toString('utf-8')); + } else { + reject(new Error(`Could not add project %name.PascalCased%.fsproj to solution %name.PascalCased%.sln. Error code: ${code}`)); + } + }); + }); +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json new file mode 100644 index 0000000000000..a08c461d2a2e2 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln new file mode 100644 index 0000000000000..d73885e1eacb9 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln @@ -0,0 +1,18 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26124.0 +MinimumVisualStudioVersion = 15.0.26124.0 +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj new file mode 100644 index 0000000000000..226943c6d3bf7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj @@ -0,0 +1,24 @@ + + + + Exe + netcoreapp3.1 + + Major + + + + + + + + + + + + + + + diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs new file mode 100644 index 0000000000000..fb527366dfb7b --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs @@ -0,0 +1,14 @@ +namespace %name.PascalCased% + +open Amazon.CDK.Lib +open Amazon.CDK.AWS.SNS +open Amazon.CDK.AWS.SNS.Subscriptions +open Amazon.CDK.AWS.SQS + +type %name.PascalCased%Stack(scope, id, props) as this = + inherit Stack(scope, id, props) + + let queue = Queue(this, "%name.PascalCased%Queue", QueueProps(VisibilityTimeout = Duration.Seconds(300.))) + + let topic = Topic(this, "%name.PascalCased%Topic") + do topic.AddSubscription(SqsSubscription(queue)) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs new file mode 100644 index 0000000000000..4b28d1e03ba9a --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs @@ -0,0 +1,11 @@ +open Amazon.CDK.Lib +open %name.PascalCased% + +[] +let main _ = + let app = App(null) + + %name.PascalCased%Stack(app, "%name.PascalCased%Stack", StackProps()) |> ignore + + app.Synth() |> ignore + 0 diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/info.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/info.json new file mode 100644 index 0000000000000..1451c2576eb63 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/info.json @@ -0,0 +1,4 @@ +{ + "description": "Example CDK Application with some constructs", + "aliases": ["sample", "example"] +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore new file mode 100644 index 0000000000000..1db21f162937f --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore @@ -0,0 +1,13 @@ +.classpath.txt +target +.classpath +.project +.idea +.settings +.vscode +*.iml + +# CDK asset staging directory +.cdk.staging +cdk.out + diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md new file mode 100644 index 0000000000000..ecbdec164e29e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md @@ -0,0 +1,19 @@ +# Welcome to your CDK Java project! + +You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +It is a [Maven](https://maven.apache.org/) based project, so you can open this project with any Maven compatible Java IDE to build and run tests. + +## Useful commands + + * `mvn package` compile and run tests + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json new file mode 100644 index 0000000000000..b112918622f63 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json @@ -0,0 +1,3 @@ +{ + "app": "mvn -e -q compile exec:java" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml new file mode 100644 index 0000000000000..ea3de05fcc2b3 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + com.myorg + %name% + 0.1 + + UTF-8 + %cdk-version% + 5.7.0 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + org.codehaus.mojo + exec-maven-plugin + 3.0.0 + + com.myorg.%name.PascalCased%App + + + + + + + + software.amazon.awscdk + lib + ${cdk.version} + + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + org.assertj + assertj-core + 3.18.0 + test + + + diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java new file mode 100644 index 0000000000000..fb3c52db81d4e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java @@ -0,0 +1,13 @@ +package com.myorg; + +import software.amazon.awscdk.lib.App; + +public final class %name.PascalCased%App { + public static void main(final String[] args) { + App app = new App(); + + new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); + + app.synth(); + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java new file mode 100644 index 0000000000000..dcbbdea06e4fc --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java @@ -0,0 +1,29 @@ +package com.myorg; + +import software.amazon.awscdk.lib.Construct; +import software.amazon.awscdk.lib.Duration; +import software.amazon.awscdk.lib.Stack; +import software.amazon.awscdk.lib.StackProps; +import software.amazon.awscdk.services.sns.Topic; +import software.amazon.awscdk.services.sns.subscriptions.SqsSubscription; +import software.amazon.awscdk.services.sqs.Queue; + +public class %name.PascalCased%Stack extends Stack { + public %name.PascalCased%Stack(final Construct parent, final String id) { + this(parent, id, null); + } + + public %name.PascalCased%Stack(final Construct parent, final String id, final StackProps props) { + super(parent, id, props); + + final Queue queue = Queue.Builder.create(this, "%name.PascalCased%Queue") + .visibilityTimeout(Duration.seconds(300)) + .build(); + + final Topic topic = Topic.Builder.create(this, "%name.PascalCased%Topic") + .displayName("My First Topic Yeah") + .build(); + + topic.addSubscription(new SqsSubscription(queue)); + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java new file mode 100644 index 0000000000000..6930c2bcc44a0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java @@ -0,0 +1,27 @@ +package com.myorg; + +import software.amazon.awscdk.lib.App; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import java.io.IOException; + +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +public class %name.PascalCased%StackTest { + private final static ObjectMapper JSON = + new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true); + + @Test + public void testStack() throws IOException { + App app = new App(); + %name.PascalCased%Stack stack = new %name.PascalCased%Stack(app, "test"); + + JsonNode actual = JSON.valueToTree(app.synth().getStackArtifact(stack.getArtifactId()).getTemplate()); + + assertThat(actual.toString()) + .contains("AWS::SQS::Queue") + .contains("AWS::SNS::Topic"); + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore new file mode 100644 index 0000000000000..a2da1bef05b07 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore @@ -0,0 +1,8 @@ +node_modules + +# CDK asset staging directory +.cdk.staging +cdk.out + +# Parcel default cache directory +.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore new file mode 100644 index 0000000000000..5de422a0b42a0 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore @@ -0,0 +1,3 @@ +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md new file mode 100644 index 0000000000000..4963f41f7463e --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md @@ -0,0 +1,13 @@ +# Welcome to your CDK JavaScript project! + +You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. The build step is not required when using JavaScript. + +## Useful commands + + * `npm run test` perform the jest unit tests + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js new file mode 100644 index 0000000000000..0a334a1be0dfe --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js @@ -0,0 +1,6 @@ +#!/usr/bin/env node +const cdk = require('aws-cdk-lib'); +const { %name.PascalCased%Stack } = require('../lib/%name%-stack'); + +const app = new cdk.App(); +new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json new file mode 100644 index 0000000000000..ca1d40ed37e2d --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "node bin/%name%.js" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js new file mode 100644 index 0000000000000..ef2b5c2407ec5 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js @@ -0,0 +1,25 @@ +const cdk = require('aws-cdk-lib'); +const sns = require('aws-cdk-lib/aws-sns'); +const subs = require('aws-cdk-lib/aws-sns-subscriptions'); +const sqs = require('aws-cdk-lib/aws-sqs'); + +class %name.PascalCased%Stack extends cdk.Stack { + /** + * @param {cdk.App} scope + * @param {string} id + * @param {cdk.StackProps=} props + */ + constructor(scope, id, props) { + super(scope, id, props); + + const queue = new sqs.Queue(this, '%name.PascalCased%Queue', { + visibilityTimeout: cdk.Duration.seconds(300) + }); + + const topic = new sns.Topic(this, '%name.PascalCased%Topic'); + + topic.addSubscription(new subs.SqsSubscription(queue)); + } +} + +module.exports = { %name.PascalCased%Stack } diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json new file mode 100644 index 0000000000000..165f100d82429 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json @@ -0,0 +1,20 @@ +{ + "name": "%name%", + "version": "0.1.0", + "bin": { + "%name%": "bin/%name%.js" + }, + "scripts": { + "build": "echo \"The build step is not required when using JavaScript!\" && exit 0", + "cdk": "cdk", + "test": "jest" + }, + "devDependencies": { + "aws-cdk": "%cdk-version%", + "jest": "^26.4.2" + }, + "dependencies": { + "aws-cdk-lib": "%cdk-version%", + "constructs": "^3.0.4" + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js new file mode 100644 index 0000000000000..b741d4045225b --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js @@ -0,0 +1,12 @@ +const cdk = require('aws-cdk-lib'); +const %name.PascalCased% = require('../lib/%name%-stack'); + +test('SQS Queue and SNS Topic Created', () => { + const app = new cdk.App(); + // WHEN + const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); + // THEN + const actual = JSON.stringify(app.synth().getStackArtifact(stack.artifactId).template); + expect(actual).toContain('AWS::SQS::Queue'); + expect(actual).toContain('AWS::SNS::Topic'); +}); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json new file mode 100644 index 0000000000000..28ca8b67c6ea2 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target":"ES2018", + "module": "commonjs", + "lib": ["es2016", "es2017.object", "es2017.string"], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization":false, + "allowJs": true, + "checkJs": true, + "noEmit": true, + "typeRoots": ["./node_modules/@types"] + }, + "exclude": ["cdk.out"] +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py new file mode 100644 index 0000000000000..7629e4361788b --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py @@ -0,0 +1,24 @@ +import aws_cdk_lib as core +from aws_cdk_lib import ( + aws_iam as iam, + aws_sqs as sqs, + aws_sns as sns, + aws_sns_subscriptions as subs, +) + + +class %name.PascalCased%Stack(core.Stack): + + def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None: + super().__init__(scope, construct_id, **kwargs) + + queue = sqs.Queue( + self, "%name.PascalCased%Queue", + visibility_timeout=core.Duration.seconds(300), + ) + + topic = sns.Topic( + self, "%name.PascalCased%Topic" + ) + + topic.add_subscription(subs.SqsSubscription(queue)) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore new file mode 100644 index 0000000000000..95f954427c747 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore @@ -0,0 +1,22 @@ +*.swp +package-lock.json +.pytest_cache +*.egg-info + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# CDK Context & Staging files +.cdk.staging/ +cdk.out/ \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md new file mode 100644 index 0000000000000..1775b25f602ae --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md @@ -0,0 +1,65 @@ + +# Welcome to your CDK Python project! + +You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PythonModule%_stack`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +This project is set up like a standard Python project. The initialization process also creates +a virtualenv within this project, stored under the .venv directory. To create the virtualenv +it assumes that there is a `python3` executable in your path with access to the `venv` package. +If for any reason the automatic creation of the virtualenv fails, you can create the virtualenv +manually once the init process completes. + +To manually create a virtualenv on MacOS and Linux: + +``` +$ %python-executable% -m venv .venv +``` + +After the init process completes and the virtualenv is created, you can use the following +step to activate your virtualenv. + +``` +$ source .venv/bin/activate +``` + +If you are a Windows platform, you would activate the virtualenv like this: + +``` +% .venv\Scripts\activate.bat +``` + +Once the virtualenv is activated, you can install the required dependencies. + +``` +$ pip install -r requirements.txt +``` + +At this point you can now synthesize the CloudFormation template for this code. + +``` +$ cdk synth +``` + +You can now begin exploring the source code, contained in the hello directory. +There is also a very trivial test included that can be run like this: + +``` +$ pytest +``` + +To add additional dependencies, for example other CDK libraries, just add to +your requirements.txt file and rerun the `pip install -r requirements.txt` +command. + +## Useful commands + + * `cdk ls` list all stacks in the app + * `cdk synth` emits the synthesized CloudFormation template + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk docs` open CDK documentation + +Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py new file mode 100644 index 0000000000000..f53ecf105b8ca --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import aws_cdk_lib as core + +from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack + + +app = core.App() +%name.PascalCased%Stack(app, "%name.StackName%", env={'region': 'us-west-2'}) + +app.synth() diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json new file mode 100644 index 0000000000000..d7293493c4415 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "%python-executable% app.py" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt new file mode 100644 index 0000000000000..ae60ed5f14ca8 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt @@ -0,0 +1,2 @@ +-e . +pytest diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py new file mode 100644 index 0000000000000..585578354a190 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py @@ -0,0 +1,45 @@ +import setuptools + + +with open("README.md") as fp: + long_description = fp.read() + + +setuptools.setup( + name="%name.PythonModule%", + version="0.0.1", + + description="A sample CDK Python app", + long_description=long_description, + long_description_content_type="text/markdown", + + author="author", + + package_dir={"": "%name.PythonModule%"}, + packages=setuptools.find_packages(where="%name.PythonModule%"), + + install_requires=[ + "aws-cdk-lib==%cdk-version%", + ], + + python_requires=">=3.6", + + classifiers=[ + "Development Status :: 4 - Beta", + + "Intended Audience :: Developers", + + "License :: OSI Approved :: Apache Software License", + + "Programming Language :: JavaScript", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + + "Topic :: Software Development :: Code Generators", + "Topic :: Utilities", + + "Typing :: Typed", + ], +) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat new file mode 100644 index 0000000000000..9e1a83442abd7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat @@ -0,0 +1,13 @@ +@echo off + +rem The sole purpose of this script is to make the command +rem +rem source .venv/bin/activate +rem +rem (which activates a Python virtualenv on Linux or Mac OS X) work on Windows. +rem On Windows, this command just runs this batch file (the argument is ignored). +rem +rem Now we don't need to document a Windows command for activating a virtualenv. + +echo Executing .venv\Scripts\activate.bat for you +.venv\Scripts\activate.bat diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/__init__.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py new file mode 100644 index 0000000000000..2b7e876b75742 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py @@ -0,0 +1,19 @@ +import json +import pytest + +import aws_cdk_lib as core +from %name%.%name.PythonModule%_stack import %name.PascalCased%Stack + + +def get_template(): + app = core.App() + %name.PascalCased%Stack(app, "%name.StackName%") + return json.dumps(app.synth().get_stack("%name.StackName%").template) + + +def test_sqs_queue_created(): + assert("AWS::SQS::Queue" in get_template()) + + +def test_sns_topic_created(): + assert("AWS::SNS::Topic" in get_template()) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore new file mode 100644 index 0000000000000..305c7fbcc4d89 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore @@ -0,0 +1,11 @@ +*.js +!jest.config.js +*.d.ts +node_modules + +# CDK asset staging directory +.cdk.staging +cdk.out + +# Parcel default cache directory +.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore new file mode 100644 index 0000000000000..c1d6d45dcf388 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore @@ -0,0 +1,6 @@ +*.ts +!*.d.ts + +# CDK asset staging directory +.cdk.staging +cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md new file mode 100644 index 0000000000000..56b7b636bd523 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md @@ -0,0 +1,15 @@ +# Welcome to your CDK TypeScript project! + +You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) +which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. + +The `cdk.json` file tells the CDK Toolkit how to execute your app. + +## Useful commands + + * `npm run build` compile typescript to js + * `npm run watch` watch for changes and compile + * `npm run test` perform the jest unit tests + * `cdk deploy` deploy this stack to your default AWS account/region + * `cdk diff` compare deployed stack with current state + * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts new file mode 100644 index 0000000000000..2e7f99ba70e8b --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts @@ -0,0 +1,6 @@ +#!/usr/bin/env node +import * as cdk from 'aws-cdk-lib'; +import { %name.PascalCased%Stack } from '../lib/%name%-stack'; + +const app = new cdk.App(); +new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json new file mode 100644 index 0000000000000..4b132c728abd7 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json @@ -0,0 +1,3 @@ +{ + "app": "npx ts-node --prefer-ts-exts bin/%name%.ts" +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js new file mode 100644 index 0000000000000..772f974903b79 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + roots: ['/test'], + testMatch: ['**/*.test.ts'], + transform: { + '^.+\\.tsx?$': 'ts-jest' + } +}; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts new file mode 100644 index 0000000000000..87f4eb9b549a2 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts @@ -0,0 +1,18 @@ +import * as cdk from 'aws-cdk-lib'; +import * as sns from 'aws-cdk-lib/aws-sns'; +import * as subs from 'aws-cdk-lib/aws-sns-subscriptions'; +import * as sqs from 'aws-cdk-lib/aws-sqs'; + +export class %name.PascalCased%Stack extends cdk.Stack { + constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + const queue = new sqs.Queue(this, '%name.PascalCased%Queue', { + visibilityTimeout: cdk.Duration.seconds(300) + }); + + const topic = new sns.Topic(this, '%name.PascalCased%Topic'); + + topic.addSubscription(new subs.SqsSubscription(queue)); + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json new file mode 100644 index 0000000000000..4b36fa55ec3ad --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json @@ -0,0 +1,26 @@ +{ + "name": "%name%", + "version": "0.1.0", + "bin": { + "%name%": "bin/%name%.js" + }, + "scripts": { + "build": "tsc", + "watch": "tsc -w", + "test": "jest", + "cdk": "cdk" + }, + "devDependencies": { + "aws-cdk": "%cdk-version%", + "@types/jest": "^26.0.10", + "@types/node": "10.17.27", + "jest": "^26.4.2", + "ts-jest": "^26.2.0", + "ts-node": "^9.0.0", + "typescript": "~3.9.7" + }, + "dependencies": { + "aws-cdk-lib": "%cdk-version%", + "constructs": "^3.0.4" + } +} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts new file mode 100644 index 0000000000000..a563f50309295 --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts @@ -0,0 +1,12 @@ +import * as cdk from 'aws-cdk-lib'; +import * as %name.PascalCased% from '../lib/%name%-stack'; + +test('SQS Queue and SNS Topic Created', () => { + const app = new cdk.App(); + // WHEN + const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); + // THEN + const actual = JSON.stringify(app.synth().getStackArtifact(stack.artifactId).template); + expect(actual).toContain('AWS::SQS::Queue'); + expect(actual).toContain('AWS::SNS::Topic'); +}); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json new file mode 100644 index 0000000000000..03c16d26a637c --- /dev/null +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target":"ES2018", + "module": "commonjs", + "lib": ["es2018"], + "declaration": true, + "strict": true, + "noImplicitAny": true, + "strictNullChecks": true, + "noImplicitThis": true, + "alwaysStrict": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": false, + "inlineSourceMap": true, + "inlineSources": true, + "experimentalDecorators": true, + "strictPropertyInitialization":false, + "typeRoots": ["./node_modules/@types"] + }, + "exclude": ["cdk.out"] +} diff --git a/packages/aws-cdk/lib/init.ts b/packages/aws-cdk/lib/init.ts index a40477712f2eb..f066b6c8fefb8 100644 --- a/packages/aws-cdk/lib/init.ts +++ b/packages/aws-cdk/lib/init.ts @@ -3,8 +3,10 @@ import * as path from 'path'; import * as cxapi from '@aws-cdk/cx-api'; import * as colors from 'colors/safe'; import * as fs from 'fs-extra'; +import * as semver from 'semver'; import { error, print, warning } from './logging'; import { cdkHomeDir } from './util/directories'; +import { versionNumber } from './version'; export type InvokeHook = (targetDirectory: string) => Promise; @@ -14,8 +16,6 @@ const camelCase = require('camelcase'); // eslint-disable-next-line @typescript-eslint/no-require-imports const decamelize = require('decamelize'); -const TEMPLATES_DIR = path.join(__dirname, 'init-templates'); - /** * Initialize a CDK package in the current directory */ @@ -27,7 +27,7 @@ export async function cliInit(type?: string, language?: string, canUseNetwork = type = type || 'default'; // "default" is the default type (and maps to "app") - const template = (await availableInitTemplates).find(t => t.hasName(type!)); + const template = (await availableInitTemplates()).find(t => t.hasName(type!)); if (!template) { await printAvailableTemplates(language); throw new Error(`Unknown init template: ${type}`); @@ -57,8 +57,8 @@ function pythonExecutable() { const INFO_DOT_JSON = 'info.json'; export class InitTemplate { - public static async fromName(name: string) { - const basePath = path.join(TEMPLATES_DIR, name); + public static async fromName(templatesDir: string, name: string) { + const basePath = path.join(templatesDir, name); const languages = (await listDirectory(basePath)).filter(f => f !== INFO_DOT_JSON); const info = await fs.readJson(path.join(basePath, INFO_DOT_JSON)); return new InitTemplate(basePath, name, languages, info); @@ -194,18 +194,27 @@ interface ProjectInfo { readonly name: string; } -export const availableInitTemplates: Promise = - new Promise(async resolve => { - const templateNames = await listDirectory(TEMPLATES_DIR); +function versionedTemplatesDir(): Promise { + return new Promise(async resolve => { + const majorVersion = semver.major(versionNumber()); + resolve(path.join(__dirname, 'init-templates', `v${majorVersion}`)); + }); +} + +export async function availableInitTemplates(): Promise { + return new Promise(async resolve => { + const templatesDir = await versionedTemplatesDir(); + const templateNames = await listDirectory(templatesDir); const templates = new Array(); for (const templateName of templateNames) { - templates.push(await InitTemplate.fromName(templateName)); + templates.push(await InitTemplate.fromName(templatesDir, templateName)); } resolve(templates); }); -export const availableInitLanguages: Promise = - new Promise(async resolve => { - const templates = await availableInitTemplates; +} +export async function availableInitLanguages(): Promise { + return new Promise(async resolve => { + const templates = await availableInitTemplates(); const result = new Set(); for (const template of templates) { for (const language of template.languages) { @@ -214,6 +223,8 @@ export const availableInitLanguages: Promise = } resolve([...result]); }); +} + /** * @param dirPath is the directory to be listed. * @returns the list of file or directory names contained in ``dirPath``, excluding any dot-file, and sorted. @@ -226,7 +237,7 @@ async function listDirectory(dirPath: string) { export async function printAvailableTemplates(language?: string) { print('Available templates:'); - for (const template of await availableInitTemplates) { + for (const template of await availableInitTemplates()) { if (language && template.languages.indexOf(language) === -1) { continue; } print(`* ${colors.green(template.name)}: ${template.description}`); const languageArg = language ? colors.bold(language) diff --git a/packages/aws-cdk/lib/settings.ts b/packages/aws-cdk/lib/settings.ts index 86e475c235802..0663d021f63d3 100644 --- a/packages/aws-cdk/lib/settings.ts +++ b/packages/aws-cdk/lib/settings.ts @@ -43,6 +43,7 @@ export type Arguments = { readonly _: [Command, ...string[]]; readonly exclusively?: boolean; readonly STACKS?: string[]; + readonly lookups?: boolean; readonly [name: string]: unknown; }; @@ -245,6 +246,7 @@ export class Settings { output: argv.output, progress: argv.progress, bundlingStacks, + lookups: argv.lookups, }); } diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index a79504918a893..e66a321fc2f06 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -45,10 +45,10 @@ "@types/jest": "^26.0.15", "@types/minimatch": "^3.0.3", "@types/mockery": "^1.4.29", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "@types/promptly": "^3.0.0", "@types/semver": "^7.3.4", - "@types/sinon": "^9.0.8", + "@types/sinon": "^9.0.9", "@types/table": "^5.0.0", "@types/uuid": "^8.3.0", "@types/wrap-ansi": "^3.0.0", @@ -71,7 +71,7 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "archiver": "^5.1.0", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "camelcase": "^6.2.0", "cdk-assets": "0.0.0", "colors": "^1.4.0", @@ -84,7 +84,7 @@ "proxy-agent": "^4.0.0", "semver": "^7.3.2", "source-map-support": "^0.5.19", - "table": "^6.0.3", + "table": "^6.0.4", "uuid": "^8.3.1", "wrap-ansi": "^7.0.0", "yargs": "^16.1.1" diff --git a/packages/aws-cdk/test/api/cloud-executable.test.ts b/packages/aws-cdk/test/api/cloud-executable.test.ts index 3e9dc83948c23..c1f894e6c758f 100644 --- a/packages/aws-cdk/test/api/cloud-executable.test.ts +++ b/packages/aws-cdk/test/api/cloud-executable.test.ts @@ -73,6 +73,25 @@ test('stop executing if context providers are not making progress', async () => // THEN: the test finishes normally}); }); +test('fails if lookups are disabled and missing context is synthesized', async () => { + // GIVEN + const cloudExecutable = new MockCloudExecutable({ + stacks: [{ + stackName: 'thestack', + template: { resource: 'noerrorresource' }, + }], + // Always return the same missing keys, synthesis should still finish. + missing: [ + { key: 'abcdef', props: { account: '1324', region: 'us-east-1' }, provider: cxschema.ContextProvider.AVAILABILITY_ZONE_PROVIDER }, + ], + }); + cloudExecutable.configuration.settings.set(['lookups'], false); + + // WHEN + await expect(cloudExecutable.synthesize()).rejects.toThrow(/Context lookups have been disabled/); +}); + + async function testCloudExecutable({ env, versionReporting = true }: { env?: string, versionReporting?: boolean } = {}) { const cloudExec = new MockCloudExecutable({ stacks: [{ diff --git a/packages/aws-cdk/test/init.test.ts b/packages/aws-cdk/test/init.test.ts index 9e9ae78784a45..4f2e8e11401f2 100644 --- a/packages/aws-cdk/test/init.test.ts +++ b/packages/aws-cdk/test/init.test.ts @@ -1,79 +1,96 @@ +/** + * The init templates rely on parsing the current major version to find the correct template directory. + * During tests, the current package version is '0.0.0', rather than a specific version. + * The below mocks the versionNumber to return the major version (and so init template version) specified. + */ +let mockMajorVersion = '1.0.0'; +jest.mock('../lib/version', () => ({ + versionNumber: () => mockMajorVersion, +})); + import * as os from 'os'; import * as path from 'path'; import * as cxapi from '@aws-cdk/cx-api'; import * as fs from 'fs-extra'; import { availableInitTemplates, cliInit } from '../lib/init'; -cliTest('create a TypeScript library project', async (workDir) => { - await cliInit('lib', 'typescript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and lib/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'lib'))).toBeTruthy(); -}); - -cliTest('create a TypeScript app project', async (workDir) => { - await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); -}); - -cliTest('create a JavaScript app project', async (workDir) => { - await cliInit('app', 'javascript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, '.git'))).toBeTruthy(); -}); - -cliTest('--generate-only should skip git init', async (workDir) => { - await cliInit('app', 'javascript', false, true, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, '.git'))).toBeFalsy(); -}); - -cliTest('git directory does not throw off the initer!', async (workDir) => { - fs.mkdirSync(path.join(workDir, '.git')); - - await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); -}); - -test('verify "future flags" are added to cdk.json', async () => { - // This is a lot to test, and it can be slow-ish, especially when ran with other tests. - jest.setTimeout(30_000); - - for (const templ of await availableInitTemplates) { - for (const lang of templ.languages) { - await withTempDir(async tmpDir => { - await cliInit(templ.name, lang, - /* canUseNetwork */ false, - /* generateOnly */ true, - tmpDir); - - // ok if template doesn't have a cdk.json file (e.g. the "lib" template) - if (!await fs.pathExists(path.join(tmpDir, 'cdk.json'))) { - return; - } - - const config = await fs.readJson(path.join(tmpDir, 'cdk.json')); - const context = config.context || {}; - for (const [key, expected] of Object.entries(cxapi.FUTURE_FLAGS)) { - const actual = context[key]; - expect(actual).toEqual(expected); - } - }); +describe.each(['1', '2'])('v%s tests', (majorVersion) => { + beforeEach(() => { + mockMajorVersion = `${majorVersion}.0.0`; + jest.resetAllMocks(); + }); + + cliTest('create a TypeScript library project', async (workDir) => { + await cliInit('lib', 'typescript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and lib/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'lib'))).toBeTruthy(); + }); + + cliTest('create a TypeScript app project', async (workDir) => { + await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); + }); + + cliTest('create a JavaScript app project', async (workDir) => { + await cliInit('app', 'javascript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, '.git'))).toBeTruthy(); + }); + + cliTest('--generate-only should skip git init', async (workDir) => { + await cliInit('app', 'javascript', false, true, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, '.git'))).toBeFalsy(); + }); + + cliTest('git directory does not throw off the initer!', async (workDir) => { + fs.mkdirSync(path.join(workDir, '.git')); + + await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); + }); + + test('verify "future flags" are added to cdk.json', async () => { + // This is a lot to test, and it can be slow-ish, especially when ran with other tests. + jest.setTimeout(30_000); + + for (const templ of await availableInitTemplates()) { + for (const lang of templ.languages) { + await withTempDir(async tmpDir => { + await cliInit(templ.name, lang, + /* canUseNetwork */ false, + /* generateOnly */ true, + tmpDir); + + // ok if template doesn't have a cdk.json file (e.g. the "lib" template) + if (!await fs.pathExists(path.join(tmpDir, 'cdk.json'))) { + return; + } + + const config = await fs.readJson(path.join(tmpDir, 'cdk.json')); + const context = config.context || {}; + for (const [key, expected] of Object.entries(cxapi.FUTURE_FLAGS)) { + const actual = context[key]; + expect(actual).toEqual(expected); + } + }); + } } - } + }); }); function cliTest(name: string, handler: (dir: string) => void | Promise): void { diff --git a/packages/aws-cdk/test/integ/cli/app/app.js b/packages/aws-cdk/test/integ/cli/app/app.js index 175b658949fc4..43875f4fa0037 100644 --- a/packages/aws-cdk/test/integ/cli/app/app.js +++ b/packages/aws-cdk/test/integ/cli/app/app.js @@ -44,6 +44,19 @@ class YourStack extends cdk.Stack { } } +class StackUsingContext extends cdk.Stack { + constructor(parent, id, props) { + super(parent, id, props); + new core.CfnResource(this, 'Handle', { + type: 'AWS::CloudFormation::WaitConditionHandle' + }); + + new core.CfnOutput(this, 'Output', { + value: this.availabilityZones, + }); + } +} + class ParameterStack extends cdk.Stack { constructor(parent, id, props) { super(parent, id, props); @@ -247,6 +260,14 @@ class SomeStage extends cdk.Stage { } } +class StageUsingContext extends cdk.Stage { + constructor(parent, id, props) { + super(parent, id, props); + + new StackUsingContext(this, 'StackInStage'); + } +} + const app = new cdk.App(); const defaultEnv = { @@ -254,46 +275,68 @@ const defaultEnv = { region: process.env.CDK_DEFAULT_REGION }; -// Deploy all does a wildcard ${stackPrefix}-test-* -new MyStack(app, `${stackPrefix}-test-1`, { env: defaultEnv }); -new YourStack(app, `${stackPrefix}-test-2`); -// Deploy wildcard with parameters does ${stackPrefix}-param-test-* -new ParameterStack(app, `${stackPrefix}-param-test-1`); -new OtherParameterStack(app, `${stackPrefix}-param-test-2`); -// Deploy stack with multiple parameters -new MultiParameterStack(app, `${stackPrefix}-param-test-3`); -// Deploy stack with outputs does ${stackPrefix}-outputs-test-* -new OutputsStack(app, `${stackPrefix}-outputs-test-1`); -new AnotherOutputsStack(app, `${stackPrefix}-outputs-test-2`); -// Not included in wildcard -new IamStack(app, `${stackPrefix}-iam-test`, { env: defaultEnv }); -const providing = new ProvidingStack(app, `${stackPrefix}-order-providing`); -new ConsumingStack(app, `${stackPrefix}-order-consuming`, { providingStack: providing }); - -new MissingSSMParameterStack(app, `${stackPrefix}-missing-ssm-parameter`, { env: defaultEnv }); - -new LambdaStack(app, `${stackPrefix}-lambda`); -new DockerStack(app, `${stackPrefix}-docker`); -new DockerStackWithCustomFile(app, `${stackPrefix}-docker-with-custom-file`); -new FailedStack(app, `${stackPrefix}-failed`) - -if (process.env.ENABLE_VPC_TESTING) { // Gating so we don't do context fetching unless that's what we are here for - const env = { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }; - if (process.env.ENABLE_VPC_TESTING === 'DEFINE') - new DefineVpcStack(app, `${stackPrefix}-define-vpc`, { env }); - if (process.env.ENABLE_VPC_TESTING === 'IMPORT') - new ImportVpcStack(app, `${stackPrefix}-import-vpc`, { env }); -} +// Sometimes we don't want to synthesize all stacks because it will impact the results +const stackSet = process.env.INTEG_STACK_SET || 'default'; + +switch (stackSet) { + case 'default': + // Deploy all does a wildcard ${stackPrefix}-test-* + new MyStack(app, `${stackPrefix}-test-1`, { env: defaultEnv }); + new YourStack(app, `${stackPrefix}-test-2`); + // Deploy wildcard with parameters does ${stackPrefix}-param-test-* + new ParameterStack(app, `${stackPrefix}-param-test-1`); + new OtherParameterStack(app, `${stackPrefix}-param-test-2`); + // Deploy stack with multiple parameters + new MultiParameterStack(app, `${stackPrefix}-param-test-3`); + // Deploy stack with outputs does ${stackPrefix}-outputs-test-* + new OutputsStack(app, `${stackPrefix}-outputs-test-1`); + new AnotherOutputsStack(app, `${stackPrefix}-outputs-test-2`); + // Not included in wildcard + new IamStack(app, `${stackPrefix}-iam-test`, { env: defaultEnv }); + const providing = new ProvidingStack(app, `${stackPrefix}-order-providing`); + new ConsumingStack(app, `${stackPrefix}-order-consuming`, { providingStack: providing }); + + new MissingSSMParameterStack(app, `${stackPrefix}-missing-ssm-parameter`, { env: defaultEnv }); + + new LambdaStack(app, `${stackPrefix}-lambda`); + new DockerStack(app, `${stackPrefix}-docker`); + new DockerStackWithCustomFile(app, `${stackPrefix}-docker-with-custom-file`); + new FailedStack(app, `${stackPrefix}-failed`) + + if (process.env.ENABLE_VPC_TESTING) { // Gating so we don't do context fetching unless that's what we are here for + const env = { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }; + if (process.env.ENABLE_VPC_TESTING === 'DEFINE') + new DefineVpcStack(app, `${stackPrefix}-define-vpc`, { env }); + if (process.env.ENABLE_VPC_TESTING === 'IMPORT') + new ImportVpcStack(app, `${stackPrefix}-import-vpc`, { env }); + } -new ConditionalResourceStack(app, `${stackPrefix}-conditional-resource`) + new ConditionalResourceStack(app, `${stackPrefix}-conditional-resource`) -new StackWithNestedStack(app, `${stackPrefix}-with-nested-stack`); -new StackWithNestedStackUsingParameters(app, `${stackPrefix}-with-nested-stack-using-parameters`); + new StackWithNestedStack(app, `${stackPrefix}-with-nested-stack`); + new StackWithNestedStackUsingParameters(app, `${stackPrefix}-with-nested-stack-using-parameters`); -new YourStack(app, `${stackPrefix}-termination-protection`, { - terminationProtection: process.env.TERMINATION_PROTECTION !== 'FALSE' ? true : false, -}); + new YourStack(app, `${stackPrefix}-termination-protection`, { + terminationProtection: process.env.TERMINATION_PROTECTION !== 'FALSE' ? true : false, + }); + + new SomeStage(app, `${stackPrefix}-stage`); + break; + + case 'stage-using-context': + // Cannot be combined with other test stacks, because we use this to test + // that stage context is propagated up and causes synth to fail when combined + // with '--no-lookups'. -new SomeStage(app, `${stackPrefix}-stage`); + // Needs a dummy stack at the top level because the CLI will fail otherwise + new YourStack(app, `${stackPrefix}-toplevel`, { env: defaultEnv }); + new StageUsingContext(app, `${stackPrefix}-stage-using-context`, { + env: defaultEnv, + }); + break; + + default: + throw new Error(`Unrecognized INTEG_STACK_SET: '${stackSet}'`); +} app.synth(); diff --git a/packages/aws-cdk/test/integ/cli/cdk-helpers.ts b/packages/aws-cdk/test/integ/cli/cdk-helpers.ts index c1049e330d77e..cc38e7ec54cfa 100644 --- a/packages/aws-cdk/test/integ/cli/cdk-helpers.ts +++ b/packages/aws-cdk/test/integ/cli/cdk-helpers.ts @@ -83,7 +83,11 @@ export function withCdkApp(block: (context: success = false; throw e; } finally { - await fixture.dispose(success); + if (process.env.INTEG_NO_CLEAN) { + process.stderr.write(`Left test directory in '${integTestDir}' ($INTEG_NO_CLEAN)\n`); + } else { + await fixture.dispose(success); + } } }; } @@ -177,6 +181,13 @@ export class TestFixture { ...this.fullStackName(stackNames)], options); } + public async cdkSynth(options: CdkCliOptions = {}) { + return this.cdk([ + 'synth', + ...(options.options ?? []), + ], options); + } + public async cdkDestroy(stackNames: string | string[], options: CdkCliOptions = {}) { stackNames = typeof stackNames === 'string' ? [stackNames] : stackNames; diff --git a/packages/aws-cdk/test/integ/cli/cli.integtest.ts b/packages/aws-cdk/test/integ/cli/cli.integtest.ts index 079a560175a8d..407c1d7fd99c4 100644 --- a/packages/aws-cdk/test/integ/cli/cli.integtest.ts +++ b/packages/aws-cdk/test/integ/cli/cli.integtest.ts @@ -93,6 +93,17 @@ integTest('context setting', withDefaultFixture(async (fixture) => { } })); +integTest('context in stage propagates to top', withDefaultFixture(async (fixture) => { + await expect(fixture.cdkSynth({ + // This will make it error to prove that the context bubbles up, and also that we can fail on command + options: ['--no-lookups'], + modEnv: { + INTEG_STACK_SET: 'stage-using-context', + }, + allowErrExit: true, + })).resolves.toContain('Context lookups have been disabled'); +})); + integTest('deploy', withDefaultFixture(async (fixture) => { const stackArn = await fixture.cdkDeploy('test-2', { captureStderr: false }); diff --git a/packages/aws-cdk/tsconfig.json b/packages/aws-cdk/tsconfig.json index 04e0404f04442..737e0bc5497f6 100644 --- a/packages/aws-cdk/tsconfig.json +++ b/packages/aws-cdk/tsconfig.json @@ -19,10 +19,10 @@ "include": [ "**/*.ts", "**/*.d.ts", - "lib/init-templates/*/*/add-project.hook.ts" + "lib/init-templates/**/add-project.hook.ts" ], "exclude": [ - "lib/init-templates/*/typescript/**/*.ts" + "lib/init-templates/**/typescript/**/*.ts" ] } diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index fe9ac39d422e0..24bc67075c70f 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -35,7 +35,7 @@ "@types/jest": "^26.0.15", "@types/jszip": "^3.4.1", "@types/mock-fs": "^4.13.0", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "@types/yargs": "^15.0.10", "cdk-build-tools": "0.0.0", "jest": "^26.6.3", @@ -47,7 +47,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "archiver": "^5.1.0", - "aws-sdk": "^2.797.0", + "aws-sdk": "^2.799.0", "glob": "^7.1.6", "yargs": "^16.1.1" }, diff --git a/packages/decdk/lib/declarative-stack.ts b/packages/decdk/lib/declarative-stack.ts index 8b937ecd3525e..a093d16a5922f 100644 --- a/packages/decdk/lib/declarative-stack.ts +++ b/packages/decdk/lib/declarative-stack.ts @@ -382,7 +382,7 @@ function invokeMethod(stack: cdk.Stack, method: reflect.Callable, parameters: an * an `Fn::GetAtt`. */ function deconstructGetAtt(stack: cdk.Stack, id: string, attribute: string) { - return cdk.Lazy.stringValue({ produce: () => { + return cdk.Lazy.string({ produce: () => { const res = stack.node.tryFindChild(id); if (!res) { const include = stack.node.tryFindChild('Include') as cdk.CfnInclude; diff --git a/packages/decdk/package.json b/packages/decdk/package.json index a1fe7cd657a14..866f1dce347e7 100644 --- a/packages/decdk/package.json +++ b/packages/decdk/package.json @@ -77,6 +77,7 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", + "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -142,6 +143,7 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", + "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -170,6 +172,7 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-ses-actions": "0.0.0", + "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index d6eded2ebcb17..4e5fe1f12d0cd 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -149,6 +149,7 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", + "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -214,6 +215,7 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", + "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -242,6 +244,7 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-ses-actions": "0.0.0", + "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", @@ -265,7 +268,7 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "@types/fs-extra": "^8.1.1", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "cdk-build-tools": "0.0.0", "constructs": "^3.2.0", "fs-extra": "^9.0.1", diff --git a/tools/cdk-build-tools/package.json b/tools/cdk-build-tools/package.json index f47c4c8e1bb91..f5f8691727ec7 100644 --- a/tools/cdk-build-tools/package.json +++ b/tools/cdk-build-tools/package.json @@ -39,7 +39,7 @@ "pkglint": "0.0.0" }, "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.8.1", + "@typescript-eslint/eslint-plugin": "^4.8.2", "@typescript-eslint/parser": "^4.7.0", "eslint-plugin-cdk": "0.0.0", "awslint": "0.0.0", diff --git a/tools/eslint-plugin-cdk/package.json b/tools/eslint-plugin-cdk/package.json index 0b06b895cfbba..795262ab408f3 100644 --- a/tools/eslint-plugin-cdk/package.json +++ b/tools/eslint-plugin-cdk/package.json @@ -15,7 +15,7 @@ "@types/eslint": "^7.2.5", "@types/fs-extra": "^8.1.1", "@types/jest": "^26.0.15", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "eslint-plugin-rulesdir": "^0.1.0", "jest": "^26.6.3", "typescript": "~3.9.7" diff --git a/tools/nodeunit-shim/package.json b/tools/nodeunit-shim/package.json index e644c259dc2a8..56bd2d5e4fb60 100644 --- a/tools/nodeunit-shim/package.json +++ b/tools/nodeunit-shim/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@types/jest": "^26.0.15", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "typescript": "~3.9.7" }, "dependencies": { diff --git a/tools/yarn-cling/package.json b/tools/yarn-cling/package.json index 596f283475b46..feba1052cc743 100644 --- a/tools/yarn-cling/package.json +++ b/tools/yarn-cling/package.json @@ -39,7 +39,7 @@ }, "devDependencies": { "@types/jest": "^26.0.15", - "@types/node": "^10.17.46", + "@types/node": "^10.17.47", "@types/yarnpkg__lockfile": "^1.1.4", "jest": "^26.6.3", "pkglint": "0.0.0", diff --git a/version.v1.json b/version.v1.json index 9b48089bc1d8f..2bac917cd4459 100644 --- a/version.v1.json +++ b/version.v1.json @@ -1,3 +1,3 @@ { - "version": "1.74.0" + "version": "1.75.0" } diff --git a/yarn.lock b/yarn.lock index 122b5b0c73dca..ce1d572a34688 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1605,7 +1605,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== @@ -1661,10 +1661,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.2.tgz#2de1ed6670439387da1c9f549a2ade2b0a799256" integrity sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA== -"@types/node@^10.17.46": - version "10.17.46" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.46.tgz#1cd867ebfe9957ab45951f2f715f8de5f3dab7a3" - integrity sha512-Tice8a+sJtlP9C1EUo0DYyjq52T37b3LexVu3p871+kfIBIN+OQ7PKPei1oF3MgF39olEpUfxaLtD+QFc1k69Q== +"@types/node@^10.17.47": + version "10.17.47" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.47.tgz#cc88a242a835789456cfcf374928400d9f4b291c" + integrity sha512-YZ1mMAdUPouBZCdeugjV8y1tqqr28OyL8DYbH5ePCfe9zcXtvbh1wDBy7uzlHkXo3Qi07kpzXfvycvrkby/jXw== "@types/nodeunit@^0.0.31": version "0.0.31" @@ -1703,10 +1703,10 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb" integrity sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ== -"@types/sinon@^9.0.8": - version "9.0.8" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.8.tgz#1ed0038d356784f75b086104ef83bfd4130bb81b" - integrity sha512-IVnI820FZFMGI+u1R+2VdRaD/82YIQTdqLYC9DLPszZuynAJDtCvCtCs3bmyL66s7FqRM3+LPX7DhHnVTaagDw== +"@types/sinon@^9.0.9": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.9.tgz#115843b491583f924080f684b6d0d7438344f73c" + integrity sha512-z/y8maYOQyYLyqaOB+dYQ6i0pxKLOsfwCmHmn4T7jS/SDHicIslr37oE3Dg8SCqKrKeBy6Lemu7do2yy+unLrw== dependencies: "@types/sinonjs__fake-timers" "*" @@ -1773,28 +1773,28 @@ resolved "https://registry.yarnpkg.com/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.4.tgz#445251eb00bd9c1e751f82c7c6bf4f714edfd464" integrity sha512-/emrKCfQMQmFCqRqqBJ0JueHBT06jBRM3e8OgnvDUcvuExONujIk2hFA5dNsN9Nt41ljGVDdChvCydATZ+KOZw== -"@typescript-eslint/eslint-plugin@^4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.1.tgz#b362abe0ee478a6c6d06c14552a6497f0b480769" - integrity sha512-d7LeQ7dbUrIv5YVFNzGgaW3IQKMmnmKFneRWagRlGYOSfLJVaRbj/FrBNOBC1a3tVO+TgNq1GbHvRtg1kwL0FQ== +"@typescript-eslint/eslint-plugin@^4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.2.tgz#cf9102ec800391caa574f589ffe0623cca1d9308" + integrity sha512-gQ06QLV5l1DtvYtqOyFLXD9PdcILYqlrJj2l+CGDlPtmgLUzc1GpqciJFIRvyfvgLALpnxYINFuw+n9AZhPBKQ== dependencies: - "@typescript-eslint/experimental-utils" "4.8.1" - "@typescript-eslint/scope-manager" "4.8.1" + "@typescript-eslint/experimental-utils" "4.8.2" + "@typescript-eslint/scope-manager" "4.8.2" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.1.tgz#27275c20fa4336df99ebcf6195f7d7aa7aa9f22d" - integrity sha512-WigyLn144R3+lGATXW4nNcDJ9JlTkG8YdBWHkDlN0lC3gUGtDi7Pe3h5GPvFKMcRz8KbZpm9FJV9NTW8CpRHpg== +"@typescript-eslint/experimental-utils@4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.2.tgz#8909a5732f19329cf5ef0c39766170476bff5e50" + integrity sha512-hpTw6o6IhBZEsQsjuw/4RWmceRyESfAiEzAEnXHKG1X7S5DXFaZ4IO1JO7CW1aQ604leQBzjZmuMI9QBCAJX8Q== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.8.1" - "@typescript-eslint/types" "4.8.1" - "@typescript-eslint/typescript-estree" "4.8.1" + "@typescript-eslint/scope-manager" "4.8.2" + "@typescript-eslint/types" "4.8.2" + "@typescript-eslint/typescript-estree" "4.8.2" eslint-scope "^5.0.0" eslint-utils "^2.0.0" @@ -1816,23 +1816,23 @@ "@typescript-eslint/types" "4.7.0" "@typescript-eslint/visitor-keys" "4.7.0" -"@typescript-eslint/scope-manager@4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.8.1.tgz#e343c475f8f1d15801b546cb17d7f309b768fdce" - integrity sha512-r0iUOc41KFFbZdPAdCS4K1mXivnSZqXS5D9oW+iykQsRlTbQRfuFRSW20xKDdYiaCoH+SkSLeIF484g3kWzwOQ== +"@typescript-eslint/scope-manager@4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.8.2.tgz#a18388c63ae9c17adde519384f539392f2c4f0d9" + integrity sha512-qHQ8ODi7mMin4Sq2eh/6eu03uVzsf5TX+J43xRmiq8ujng7ViQSHNPLOHGw/Wr5dFEoxq/ubKhzClIIdQy5q3g== dependencies: - "@typescript-eslint/types" "4.8.1" - "@typescript-eslint/visitor-keys" "4.8.1" + "@typescript-eslint/types" "4.8.2" + "@typescript-eslint/visitor-keys" "4.8.2" "@typescript-eslint/types@4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.7.0.tgz#5e95ef5c740f43d942542b35811f87b62fccca69" integrity sha512-uLszFe0wExJc+I7q0Z/+BnP7wao/kzX0hB5vJn4LIgrfrMLgnB2UXoReV19lkJQS1a1mHWGGODSxnBx6JQC3Sg== -"@typescript-eslint/types@4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.8.1.tgz#23829c73c5fc6f4fcd5346a7780b274f72fee222" - integrity sha512-ave2a18x2Y25q5K05K/U3JQIe2Av4+TNi/2YuzyaXLAsDx6UZkz1boZ7nR/N6Wwae2PpudTZmHFXqu7faXfHmA== +"@typescript-eslint/types@4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.8.2.tgz#c862dd0e569d9478eb82d6aee662ea53f5661a36" + integrity sha512-z1/AVcVF8ju5ObaHe2fOpZYEQrwHyZ7PTOlmjd3EoFeX9sv7UekQhfrCmgUO7PruLNfSHrJGQvrW3Q7xQ8EoAw== "@typescript-eslint/typescript-estree@4.7.0": version "4.7.0" @@ -1848,13 +1848,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.1.tgz#7307e3f2c9e95df7daa8dc0a34b8c43b7ec0dd32" - integrity sha512-bJ6Fn/6tW2g7WIkCWh3QRlaSU7CdUUK52shx36/J7T5oTQzANvi6raoTsbwGM11+7eBbeem8hCCKbyvAc0X3sQ== +"@typescript-eslint/typescript-estree@4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.2.tgz#eeec34707d8577600fb21661b5287226cc8b3bed" + integrity sha512-HToGNwI6fekH0dOw3XEVESUm71Onfam0AKin6f26S2FtUmO7o3cLlWgrIaT1q3vjB3wCTdww3Dx2iGq5wtUOCg== dependencies: - "@typescript-eslint/types" "4.8.1" - "@typescript-eslint/visitor-keys" "4.8.1" + "@typescript-eslint/types" "4.8.2" + "@typescript-eslint/visitor-keys" "4.8.2" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -1870,12 +1870,12 @@ "@typescript-eslint/types" "4.7.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.1.tgz#794f68ee292d1b2e3aa9690ebedfcb3a8c90e3c3" - integrity sha512-3nrwXFdEYALQh/zW8rFwP4QltqsanCDz4CwWMPiIZmwlk9GlvBeueEIbq05SEq4ganqM0g9nh02xXgv5XI3PeQ== +"@typescript-eslint/visitor-keys@4.8.2": + version "4.8.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.2.tgz#62cd3fbbbf65f8eccfbe6f159eb1b84a243a3f77" + integrity sha512-Vg+/SJTMZJEKKGHW7YC21QxgKJrSbxoYYd3MEUGtW7zuytHuEcksewq0DUmo4eh/CTNrVJGSdIY9AtRb6riWFw== dependencies: - "@typescript-eslint/types" "4.8.1" + "@typescript-eslint/types" "4.8.2" eslint-visitor-keys "^2.0.0" "@yarnpkg/lockfile@^1.1.0": @@ -2294,10 +2294,10 @@ aws-sdk-mock@^5.1.0: sinon "^9.0.1" traverse "^0.6.6" -aws-sdk@^2.637.0, aws-sdk@^2.797.0: - version "2.797.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.797.0.tgz#e9510a582606a580e7bbb686f01da28476599a2d" - integrity sha512-fFc/2Xr7NkSXlZ9+2rCOFovA9NO1OnIyEaJFVwMM9gaqzucwRAfNNT0Pa1Kua5dhWrcf/mX0Z4mCDnTBf0/5mA== +aws-sdk@^2.637.0, aws-sdk@^2.799.0: + version "2.799.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.799.0.tgz#8b1a64c1a9f8ccf5794eb07bdd8051e4cb6adcfd" + integrity sha512-NYAoiNU+bJXhlJsC0rFqrmD5t5ho7/VxldmziP6HLPYHfOCI9Uvk6UVjfPmhLWPm0mHnIxhsHqmsNGyjhHNYmw== dependencies: buffer "4.9.2" events "1.1.1" @@ -4914,7 +4914,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -9441,10 +9441,10 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123" - integrity sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw== +table@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.4.tgz#c523dd182177e926c723eb20e1b341238188aa0d" + integrity sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw== dependencies: ajv "^6.12.4" lodash "^4.17.20" @@ -9937,32 +9937,32 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript-json-schema@^0.43.0: - version "0.43.0" - resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.43.0.tgz#8bd9c832f1f15f006ff933907ce192222fdfd92f" - integrity sha512-4c9IMlIlHYJiQtzL1gh2nIPJEjBgJjDUs50gsnnc+GFyDSK1oFM3uQIBSVosiuA/4t6LSAXDS9vTdqbQC6EcgA== +typescript-json-schema@^0.44.0: + version "0.44.0" + resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.44.0.tgz#8ec96b26caa5b8744d6cac47ce9aadc3187f4700" + integrity sha512-MC6hEUYmA35F6SQjwrogzjOhrkH0x4f/yCrzb1EQU5EOoEDdu51vsrlkI9oKgLyyC7uWKBOlJsWAFk2RfGFvgQ== dependencies: - "@types/json-schema" "^7.0.5" - glob "~7.1.6" + "@types/json-schema" "^7.0.6" + glob "^7.1.6" json-stable-stringify "^1.0.1" - typescript "~4.0.2" - yargs "^15.4.1" + typescript "^4.1.2" + yargs "^16.1.1" typescript@^3.3.3, typescript@~3.9.7: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== +typescript@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" + integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== + typescript@~3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== -typescript@~4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" - integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== - uglify-js@^3.1.4: version "3.11.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.0.tgz#67317658d76c21e0e54d3224aee2df4ee6c3e1dc" From 455b0caa215d264c0a93ddb089bba91a39b85ec5 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Mon, 30 Nov 2020 10:31:24 +0000 Subject: [PATCH 015/304] Revert "Merge branch 'master' into v2-main (#11715)" This reverts commit 58d4a01da85a14b5963a93b889568060d210de1a. --- .github/ISSUE_TEMPLATE/bug.md | 2 +- .github/ISSUE_TEMPLATE/doc.md | 2 +- .github/ISSUE_TEMPLATE/feature-request.md | 2 +- .github/ISSUE_TEMPLATE/general-issues.md | 2 +- .github/workflows/issue-label-assign.yml | 335 +- CHANGELOG.md | 63 - .../ecs-service-extensions/package.json | 2 +- packages/@aws-cdk/assets/package.json | 2 +- packages/@aws-cdk/aws-amplify/lib/app.ts | 6 +- packages/@aws-cdk/aws-amplify/lib/branch.ts | 2 +- packages/@aws-cdk/aws-amplify/lib/domain.ts | 2 +- .../aws-apigateway/lib/authorizers/lambda.ts | 2 +- .../@aws-cdk/aws-apigateway/lib/deployment.ts | 4 +- .../aws-apigateway/lib/integration.ts | 2 +- .../aws-apigateway/lib/integrations/aws.ts | 2 +- .../aws-apigateway/lib/integrations/lambda.ts | 2 +- .../@aws-cdk/aws-apigateway/lib/usage-plan.ts | 2 +- .../@aws-cdk/aws-apigateway/lib/vpc-link.ts | 4 +- .../aws-apigateway/test/deployment.test.ts | 2 +- .../aws-apigateway/test/stage.test.ts | 2 +- .../lib/scalable-target.ts | 2 +- .../lib/step-scaling-action.ts | 2 +- .../test/test.scalable-target.ts | 4 +- packages/@aws-cdk/aws-appmesh/README.md | 8 +- .../aws-appmesh/lib/gateway-route-spec.ts | 34 +- packages/@aws-cdk/aws-appmesh/lib/mesh.ts | 2 +- packages/@aws-cdk/aws-appmesh/lib/route.ts | 2 +- .../lib/virtual-gateway-listener.ts | 107 +- .../aws-appmesh/lib/virtual-gateway.ts | 2 +- .../@aws-cdk/aws-appmesh/lib/virtual-node.ts | 6 +- .../aws-appmesh/lib/virtual-router.ts | 2 +- .../aws-appmesh/lib/virtual-service.ts | 2 +- .../@aws-cdk/aws-appmesh/test/integ.mesh.ts | 8 +- .../aws-appmesh/test/test.gateway-route.ts | 10 +- .../aws-appmesh/test/test.virtual-gateway.ts | 12 +- packages/@aws-cdk/aws-appsync/lib/schema.ts | 2 +- .../aws-autoscaling/lib/auto-scaling-group.ts | 10 +- .../lib/step-scaling-action.ts | 2 +- .../test/auto-scaling-group.test.ts | 6 +- packages/@aws-cdk/aws-backup/lib/plan.ts | 2 +- packages/@aws-cdk/aws-backup/lib/selection.ts | 6 +- .../lib/dns-validated-certificate.ts | 2 +- .../test/certificate.test.ts | 4 +- .../aws-cloudformation/lib/custom-resource.ts | 2 +- .../aws-cloudfront-origins/package.json | 2 +- packages/@aws-cdk/aws-cloudfront/.gitignore | 4 +- packages/@aws-cdk/aws-cloudfront/README.md | 26 +- .../aws-cloudfront/lib/distribution.ts | 6 +- .../lib/experimental/edge-function.ts | 262 - .../lib/experimental/edge-function/index.js | 19 - .../aws-cloudfront/lib/experimental/index.ts | 1 - packages/@aws-cdk/aws-cloudfront/lib/index.ts | 2 - packages/@aws-cdk/aws-cloudfront/package.json | 8 +- .../test/experimental/edge-function.test.ts | 202 - ...ribution-lambda-cross-region.expected.json | 261 - .../integ.distribution-lambda-cross-region.ts | 27 - packages/@aws-cdk/aws-cloudtrail/package.json | 2 +- packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts | 6 +- .../aws-cloudwatch/lib/composite-alarm.ts | 8 +- .../@aws-cdk/aws-cloudwatch/lib/dashboard.ts | 2 +- .../@aws-cdk/aws-codebuild/lib/build-spec.ts | 2 +- .../@aws-cdk/aws-codebuild/lib/project.ts | 10 +- packages/@aws-cdk/aws-codebuild/package.json | 2 +- .../@aws-cdk/aws-codecommit/lib/repository.ts | 2 +- packages/@aws-cdk/aws-codecommit/package.json | 2 +- .../lib/lambda/deployment-group.ts | 8 +- .../lib/server/deployment-group.ts | 6 +- .../lib/profiling-group.ts | 2 +- .../aws-codepipeline-actions/lib/action.ts | 2 +- .../lib/codebuild/build-action.ts | 2 +- .../lib/codedeploy/ecs-deploy-action.ts | 6 +- .../test.codecommit-source-action.ts | 4 +- .../test/lambda/test.lambda-invoke-action.ts | 2 +- .../test/s3/test.s3-source-action.ts | 4 +- .../@aws-cdk/aws-codepipeline/lib/artifact.ts | 6 +- .../@aws-cdk/aws-codepipeline/lib/pipeline.ts | 6 +- .../aws-codepipeline/lib/private/stage.ts | 4 +- .../test/fake-source-action.ts | 2 +- .../@aws-cdk/aws-cognito/lib/user-pool.ts | 2 +- packages/@aws-cdk/aws-cognito/package.json | 1 + .../@aws-cdk/aws-config/lib/managed-rules.ts | 2 +- packages/@aws-cdk/aws-config/lib/rule.ts | 4 +- packages/@aws-cdk/aws-databrew/.eslintrc.js | 3 - packages/@aws-cdk/aws-databrew/.gitignore | 19 - packages/@aws-cdk/aws-databrew/.npmignore | 28 - packages/@aws-cdk/aws-databrew/LICENSE | 201 - packages/@aws-cdk/aws-databrew/NOTICE | 2 - packages/@aws-cdk/aws-databrew/README.md | 16 - packages/@aws-cdk/aws-databrew/jest.config.js | 2 - packages/@aws-cdk/aws-databrew/lib/index.ts | 2 - packages/@aws-cdk/aws-databrew/package.json | 97 - .../aws-databrew/test/databrew.test.ts | 6 - packages/@aws-cdk/aws-dynamodb/lib/table.ts | 12 +- packages/@aws-cdk/aws-dynamodb/package.json | 2 +- packages/@aws-cdk/aws-ec2/lib/instance.ts | 6 +- .../@aws-cdk/aws-ec2/lib/security-group.ts | 4 +- packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts | 6 +- packages/@aws-cdk/aws-ec2/lib/vpc.ts | 2 +- .../aws-ec2/test/security-group.test.ts | 8 +- .../aws-ec2/test/vpc.from-lookup.test.ts | 2 +- packages/@aws-cdk/aws-ec2/test/vpc.test.ts | 2 +- .../aws-ecr-assets/test/image-asset.test.ts | 4 +- packages/@aws-cdk/aws-ecr/lib/repository.ts | 4 +- .../@aws-cdk/aws-ecs/lib/base/base-service.ts | 10 +- .../aws-ecs/lib/base/task-definition.ts | 16 +- .../aws-ecs/lib/container-definition.ts | 12 +- .../@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts | 4 +- .../lib/fargate/fargate-task-definition.ts | 8 - .../@aws-cdk/aws-ecs/lib/linux-parameters.ts | 8 +- .../fargate/test.fargate-task-definition.ts | 4 +- .../@aws-cdk/aws-eks-legacy/lib/aws-auth.ts | 6 +- packages/@aws-cdk/aws-eks/lib/aws-auth.ts | 6 +- .../@aws-cdk/aws-eks/lib/cluster-resource.ts | 4 +- packages/@aws-cdk/aws-eks/lib/cluster.ts | 6 +- .../@aws-cdk/aws-eks/lib/fargate-profile.ts | 2 +- packages/@aws-cdk/aws-eks/package.json | 2 +- .../@aws-cdk/aws-eks/test/test.cluster.ts | 97 - .../lib/load-balancer.ts | 2 +- .../lib/cognito-action.ts | 2 +- .../lib/alb/application-listener-action.ts | 2 +- .../lib/alb/application-listener-rule.ts | 4 +- .../lib/alb/application-listener.ts | 2 +- .../lib/alb/application-load-balancer.ts | 2 +- .../lib/shared/base-listener.ts | 2 +- .../lib/shared/base-load-balancer.ts | 2 +- .../lib/shared/base-target-group.ts | 26 +- .../@aws-cdk/aws-elasticsearch/lib/domain.ts | 2 +- .../@aws-cdk/aws-events-targets/package.json | 2 +- packages/@aws-cdk/aws-events/lib/event-bus.ts | 2 +- packages/@aws-cdk/aws-events/lib/input.ts | 2 +- packages/@aws-cdk/aws-events/lib/rule.ts | 4 +- .../@aws-cdk/aws-events/test/test.input.ts | 2 +- .../lib/endpoint-group.ts | 2 +- packages/@aws-cdk/aws-iam/lib/group.ts | 2 +- .../@aws-cdk/aws-iam/lib/managed-policy.ts | 2 +- packages/@aws-cdk/aws-iam/lib/policy.ts | 2 +- packages/@aws-cdk/aws-iam/lib/role.ts | 2 +- packages/@aws-cdk/aws-iam/lib/user.ts | 2 +- packages/@aws-cdk/aws-iam/lib/util.ts | 2 +- .../aws-iam/test/cross-account.test.ts | 2 +- .../aws-iam/test/policy-document.test.ts | 16 +- .../aws-iam/test/role.from-role-arn.test.ts | 2 +- .../test/test.kinesis.ts | 2 +- .../@aws-cdk/aws-lambda-nodejs/lib/Dockerfile | 5 - .../@aws-cdk/aws-lambda-nodejs/lib/util.ts | 14 +- .../aws-lambda-nodejs/test/docker.test.ts | 17 +- .../aws-lambda-nodejs/test/util.test.ts | 14 +- .../@aws-cdk/aws-lambda/lib/function-base.ts | 23 +- packages/@aws-cdk/aws-lambda/lib/function.ts | 10 +- .../@aws-cdk/aws-lambda/lib/lambda-version.ts | 2 +- packages/@aws-cdk/aws-lambda/package.json | 1 + .../@aws-cdk/aws-lambda/test/alias.test.ts | 2 +- .../test/event-source-mapping.test.ts | 4 +- .../aws-logs/lib/cross-account-destination.ts | 4 +- packages/@aws-cdk/aws-logs/package.json | 2 +- .../@aws-cdk/aws-networkfirewall/.eslintrc.js | 3 - .../@aws-cdk/aws-networkfirewall/.gitignore | 19 - .../@aws-cdk/aws-networkfirewall/.npmignore | 28 - packages/@aws-cdk/aws-networkfirewall/LICENSE | 201 - packages/@aws-cdk/aws-networkfirewall/NOTICE | 2 - .../@aws-cdk/aws-networkfirewall/README.md | 16 - .../aws-networkfirewall/jest.config.js | 2 - .../@aws-cdk/aws-networkfirewall/lib/index.ts | 2 - .../@aws-cdk/aws-networkfirewall/package.json | 97 - .../test/networkfirewall.test.ts | 6 - packages/@aws-cdk/aws-rds/lib/instance.ts | 6 +- packages/@aws-cdk/aws-rds/lib/option-group.ts | 2 +- .../@aws-cdk/aws-rds/lib/parameter-group.ts | 4 +- packages/@aws-cdk/aws-redshift/lib/cluster.ts | 3 - .../aws-redshift/test/cluster.test.ts | 24 - .../@aws-cdk/aws-route53/lib/hosted-zone.ts | 2 +- packages/@aws-cdk/aws-route53/package.json | 2 +- packages/@aws-cdk/aws-s3/lib/bucket.ts | 10 +- .../notifications-resource.ts | 2 +- packages/@aws-cdk/aws-s3/test/bucket.test.ts | 2 +- packages/@aws-cdk/aws-ses/lib/receipt-rule.ts | 2 +- packages/@aws-cdk/aws-signer/.eslintrc.js | 3 - packages/@aws-cdk/aws-signer/.gitignore | 19 - packages/@aws-cdk/aws-signer/.npmignore | 28 - packages/@aws-cdk/aws-signer/LICENSE | 201 - packages/@aws-cdk/aws-signer/NOTICE | 2 - packages/@aws-cdk/aws-signer/README.md | 16 - packages/@aws-cdk/aws-signer/jest.config.js | 2 - packages/@aws-cdk/aws-signer/lib/index.ts | 2 - packages/@aws-cdk/aws-signer/package.json | 97 - .../@aws-cdk/aws-signer/test/signer.test.ts | 6 - packages/@aws-cdk/aws-sqs/package.json | 2 +- .../@aws-cdk/aws-ssm/test/test.parameter.ts | 4 +- .../lib/ecs/run-ecs-task-base.ts | 4 +- .../lib/ecs/run-task.ts | 2 +- .../lib/sagemaker/create-model.ts | 2 +- .../lib/sagemaker/create-training-job.ts | 2 +- .../aws-stepfunctions/lib/activity.ts | 2 +- .../@aws-cdk/aws-synthetics/lib/canary.ts | 2 +- .../aws-synthetics/test/canary.test.ts | 2 +- packages/@aws-cdk/cfnspec/CHANGELOG.md | 171 - packages/@aws-cdk/cfnspec/cfn.version | 2 +- ...0_CloudFormationResourceSpecification.json | 9745 ++++++----------- .../spec-source/700_DataBrew_patch.json | 32 - .../cloud-assembly-schema/package.json | 2 +- .../@aws-cdk/cloudformation-diff/package.json | 2 +- .../cloudformation-include/package.json | 6 - packages/@aws-cdk/core/lib/cfn-element.ts | 2 +- packages/@aws-cdk/core/lib/cfn-parse.ts | 4 +- packages/@aws-cdk/core/lib/lazy.ts | 274 +- packages/@aws-cdk/core/lib/nested-stack.ts | 5 +- .../core/lib/private/cfn-reference.ts | 2 +- .../core/lib/private/metadata-resource.ts | 2 +- packages/@aws-cdk/core/lib/resource.ts | 4 +- .../stack-synthesizers/default-synthesizer.ts | 4 - .../core/lib/stack-synthesizers/legacy.ts | 3 - .../core/lib/stack-synthesizers/nested.ts | 3 - packages/@aws-cdk/core/lib/token.ts | 2 +- packages/@aws-cdk/core/package.json | 4 +- packages/@aws-cdk/core/test/cfn-json.test.ts | 4 +- .../core/test/cloudformation-json.test.ts | 32 +- packages/@aws-cdk/core/test/construct.test.ts | 2 +- packages/@aws-cdk/core/test/duration.test.ts | 2 +- .../private/physical-name-generator.test.ts | 2 +- .../core/test/private/tree-metadata.test.ts | 4 +- .../new-style-synthesis.test.ts | 12 - packages/@aws-cdk/core/test/stack.test.ts | 2 +- packages/@aws-cdk/core/test/tokens.test.ts | 57 +- .../@aws-cdk/custom-resources/package.json | 4 +- .../lib/actions/publish-assets-action.ts | 2 +- .../@monocdk-experiment/assert/package.json | 2 +- .../rewrite-imports/package.json | 2 +- packages/aws-cdk-lib/package.json | 5 +- packages/aws-cdk/.eslintrc.js | 2 +- packages/aws-cdk/.npmignore | 8 +- packages/aws-cdk/CONTRIBUTING.md | 3 - packages/aws-cdk/bin/cdk.ts | 3 +- .../aws-cdk/lib/api/cxapp/cloud-executable.ts | 13 +- .../{v1 => }/app/csharp/.template.gitignore | 0 .../{v1 => }/app/csharp/README.md | 0 .../{v1 => }/app/csharp/add-project.hook.ts | 2 +- .../{v1 => }/app/csharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.csproj | 0 .../%name.PascalCased%Stack.template.cs | 0 .../%name.PascalCased%/GlobalSuppressions.cs | 0 .../%name.PascalCased%/Program.template.cs | 0 .../{v1 => }/app/fsharp/.template.gitignore | 0 .../{v1 => }/app/fsharp/README.md | 0 .../{v2 => }/app/fsharp/add-project.hook.ts | 2 +- .../{v1 => }/app/fsharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.fsproj | 0 .../%name.PascalCased%Stack.template.fs | 0 .../%name.PascalCased%/Program.template.fs | 0 .../lib/init-templates/{v1 => }/app/info.json | 0 .../{v1 => }/app/java/.template.gitignore | 0 .../{v1 => }/app/java/README.md | 0 .../init-templates/{v1 => }/app/java/cdk.json | 0 .../{v1 => }/app/java/pom.template.xml | 0 .../myorg/%name.PascalCased%App.template.java | 0 .../%name.PascalCased%Stack.template.java | 0 .../%name.PascalCased%Test.template.java | 0 .../app/javascript/.template.gitignore | 0 .../app/javascript/.template.npmignore | 0 .../{v1 => }/app/javascript/README.md | 0 .../app/javascript/bin/%name%.template.js | 0 .../{v1 => }/app/javascript/cdk.template.json | 0 .../javascript/lib/%name%-stack.template.js | 0 .../app/javascript/package.template.json | 0 .../javascript/test/%name%.test.template.js | 0 .../%name.PythonModule%_stack.template.py | 0 .../python/%name.PythonModule%/__init__.py | 0 .../{v1 => }/app/python/.template.gitignore | 0 .../{v1 => }/app/python/README.template.md | 0 .../{v1 => }/app/python/app.template.py | 0 .../{v1 => }/app/python/cdk.template.json | 0 .../{v1 => }/app/python/requirements.txt | 0 .../{v1 => }/app/python/setup.template.py | 0 .../{v1 => }/app/python/source.bat | 0 .../app/typescript/.template.gitignore | 0 .../app/typescript/.template.npmignore | 0 .../{v1 => }/app/typescript/README.md | 0 .../app/typescript/bin/%name%.template.ts | 0 .../{v1 => }/app/typescript/cdk.template.json | 0 .../{v1 => }/app/typescript/jest.config.js | 0 .../typescript/lib/%name%-stack.template.ts | 0 .../app/typescript/package.template.json | 0 .../typescript/test/%name%.test.template.ts | 0 .../{v1 => }/app/typescript/tsconfig.json | 0 .../lib/init-templates/{v1 => }/lib/info.json | 0 .../lib/typescript/.template.gitignore | 0 .../lib/typescript/.template.npmignore | 0 .../lib/typescript/README.template.md | 0 .../{v1 => }/lib/typescript/jest.config.js | 0 .../lib/typescript/lib/index.template.ts | 0 .../lib/typescript/package.template.json | 0 .../typescript/test/%name%.test.template.ts | 0 .../{v1 => }/lib/typescript/tsconfig.json | 0 .../sample-app/csharp/.template.gitignore | 0 .../sample-app/csharp/README.template.md | 0 .../sample-app/csharp/add-project.hook.ts | 2 +- .../sample-app/csharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.csproj | 0 .../%name.PascalCased%Stack.template.cs | 0 .../%name.PascalCased%/GlobalSuppressions.cs | 0 .../%name.PascalCased%/Program.template.cs | 0 .../sample-app/fsharp/.template.gitignore | 0 .../sample-app/fsharp/README.template.md | 0 .../sample-app/fsharp/add-project.hook.ts | 2 +- .../sample-app/fsharp/cdk.template.json | 0 .../src/%name.PascalCased%.template.sln | 0 .../%name.PascalCased%.template.fsproj | 0 .../%name.PascalCased%Stack.template.fs | 0 .../%name.PascalCased%/Program.template.fs | 0 .../{v1 => }/sample-app/info.json | 0 .../sample-app/java/.template.gitignore | 0 .../sample-app/java/README.template.md | 0 .../{v1 => }/sample-app/java/cdk.json | 0 .../{v1 => }/sample-app/java/pom.template.xml | 0 .../myorg/%name.PascalCased%App.template.java | 0 .../%name.PascalCased%Stack.template.java | 0 .../%name.PascalCased%StackTest.template.java | 0 .../sample-app/javascript/.template.gitignore | 0 .../sample-app/javascript/.template.npmignore | 0 .../sample-app/javascript/README.template.md | 0 .../javascript/bin/%name%.template.js | 0 .../sample-app/javascript/cdk.template.json | 0 .../javascript/lib/%name%-stack.template.js | 0 .../javascript/package.template.json | 0 .../javascript/test/%name%.test.template.js | 0 .../sample-app/javascript/tsconfig.json | 0 .../%name.PythonModule%_stack.template.py | 0 .../python/%name.PythonModule%/__init__.py | 0 .../sample-app/python/.template.gitignore | 0 .../sample-app/python/README.template.md | 0 .../sample-app/python/app.template.py | 0 .../sample-app/python/cdk.template.json | 0 .../sample-app/python/requirements.txt | 0 .../sample-app/python/setup.template.py | 0 .../{v1 => }/sample-app/python/source.bat | 0 .../sample-app/python/tests/__init__.py | 0 .../sample-app/python/tests/unit/__init__.py | 0 ...test_%name.PythonModule%_stack.template.py | 0 .../sample-app/typescript/.template.gitignore | 0 .../sample-app/typescript/.template.npmignore | 0 .../sample-app/typescript/README.template.md | 0 .../typescript/bin/%name%.template.ts | 0 .../sample-app/typescript/cdk.template.json | 0 .../sample-app/typescript/jest.config.js | 0 .../typescript/lib/%name%-stack.template.ts | 0 .../typescript/package.template.json | 0 .../typescript/test/%name%.test.template.ts | 0 .../sample-app/typescript/tsconfig.json | 0 .../v1/app/fsharp/add-project.hook.ts | 33 - .../v1/sample-app/fsharp/add-project.hook.ts | 33 - .../v2/app/csharp/.template.gitignore | 342 - .../init-templates/v2/app/csharp/README.md | 14 - .../v2/app/csharp/add-project.hook.ts | 33 - .../v2/app/csharp/cdk.template.json | 3 - .../src/%name.PascalCased%.template.sln | 18 - .../%name.PascalCased%.template.csproj | 19 - .../%name.PascalCased%Stack.template.cs | 12 - .../%name.PascalCased%/GlobalSuppressions.cs | 1 - .../%name.PascalCased%/Program.template.cs | 17 - .../v2/app/fsharp/.template.gitignore | 342 - .../init-templates/v2/app/fsharp/README.md | 18 - .../v2/app/fsharp/cdk.template.json | 3 - .../src/%name.PascalCased%.template.sln | 18 - .../%name.PascalCased%.template.fsproj | 24 - .../%name.PascalCased%Stack.template.fs | 8 - .../%name.PascalCased%/Program.template.fs | 11 - .../lib/init-templates/v2/app/info.json | 4 - .../v2/app/java/.template.gitignore | 13 - .../lib/init-templates/v2/app/java/README.md | 18 - .../lib/init-templates/v2/app/java/cdk.json | 3 - .../v2/app/java/pom.template.xml | 66 - .../myorg/%name.PascalCased%App.template.java | 15 - .../%name.PascalCased%Stack.template.java | 17 - .../%name.PascalCased%Test.template.java | 28 - .../v2/app/javascript/.template.gitignore | 8 - .../v2/app/javascript/.template.npmignore | 3 - .../v2/app/javascript/README.md | 12 - .../v2/app/javascript/bin/%name%.template.js | 7 - .../v2/app/javascript/cdk.template.json | 3 - .../javascript/lib/%name%-stack.template.js | 17 - .../v2/app/javascript/package.template.json | 20 - .../javascript/test/%name%.test.template.js | 11 - .../%name.PythonModule%_stack.template.py | 9 - .../python/%name.PythonModule%/__init__.py | 0 .../v2/app/python/.template.gitignore | 10 - .../v2/app/python/README.template.md | 58 - .../v2/app/python/app.template.py | 11 - .../v2/app/python/cdk.template.json | 3 - .../v2/app/python/requirements.txt | 1 - .../v2/app/python/setup.template.py | 45 - .../init-templates/v2/app/python/source.bat | 13 - .../v2/app/typescript/.template.gitignore | 11 - .../v2/app/typescript/.template.npmignore | 6 - .../v2/app/typescript/README.md | 14 - .../v2/app/typescript/bin/%name%.template.ts | 7 - .../v2/app/typescript/cdk.template.json | 3 - .../v2/app/typescript/jest.config.js | 7 - .../typescript/lib/%name%-stack.template.ts | 9 - .../v2/app/typescript/package.template.json | 27 - .../typescript/test/%name%.test.template.ts | 11 - .../v2/app/typescript/tsconfig.json | 23 - .../lib/init-templates/v2/lib/info.json | 4 - .../v2/lib/typescript/.template.gitignore | 11 - .../v2/lib/typescript/.template.npmignore | 6 - .../v2/lib/typescript/README.template.md | 12 - .../v2/lib/typescript/jest.config.js | 7 - .../v2/lib/typescript/lib/index.template.ts | 14 - .../v2/lib/typescript/package.template.json | 26 - .../typescript/test/%name%.test.template.ts | 12 - .../v2/lib/typescript/tsconfig.json | 24 - .../v2/sample-app/csharp/.template.gitignore | 342 - .../v2/sample-app/csharp/README.template.md | 19 - .../v2/sample-app/csharp/add-project.hook.ts | 33 - .../v2/sample-app/csharp/cdk.template.json | 3 - .../src/%name.PascalCased%.template.sln | 18 - .../%name.PascalCased%.template.csproj | 19 - .../%name.PascalCased%Stack.template.cs | 23 - .../%name.PascalCased%/GlobalSuppressions.cs | 1 - .../%name.PascalCased%/Program.template.cs | 15 - .../v2/sample-app/fsharp/.template.gitignore | 342 - .../v2/sample-app/fsharp/README.template.md | 20 - .../v2/sample-app/fsharp/cdk.template.json | 3 - .../src/%name.PascalCased%.template.sln | 18 - .../%name.PascalCased%.template.fsproj | 24 - .../%name.PascalCased%Stack.template.fs | 14 - .../%name.PascalCased%/Program.template.fs | 11 - .../init-templates/v2/sample-app/info.json | 4 - .../v2/sample-app/java/.template.gitignore | 13 - .../v2/sample-app/java/README.template.md | 19 - .../v2/sample-app/java/cdk.json | 3 - .../v2/sample-app/java/pom.template.xml | 61 - .../myorg/%name.PascalCased%App.template.java | 13 - .../%name.PascalCased%Stack.template.java | 29 - .../%name.PascalCased%StackTest.template.java | 27 - .../sample-app/javascript/.template.gitignore | 8 - .../sample-app/javascript/.template.npmignore | 3 - .../sample-app/javascript/README.template.md | 13 - .../javascript/bin/%name%.template.js | 6 - .../sample-app/javascript/cdk.template.json | 3 - .../javascript/lib/%name%-stack.template.js | 25 - .../javascript/package.template.json | 20 - .../javascript/test/%name%.test.template.js | 12 - .../v2/sample-app/javascript/tsconfig.json | 26 - .../%name.PythonModule%_stack.template.py | 24 - .../python/%name.PythonModule%/__init__.py | 0 .../v2/sample-app/python/.template.gitignore | 22 - .../v2/sample-app/python/README.template.md | 65 - .../v2/sample-app/python/app.template.py | 11 - .../v2/sample-app/python/cdk.template.json | 3 - .../v2/sample-app/python/requirements.txt | 2 - .../v2/sample-app/python/setup.template.py | 45 - .../v2/sample-app/python/source.bat | 13 - .../v2/sample-app/python/tests/__init__.py | 0 .../sample-app/python/tests/unit/__init__.py | 0 ...test_%name.PythonModule%_stack.template.py | 19 - .../sample-app/typescript/.template.gitignore | 11 - .../sample-app/typescript/.template.npmignore | 6 - .../sample-app/typescript/README.template.md | 15 - .../typescript/bin/%name%.template.ts | 6 - .../sample-app/typescript/cdk.template.json | 3 - .../v2/sample-app/typescript/jest.config.js | 7 - .../typescript/lib/%name%-stack.template.ts | 18 - .../typescript/package.template.json | 26 - .../typescript/test/%name%.test.template.ts | 12 - .../v2/sample-app/typescript/tsconfig.json | 23 - packages/aws-cdk/lib/init.ts | 37 +- packages/aws-cdk/lib/settings.ts | 2 - packages/aws-cdk/package.json | 8 +- .../aws-cdk/test/api/cloud-executable.test.ts | 19 - packages/aws-cdk/test/init.test.ts | 155 +- packages/aws-cdk/test/integ/cli/app/app.js | 117 +- .../aws-cdk/test/integ/cli/cdk-helpers.ts | 13 +- .../aws-cdk/test/integ/cli/cli.integtest.ts | 11 - packages/aws-cdk/tsconfig.json | 4 +- packages/cdk-assets/package.json | 4 +- packages/decdk/lib/declarative-stack.ts | 2 +- packages/decdk/package.json | 3 - packages/monocdk/package.json | 5 +- tools/cdk-build-tools/package.json | 2 +- tools/eslint-plugin-cdk/package.json | 2 +- tools/nodeunit-shim/package.json | 2 +- tools/yarn-cling/package.json | 2 +- version.v1.json | 2 +- yarn.lock | 130 +- 486 files changed, 4014 insertions(+), 13281 deletions(-) delete mode 100644 packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts delete mode 100644 packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js delete mode 100644 packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts delete mode 100644 packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts delete mode 100644 packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json delete mode 100644 packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts delete mode 100644 packages/@aws-cdk/aws-databrew/.eslintrc.js delete mode 100644 packages/@aws-cdk/aws-databrew/.gitignore delete mode 100644 packages/@aws-cdk/aws-databrew/.npmignore delete mode 100644 packages/@aws-cdk/aws-databrew/LICENSE delete mode 100644 packages/@aws-cdk/aws-databrew/NOTICE delete mode 100644 packages/@aws-cdk/aws-databrew/README.md delete mode 100644 packages/@aws-cdk/aws-databrew/jest.config.js delete mode 100644 packages/@aws-cdk/aws-databrew/lib/index.ts delete mode 100644 packages/@aws-cdk/aws-databrew/package.json delete mode 100644 packages/@aws-cdk/aws-databrew/test/databrew.test.ts delete mode 100644 packages/@aws-cdk/aws-networkfirewall/.eslintrc.js delete mode 100644 packages/@aws-cdk/aws-networkfirewall/.gitignore delete mode 100644 packages/@aws-cdk/aws-networkfirewall/.npmignore delete mode 100644 packages/@aws-cdk/aws-networkfirewall/LICENSE delete mode 100644 packages/@aws-cdk/aws-networkfirewall/NOTICE delete mode 100644 packages/@aws-cdk/aws-networkfirewall/README.md delete mode 100644 packages/@aws-cdk/aws-networkfirewall/jest.config.js delete mode 100644 packages/@aws-cdk/aws-networkfirewall/lib/index.ts delete mode 100644 packages/@aws-cdk/aws-networkfirewall/package.json delete mode 100644 packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts delete mode 100644 packages/@aws-cdk/aws-signer/.eslintrc.js delete mode 100644 packages/@aws-cdk/aws-signer/.gitignore delete mode 100644 packages/@aws-cdk/aws-signer/.npmignore delete mode 100644 packages/@aws-cdk/aws-signer/LICENSE delete mode 100644 packages/@aws-cdk/aws-signer/NOTICE delete mode 100644 packages/@aws-cdk/aws-signer/README.md delete mode 100644 packages/@aws-cdk/aws-signer/jest.config.js delete mode 100644 packages/@aws-cdk/aws-signer/lib/index.ts delete mode 100644 packages/@aws-cdk/aws-signer/package.json delete mode 100644 packages/@aws-cdk/aws-signer/test/signer.test.ts delete mode 100644 packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/README.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/csharp/src/%name.PascalCased%/Program.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/README.md (100%) rename packages/aws-cdk/lib/init-templates/{v2 => }/app/fsharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/fsharp/src/%name.PascalCased%/Program.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/info.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/README.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/cdk.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/pom.template.xml (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/README.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/bin/%name%.template.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/lib/%name%-stack.template.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/javascript/test/%name%.test.template.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/%name.PythonModule%/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/app.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/requirements.txt (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/setup.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/python/source.bat (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/README.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/bin/%name%.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/jest.config.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/lib/%name%-stack.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/test/%name%.test.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/app/typescript/tsconfig.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/info.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/jest.config.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/lib/index.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/test/%name%.test.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/lib/typescript/tsconfig.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/csharp/src/%name.PascalCased%/Program.template.cs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v2 => }/sample-app/fsharp/add-project.hook.ts (95%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/src/%name.PascalCased%.template.sln (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/info.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/cdk.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/pom.template.xml (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/bin/%name%.template.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/lib/%name%-stack.template.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/test/%name%.test.template.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/javascript/tsconfig.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/%name.PythonModule%/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/app.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/requirements.txt (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/setup.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/source.bat (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/tests/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/tests/unit/__init__.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/.template.gitignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/.template.npmignore (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/README.template.md (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/bin/%name%.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/cdk.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/jest.config.js (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/lib/%name%-stack.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/package.template.json (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/test/%name%.test.template.ts (100%) rename packages/aws-cdk/lib/init-templates/{v1 => }/sample-app/typescript/tsconfig.json (100%) delete mode 100644 packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/info.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/README.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/python/source.bat delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/info.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/info.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/__init__.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts delete mode 100644 packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index 286ca89cb1c53..b12a80d025350 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -1,7 +1,7 @@ --- name: "\U0001F41B Bug Report" about: Report a bug -title: "(module name): short issue description" +title: "[module] " labels: bug, needs-triage --- diff --git a/.github/ISSUE_TEMPLATE/doc.md b/.github/ISSUE_TEMPLATE/doc.md index 3c8a1dc691d0e..022c04c22ed80 100644 --- a/.github/ISSUE_TEMPLATE/doc.md +++ b/.github/ISSUE_TEMPLATE/doc.md @@ -1,7 +1,7 @@ --- name: "📕 Documentation Issue" about: Issue in the reference documentation or developer guide -title: "(module name): short issue description" +title: "[module] " labels: feature-request, documentation, needs-triage --- diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index 163f2f54d0b88..c2d12b48d5750 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -1,7 +1,7 @@ --- name: "\U0001F680 Feature Request" about: Request a new feature -title: "(module name): short issue description" +title: "[module] " labels: feature-request, needs-triage --- diff --git a/.github/ISSUE_TEMPLATE/general-issues.md b/.github/ISSUE_TEMPLATE/general-issues.md index dcd6520c0cfda..372cb49eb540c 100644 --- a/.github/ISSUE_TEMPLATE/general-issues.md +++ b/.github/ISSUE_TEMPLATE/general-issues.md @@ -1,7 +1,7 @@ --- name: "\U00002753 General Issue" about: Create a new issue -title: "(module name): short issue description" +title: "[module] " labels: needs-triage, guidance --- diff --git a/.github/workflows/issue-label-assign.yml b/.github/workflows/issue-label-assign.yml index 00e2ee1d2ecaf..6184e7c0580f5 100644 --- a/.github/workflows/issue-label-assign.yml +++ b/.github/workflows/issue-label-assign.yml @@ -2,10 +2,6 @@ name: "Set Issue Label and Assignee" on: issues: types: [opened, edited] - pull_request: - types: [opened, edited] - pull_request_target: - types: [opened, edited] jobs: test: @@ -17,169 +13,170 @@ jobs: title-or-body: 'title' parameters: > [ - {"keywords":["(cli)","(command line)"],"labels":["package/tools"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/alexa-ask)","(alexa-ask)","(alexa ask)"],"labels":["@aws-cdk/alexa-ask"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/app-delivery)","(app-delivery)","(app delivery)"],"labels":["@aws-cdk/app-delivery"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/assert)","(assert)"],"labels":["@aws-cdk/assert"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/assets)","(assets)"],"labels":["@aws-cdk/assets"],"assignees":["eladb"]}, - {"keywords":["(@aws-cdk/aws-accessanalyzer)","(aws-accessanalyzer)","(accessanalyzer)","(access analyzer)"],"labels":["@aws-cdk/aws-accessanalyzer"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-acmpca)","(aws-acmpca)","(acmpca)"],"labels":["@aws-cdk/aws-acmpca"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-amazonmq)","(aws-amazonmq)","(amazonmq)","(amazon mq)","(amazon-mq)"],"labels":["@aws-cdk/aws-amazonmq"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-amplify)","(aws-amplify)","(amplify)"],"labels":["@aws-cdk/aws-amplify"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-apigateway)","(aws-apigateway)","(apigateway)","(api gateway)","(api-gateway)"],"labels":["@aws-cdk/aws-apigateway"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/aws-apigatewayv2)","(aws-apigatewayv2)","(apigatewayv2)","(apigateway v2)","(api-gateway-v2)"],"labels":["@aws-cdk/aws-apigatewayv2"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/aws-apigatewayv2-integrations)","(aws-apigatewayv2-integrations)","(apigatewayv2-integrations)","(apigateway v2 integrations)","(api-gateway-v2-integrations)"],"labels":["@aws-cdk/aws-apigatewayv2-integrations"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/aws-appconfig)","(aws-appconfig)","(appconfig)","(app config)","(app-config)"],"labels":["@aws-cdk/aws-appconfig"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-appflow)","(aws-appflow)","(appflow)","(app flow)","(app-flow)"],"labels":["@aws-cdk/aws-appflow"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-applicationautoscaling)","(aws-applicationautoscaling)","(applicationautoscaling)","(application autoscaling)","(application-autoscaling)"],"labels":["@aws-cdk/aws-applicationautoscaling"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-applicationinsights)","(aws-applicationinsights)","(applicationinsights)","(application insights)","(application-insights)"],"labels":["@aws-cdk/aws-applicationinsights"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-appmesh)","(aws-appmesh)","(appmesh)","(app mesh)","(app-mesh)"],"labels":["@aws-cdk/aws-appmesh"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-appstream)","(aws-appstream)","(appstream)","(app stream)","(app-stream)"],"labels":["@aws-cdk/aws-appstream"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-appsync)","(aws-appsync)","(appsync)","(app sync)","(app-sync)"],"labels":["@aws-cdk/aws-appsync"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-athena)","(aws-athena)","(athena)"],"labels":["@aws-cdk/aws-athena"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-autoscaling)","(aws-autoscaling)","(autoscaling)","(auto scaling)","(auto-scaling)"],"labels":["@aws-cdk/aws-autoscaling"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-autoscaling-api)","(aws-autoscaling-api)","(autoscaling-api)","(autoscaling api)","(autoscaling-api)"],"labels":["@aws-cdk/aws-autoscaling-api"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-autoscaling-common)","(aws-autoscaling-common)","(autoscaling-common)","(autoscaling common)","(autoscaling-common)"],"labels":["@aws-cdk/aws-autoscaling-common"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-autoscaling-hooktargets)","(aws-autoscaling-hooktargets)","(autoscaling-hooktargets)","(autoscaling hooktargets)"],"labels":["@aws-cdk/aws-autoscaling-hooktargets"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-autoscalingplans)","(aws-autoscalingplans)","(autoscalingplans)","(autoscaling plans)", "(autoscaling-plans)"],"labels":["@aws-cdk/aws-autoscalingplans"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-backup)","(aws-backup)","(backup)"],"labels":["@aws-cdk/aws-backup"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-batch)","(aws-batch)","(batch)"],"labels":["@aws-cdk/aws-batch"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-budgets)","(aws-budgets)","(budgets)"],"labels":["@aws-cdk/aws-budgets"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-cassandra)","(aws-cassandra)","(cassandra)"],"labels":["@aws-cdk/aws-cassandra"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-ce)","(aws-ce)","(ce)"],"labels":["@aws-cdk/aws-ce"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-certificatemanager)","(aws-certificatemanager)","(certificatemanager)","(certificate manager)","(certificate-manager)","(acm)"],"labels":["@aws-cdk/aws-certificatemanager"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-chatbot)","(aws-chatbot)","(chatbot)"],"labels":["@aws-cdk/aws-chatbot"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-cloud9)","(aws-cloud9)","(cloud9)","(cloud 9)"],"labels":["@aws-cdk/aws-cloud9"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-cloudformation)","(aws-cloudformation)","(cloudformation)","(cloud formation)"],"labels":["@aws-cdk/aws-cloudformation"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-cloudfront)","(aws-cloudfront)","(cloudfront)","(cloud front)"],"labels":["@aws-cdk/aws-cloudfront"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-cloudfront-origins)","(aws-cloudfront-origins)","(cloudfront-origins)","(cloudfront origins)"],"labels":["@aws-cdk/aws-cloudfront-origins"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-cloudtrail)","(aws-cloudtrail)","(cloudtrail)","(cloud trail)"],"labels":["@aws-cdk/aws-cloudtrail"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-cloudwatch)","(aws-cloudwatch)","(cloudwatch)","(cloud watch)"],"labels":["@aws-cdk/aws-cloudwatch"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-cloudwatch-actions)","(aws-cloudwatch-actions)","(cloudwatch-actions)","(cloudwatch actions)"],"labels":["@aws-cdk/aws-cloudwatch-actions"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-codeartifact)","(aws-codeartifact)","(codeartifact)","(code artifact)","(code-artifact)"],"labels":["@aws-cdk/aws-codeartifact"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-codebuild)","(aws-codebuild)","(codebuild)","(code build)","(code-build)"],"labels":["@aws-cdk/aws-codebuild"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codecommit)","(aws-codecommit)","(codecommit)","(code commit)", "(code-commit)"],"labels":["@aws-cdk/aws-codecommit"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codedeploy)","(aws-codedeploy)","(codedeploy)","(code deploy)","(code-deploy)"],"labels":["@aws-cdk/aws-codedeploy"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codeguruprofiler)","(aws-codeguruprofiler)","(codeguruprofiler)","(codeguru profiler)","(codeguru-profiler)"],"labels":["@aws-cdk/aws-codeguruprofiler"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codegurureviewer)","(aws-codegurureviewer)","(codegurureviewer)","(codeguru reviewer)","(codeguru-reviewer)"],"labels":["@aws-cdk/aws-codegurureviewer"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-codepipeline)","(aws-codepipeline)","(codepipeline)","(code pipeline)","(code-pipeline)"],"labels":["@aws-cdk/aws-codepipeline"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codepipeline-actions)","(aws-codepipeline-actions)","(codepipeline-actions)","(codepipeline actions)"],"labels":["@aws-cdk/aws-codepipeline-actions"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codestar)","(aws-codestar)","(codestar)"],"labels":["@aws-cdk/aws-codestar"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codestarconnections)","(aws-codestarconnections)","(codestarconnections)","(codestar connections)","(codestar-connections)"],"labels":["@aws-cdk/aws-codestarconnections"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-codestarnotifications)","(aws-codestarnotifications)","(codestarnotifications)","(codestar notifications)","(codestar-notifications)"],"labels":["@aws-cdk/aws-codestarnotifications"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-cognito)","(aws-cognito)","(cognito)"],"labels":["@aws-cdk/aws-cognito"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/aws-config)","(aws-config)","(config)"],"labels":["@aws-cdk/aws-config"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-datapipeline)","(aws-datapipeline)","(datapipeline)","(data pipeline)","(data-pipeline)"],"labels":["@aws-cdk/aws-datapipeline"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-dax)","(aws-dax)","(dax)"],"labels":["@aws-cdk/aws-dax"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-detective)","(aws-detective)","(detective)"],"labels":["@aws-cdk/aws-detective"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-directoryservice)","(aws-directoryservice)","(directoryservice)","(directory service)","(directory-service)"],"labels":["@aws-cdk/aws-directoryservice"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-dlm)","(aws-dlm)","(dlm)"],"labels":["@aws-cdk/aws-dlm"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-dms)","(aws-dms)","(dms)"],"labels":["@aws-cdk/aws-dms"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-docdb)","(aws-docdb)","(docdb)","(doc db)","(doc-db)"],"labels":["@aws-cdk/aws-docdb"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-dynamodb)","(aws-dynamodb)","(dynamodb)","(dynamo db)","(dynamo-db)"],"labels":["@aws-cdk/aws-dynamodb"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-dynamodb-global)","(aws-dynamodb-global)","(dynamodb-global)","(dynamodb global)"],"labels":["@aws-cdk/aws-dynamodb-global"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-ec2)","(aws-ec2)","(ec2)","(vpc)"],"labels":["@aws-cdk/aws-ec2"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-ecr)","(aws-ecr)","(ecr)"],"labels":["@aws-cdk/aws-ecr"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-ecr-assets)","(aws-ecr-assets)","(ecr-assets)","(ecr assets)","(ecrassets)"],"labels":["@aws-cdk/aws-ecr-assets"],"assignees":["eladb"]}, - {"keywords":["(@aws-cdk/aws-efs)","(aws-efs)","(efs)"],"labels":["@aws-cdk/aws-efs"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-eks)","(aws-eks)","(eks)"],"labels":["@aws-cdk/aws-eks"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-elasticache)","(aws-elasticache)","(elasticache)","(elastic cache)","(elastic-cache)"],"labels":["@aws-cdk/aws-elasticache"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-elasticbeanstalk)","(aws-elasticbeanstalk)","(elasticbeanstalk)","(elastic beanstalk)","(elastic-beanstalk)"],"labels":["@aws-cdk/aws-elasticbeanstalk"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-elasticloadbalancing)","(aws-elasticloadbalancing)","(elasticloadbalancing)","(elastic loadbalancing)","(elastic-loadbalancing)","(elb)"],"labels":["@aws-cdk/aws-elasticloadbalancing"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-elasticloadbalancingv2)","(aws-elasticloadbalancingv2)","(elasticloadbalancingv2)","(elastic-loadbalancing-v2)","(elbv2)","(elb v2)"],"labels":["@aws-cdk/aws-elasticloadbalancingv2"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-elasticloadbalancingv2-targets)","(aws-elasticloadbalancingv2-targets)","(elasticloadbalancingv2-targets)","(elasticloadbalancingv2 targets)","(elbv2 targets)"],"labels":["@aws-cdk/aws-elasticloadbalancingv2-targets"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-elasticsearch)","(aws-elasticsearch)","(elasticsearch)","(elastic search)","(elastic-search)"],"labels":["@aws-cdk/aws-elasticsearch"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-emr)","(aws-emr)","(emr)"],"labels":["@aws-cdk/aws-emr"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-events)","(aws-events)","(events)","(eventbridge)","event-bridge)"],"labels":["@aws-cdk/aws-events"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-events-targets)","(aws-events-targets)","(events-targets)","(events targets)"],"labels":["@aws-cdk/aws-events-targets"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-eventschemas)","(aws-eventschemas)","(eventschemas)","(event schemas)"],"labels":["@aws-cdk/aws-eventschemas"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-fms)","(aws-fms)","(fms)"],"labels":["@aws-cdk/aws-fms"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-fsx)","(aws-fsx)","(fsx)"],"labels":["@aws-cdk/aws-fsx"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-gamelift)","(aws-gamelift)","(gamelift)","(game lift)"],"labels":["@aws-cdk/aws-gamelift"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-globalaccelerator)","(aws-globalaccelerator)","(globalaccelerator)","(global accelerator)","(global-accelerator)"],"labels":["@aws-cdk/aws-globalaccelerator"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-glue)","(aws-glue)","(glue)"],"labels":["@aws-cdk/aws-glue"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-greengrass)","(aws-greengrass)","(greengrass)","(green grass)","(green-grass)"],"labels":["@aws-cdk/aws-greengrass"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-guardduty)","(aws-guardduty)","(guardduty)","(guard duty)","(guard-duty)"],"labels":["@aws-cdk/aws-guardduty"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-iam)","(aws-iam)","(iam)"],"labels":["@aws-cdk/aws-iam"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/aws-imagebuilder)","(aws-imagebuilder)","(imagebuilder)","(image builder)","(image-builder)"],"labels":["@aws-cdk/aws-imagebuilder"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-inspector)","(aws-inspector)","(inspector)"],"labels":["@aws-cdk/aws-inspector"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-iot)","(aws-iot)","(iot)"],"labels":["@aws-cdk/aws-iot"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-iot1click)","(aws-iot1click)","(iot1click)","(iot 1click)"],"labels":["@aws-cdk/aws-iot1click"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-iotanalytics)","(aws-iotanalytics)","(iotanalytics)","(iot analytics)","(iot-analytics)"],"labels":["@aws-cdk/aws-iotanalytics"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-iotevents)","(aws-iotevents)","(iotevents)","(iot events)","(iot-events)"],"labels":["@aws-cdk/aws-iotevents"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-iotsitewise)","(aws-iotsitewise)","(iotsitewise)","(iot sitewise)","(iot-sitewise)","(iot-site-wise)","(iot site wise)"],"labels":["@aws-cdk/aws-iotsitewise"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-iotthingsgraph)","(aws-iotthingsgraph)","(iotthingsgraph)","(iot things graph)","(iot-things-graph)"],"labels":["@aws-cdk/aws-iotthingsgraph"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-ivs)","(aws-ivs)","(Interactive Video Service)","(ivs)"],"labels":["@aws-cdk/aws-ivs"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-kendra)","(aws-kendra)","(kendra)"],"labels":["@aws-cdk/aws-kendra"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-kinesis)","(aws-kinesis)","(kinesis)"],"labels":["@aws-cdk/aws-kinesis"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-kinesisanalytics)","(aws-kinesisanalytics)","(kinesisanalytics)","(kinesis analytics)","(kinesis-analytics)"],"labels":["@aws-cdk/aws-kinesisanalytics"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-kinesisfirehose)","(aws-kinesisfirehose)","(kinesisfirehose)","(kinesis firehose)","(kinesis-firehose)"],"labels":["@aws-cdk/aws-kinesisfirehose"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-kms)","(aws-kms)","(kms)"],"labels":["@aws-cdk/aws-kms"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-lakeformation)","(aws-lakeformation)","(lakeformation)","(lake formation)","(lake-formation)"],"labels":["@aws-cdk/aws-lakeformation"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-lambda)","(aws-lambda)","(lambda)"],"labels":["@aws-cdk/aws-lambda"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/aws-lambda-event-sources)","(aws-lambda-event-sources)","(lambda-event-sources)","(lambda event sources)"],"labels":["@aws-cdk/aws-lambda-event-sources"],"assignees":["nija-at"]}, - {"keywords":["(@aws-cdk/aws-lambda-nodejs)","(aws-lambda-nodejs)","(lambda-nodejs)","(lambda nodejs)"],"labels":["@aws-cdk/aws-lambda-nodejs"],"assignees":["eladb"]}, - {"keywords":["(@aws-cdk/aws-lambda-python)","(aws-lambda-python)","(lambda-python)","(lambda python)"],"labels":["@aws-cdk/aws-lambda-python"],"assignees":["eladb"]}, - {"keywords":["(@aws-cdk/aws-logs)","(aws-logs)","(logs)"],"labels":["@aws-cdk/aws-logs"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-logs-destinations)","(aws-logs-destinations)","(logs-destinations)","(logs destinations)"],"labels":["@aws-cdk/aws-logs-destinations"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-macie)","(aws-macie)","(macie)"],"labels":["@aws-cdk/aws-macie"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-managedblockchain)","(aws-managedblockchain)","(managedblockchain)","(managed blockchain)","(managed-blockchain)"],"labels":["@aws-cdk/aws-managedblockchain"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-mediaconvert)","(aws-mediaconvert)","(mediaconvert)","(media convert)","(media-convert)"],"labels":["@aws-cdk/aws-mediaconvert"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-medialive)","(aws-medialive)","(medialive)","(media live)","(media-live)"],"labels":["@aws-cdk/aws-medialive"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-mediastore)","(aws-mediastore)","(mediastore)","(media store)","(media-store)"],"labels":["@aws-cdk/aws-mediastore"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-mediapackage)","(aws-mediapackage)","(mediapackage)","(media package)","(media-package)"],"labels":["@aws-cdk/aws-mediapackage"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-msk)","(aws-msk)","(msk)"],"labels":["@aws-cdk/aws-msk"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-neptune)","(aws-neptune)","(neptune)"],"labels":["@aws-cdk/aws-neptune"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-networkmanager)","(aws-networkmanager)","(networkmanager)","(network manager)","(network-manager)"],"labels":["@aws-cdk/aws-networkmanager"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-opsworks)","(aws-opsworks)","(opsworks)","(ops works)","(ops-works)"],"labels":["@aws-cdk/aws-opsworks"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-opsworkscm)","(aws-opsworkscm)","(opsworkscm)","(opsworks cm)","(opsworks-cm)"],"labels":["@aws-cdk/aws-opsworkscm"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-personalize)","(aws-personalize)","(personalize)"],"labels":["@aws-cdk/aws-personalize"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-pinpoint)","(aws-pinpoint)","(pinpoint)"],"labels":["@aws-cdk/aws-pinpoint"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-pinpointemail)","(aws-pinpointemail)","(pinpointemail)","(pinpoint email)","(pinpoint-email)"],"labels":["@aws-cdk/aws-pinpointemail"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-qldb)","(aws-qldb)","(qldb)"],"labels":["@aws-cdk/aws-qldb"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-ram)","(aws-ram)","(ram)"],"labels":["@aws-cdk/aws-ram"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-rds)","(aws-rds)","(rds)"],"labels":["@aws-cdk/aws-rds"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-redshift)","(aws-redshift)","(redshift)","(red shift)","(red-shift)"],"labels":["@aws-cdk/aws-redshift"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-resourcegroups)","(aws-resourcegroups)","(resourcegroups)","(resource groups)","(resource-groups)"],"labels":["@aws-cdk/aws-resourcegroups"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-robomaker)","(aws-robomaker)","(robomaker)","(robo maker)","(robo-maker)"],"labels":["@aws-cdk/aws-robomaker"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-route53)","(aws-route53)","(route53)","(route 53)","(route-53)"],"labels":["@aws-cdk/aws-route53"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-route53-patterns)","(aws-route53-patterns)","(route53-patterns)","(route53 patterns)","(route-53-patterns)"],"labels":["@aws-cdk/aws-route53-patterns"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-route53-targets)","(aws-route53-targets)","(route53-targets)","(route53 targets)","(route-53-targets)"],"labels":["@aws-cdk/aws-route53-targets"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-route53resolver)","(aws-route53resolver)","(route53resolver)","(route53 resolver)","(route-53-resolver)"],"labels":["@aws-cdk/aws-route53resolver"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-s3)","(aws-s3)","(s3)"],"labels":["@aws-cdk/aws-s3"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-s3-assets)","(aws-s3-assets)","(s3-assets)","(s3 assets)"],"labels":["@aws-cdk/aws-s3-assets"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-s3-deployment)","(aws-s3-deployment)","(s3-deployment)","(s3 deployment)"],"labels":["@aws-cdk/aws-s3-deployment"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-s3-notifications)","(aws-s3-notifications)","(s3-notifications)","(s3 notifications)"],"labels":["@aws-cdk/aws-s3-notifications"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-sagemaker)","(aws-sagemaker)","(sagemaker)","(sage maker)","(sage-maker)"],"labels":["@aws-cdk/aws-sagemaker"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-sam)","(aws-sam)","(sam)"],"labels":["@aws-cdk/aws-sam"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-sdb)","(aws-sdb)","(sdb)"],"labels":["@aws-cdk/aws-sdb"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-secretsmanager)","(aws-secretsmanager)","(secretsmanager)","(secrets manager)","(secrets-manager)"],"labels":["@aws-cdk/aws-secretsmanager"],"assignees":["njlynch"]}, - {"keywords":["(@aws-cdk/aws-securityhub)","(aws-securityhub)","(securityhub)","(security hub)","(security-hub)"],"labels":["@aws-cdk/aws-securityhub"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-servicecatalog)","(aws-servicecatalog)","(servicecatalog)","(service catalog)","(service-catalog)"],"labels":["@aws-cdk/aws-servicecatalog"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-servicediscovery)","(aws-servicediscovery)","(servicediscovery)","(service discovery)","(service-discovery)"],"labels":["@aws-cdk/aws-servicediscovery"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-ses)","(aws-ses)","(ses)"],"labels":["@aws-cdk/aws-ses"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-ses-actions)","(aws-ses-actions)","(ses-actions)","(ses actions)"],"labels":["@aws-cdk/aws-ses-actions"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-sns)","(aws-sns)","(sns)"],"labels":["@aws-cdk/aws-sns"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-sns-subscriptions)","(aws-sns-subscriptions)","(sns-subscriptions)","(sns subscriptions)"],"labels":["@aws-cdk/aws-sns-subscriptions"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-sqs)","(aws-sqs)","(sqs)"],"labels":["@aws-cdk/aws-sqs"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-ssm)","(aws-ssm)","(ssm)"],"labels":["@aws-cdk/aws-ssm"],"assignees":["MrArnoldPalmer"]}, - {"keywords":["(@aws-cdk/aws-sso)","(aws-sso)","(sso)"],"labels":["@aws-cdk/aws-sso"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-stepfunctions)","(aws-stepfunctions)","(stepfunctions)","(step functions)","(step-functions)"],"labels":["@aws-cdk/aws-stepfunctions"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-stepfunctions-tasks)","(aws-stepfunctions-tasks)","(stepfunctions-tasks)","(stepfunctions tasks)"],"labels":["@aws-cdk/aws-stepfunctions-tasks"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-synthetics)","(aws-synthetics)","(synthetics)"],"labels":["@aws-cdk/aws-synthetics"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/aws-timestream)","(aws-timestream)","(timestream)"],"labels":["@aws-cdk/aws-timestream"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/aws-transfer)","(aws-transfer)","(transfer)"],"labels":["@aws-cdk/aws-transfer"],"assignees":["iliapolo"]}, - {"keywords":["(@aws-cdk/aws-waf)","(aws-waf)","(waf)"],"labels":["@aws-cdk/aws-waf"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-wafregional)","(aws-wafregional)","(wafregional)","(waf regional)","(waf-regional)"],"labels":["@aws-cdk/aws-wafregional"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-wafv2)","(aws-wafv2)","(wafv2)","(waf v2)","(waf-v2)"],"labels":["@aws-cdk/aws-wafv2"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/aws-workspaces)","(aws-workspaces)","(workspaces)"],"labels":["@aws-cdk/aws-workspaces"],"assignees":["NetaNir"]}, - {"keywords":["(@aws-cdk/cfnspec)","(cfnspec)","(cfn spec)","(cfn-spec)"],"labels":["@aws-cdk/cfnspec"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/cloud-assembly-schema)","(cloud-assembly-schema)","(cloud assembly schema)"],"labels":["@aws-cdk/cloud-assembly-schema"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/cloudformation-diff)","(cloudformation-diff)","(cloudformation diff)","(cfn diff)"],"labels":["@aws-cdk/cloudformation-diff"],"assignees":["shivlaks"]}, - {"keywords":["(@aws-cdk/cloudformation-include)","(cloudformation-include)","(cloudformation include)","(cfn include)","(cfn-include)"],"labels":["@aws-cdk/cloudformation-include"],"assignees":["skinny85"]}, - {"keywords":["(@aws-cdk/core)","(core)"],"labels":["@aws-cdk/core"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/custom-resources)","(custom-resources)","(custom resources)"],"labels":["@aws-cdk/custom-resources"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/cx-api)","(cx-api)","(cx api)"],"labels":["@aws-cdk/cx-api"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/pipelines)","(pipelines)","(cdk pipelines)","(cdk-pipelines)"],"labels":["@aws-cdk/pipelines"],"assignees":["rix0rrr"]}, - {"keywords":["(@aws-cdk/region-info)","(region-info)","(region info)"],"labels":["@aws-cdk/region-info"],"assignees":["RomainMuller"]} + {"keywords":["[cli]","[command line]"],"labels":["package/tools"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/alexa-ask]","[alexa-ask]","[alexa ask]"],"labels":["@aws-cdk/alexa-ask"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/app-delivery]","[app-delivery]","[app delivery]"],"labels":["@aws-cdk/app-delivery"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/assert]","[assert]"],"labels":["@aws-cdk/assert"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/assets]","[assets]"],"labels":["@aws-cdk/assets"],"assignees":["eladb"]}, + {"keywords":["[@aws-cdk/aws-accessanalyzer]","[aws-accessanalyzer]","[accessanalyzer]","[access analyzer]"],"labels":["@aws-cdk/aws-accessanalyzer"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-acmpca]","[aws-acmpca]","[acmpca]"],"labels":["@aws-cdk/aws-acmpca"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-amazonmq]","[aws-amazonmq]","[amazonmq]","[amazon mq]","[amazon-mq]"],"labels":["@aws-cdk/aws-amazonmq"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-amplify]","[aws-amplify]","[amplify]"],"labels":["@aws-cdk/aws-amplify"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-apigateway]","[aws-apigateway]","[apigateway]","[api gateway]","[api-gateway]"],"labels":["@aws-cdk/aws-apigateway"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/aws-apigatewayv2]","[aws-apigatewayv2]","[apigatewayv2]","[apigateway v2]","[api-gateway-v2]"],"labels":["@aws-cdk/aws-apigatewayv2"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/aws-apigatewayv2-integrations]","[aws-apigatewayv2-integrations]","[apigatewayv2-integrations]","[apigateway v2 integrations]","[api-gateway-v2-integrations]"],"labels":["@aws-cdk/aws-apigatewayv2-integrations"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/aws-appconfig]","[aws-appconfig]","[appconfig]","[app config]","[app-config]"],"labels":["@aws-cdk/aws-appconfig"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-appflow]","[aws-appflow]","[appflow]","[app flow]","[app-flow]"],"labels":["@aws-cdk/aws-appflow"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-applicationautoscaling]","[aws-applicationautoscaling]","[applicationautoscaling]","[application autoscaling]","[application-autoscaling]"],"labels":["@aws-cdk/aws-applicationautoscaling"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-applicationinsights]","[aws-applicationinsights]","[applicationinsights]","[application insights]","[application-insights]"],"labels":["@aws-cdk/aws-applicationinsights"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-appmesh]","[aws-appmesh]","[appmesh]","[app mesh]","[app-mesh]"],"labels":["@aws-cdk/aws-appmesh"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-appstream]","[aws-appstream]","[appstream]","[app stream]","[app-stream]"],"labels":["@aws-cdk/aws-appstream"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-appsync]","[aws-appsync]","[appsync]","[app sync]","[app-sync]"],"labels":["@aws-cdk/aws-appsync"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-athena]","[aws-athena]","[athena]"],"labels":["@aws-cdk/aws-athena"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-autoscaling]","[aws-autoscaling]","[autoscaling]","[auto scaling]","[auto-scaling]"],"labels":["@aws-cdk/aws-autoscaling"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-autoscaling-api]","[aws-autoscaling-api]","[autoscaling-api]","[autoscaling api]","[autoscaling-api]"],"labels":["@aws-cdk/aws-autoscaling-api"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-autoscaling-common]","[aws-autoscaling-common]","[autoscaling-common]","[autoscaling common]","[autoscaling-common]"],"labels":["@aws-cdk/aws-autoscaling-common"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-autoscaling-hooktargets]","[aws-autoscaling-hooktargets]","[autoscaling-hooktargets]","[autoscaling hooktargets]"],"labels":["@aws-cdk/aws-autoscaling-hooktargets"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-autoscalingplans]","[aws-autoscalingplans]","[autoscalingplans]","[autoscaling plans]", "[autoscaling-plans]"],"labels":["@aws-cdk/aws-autoscalingplans"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-backup]","[aws-backup]","[backup]"],"labels":["@aws-cdk/aws-backup"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-batch]","[aws-batch]","[batch]"],"labels":["@aws-cdk/aws-batch"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-budgets]","[aws-budgets]","[budgets]"],"labels":["@aws-cdk/aws-budgets"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-cassandra]","[aws-cassandra]","[cassandra]"],"labels":["@aws-cdk/aws-cassandra"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-ce]","[aws-ce]","[ce]"],"labels":["@aws-cdk/aws-ce"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-certificatemanager]","[aws-certificatemanager]","[certificatemanager]","[certificate manager]","[certificate-manager]","[acm]"],"labels":["@aws-cdk/aws-certificatemanager"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-chatbot]","[aws-chatbot]","[chatbot]"],"labels":["@aws-cdk/aws-chatbot"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-cloud9]","[aws-cloud9]","[cloud9]","[cloud 9]"],"labels":["@aws-cdk/aws-cloud9"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-cloudformation]","[aws-cloudformation]","[cloudformation]","[cloud formation]"],"labels":["@aws-cdk/aws-cloudformation"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-cloudfront]","[aws-cloudfront]","[cloudfront]","[cloud front]"],"labels":["@aws-cdk/aws-cloudfront"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-cloudfront-origins]","[aws-cloudfront-origins]","[cloudfront-origins]","[cloudfront origins]"],"labels":["@aws-cdk/aws-cloudfront-origins"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-cloudtrail]","[aws-cloudtrail]","[cloudtrail]","[cloud trail]"],"labels":["@aws-cdk/aws-cloudtrail"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-cloudwatch]","[aws-cloudwatch]","[cloudwatch]","[cloud watch]"],"labels":["@aws-cdk/aws-cloudwatch"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-cloudwatch-actions]","[aws-cloudwatch-actions]","[cloudwatch-actions]","[cloudwatch actions]"],"labels":["@aws-cdk/aws-cloudwatch-actions"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-codeartifact]","[aws-codeartifact]","[codeartifact]","[code artifact]","[code-artifact]"],"labels":["@aws-cdk/aws-codeartifact"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-codebuild]","[aws-codebuild]","[codebuild]","[code build]","[code-build]"],"labels":["@aws-cdk/aws-codebuild"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codecommit]","[aws-codecommit]","[codecommit]","[code commit]", "[code-commit]"],"labels":["@aws-cdk/aws-codecommit"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codedeploy]","[aws-codedeploy]","[codedeploy]","[code deploy]","[code-deploy]"],"labels":["@aws-cdk/aws-codedeploy"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codeguruprofiler]","[aws-codeguruprofiler]","[codeguruprofiler]","[codeguru profiler]","[codeguru-profiler]"],"labels":["@aws-cdk/aws-codeguruprofiler"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codegurureviewer]","[aws-codegurureviewer]","[codegurureviewer]","[codeguru reviewer]","[codeguru-reviewer]"],"labels":["@aws-cdk/aws-codegurureviewer"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-codepipeline]","[aws-codepipeline]","[codepipeline]","[code pipeline]","[code-pipeline]"],"labels":["@aws-cdk/aws-codepipeline"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codepipeline-actions]","[aws-codepipeline-actions]","[codepipeline-actions]","[codepipeline actions]"],"labels":["@aws-cdk/aws-codepipeline-actions"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codestar]","[aws-codestar]","[codestar]"],"labels":["@aws-cdk/aws-codestar"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codestarconnections]","[aws-codestarconnections]","[codestarconnections]","[codestar connections]","[codestar-connections]"],"labels":["@aws-cdk/aws-codestarconnections"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-codestarnotifications]","[aws-codestarnotifications]","[codestarnotifications]","[codestar notifications]","[codestar-notifications]"],"labels":["@aws-cdk/aws-codestarnotifications"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-cognito]","[aws-cognito]","[cognito]"],"labels":["@aws-cdk/aws-cognito"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/aws-config]","[aws-config]","[config]"],"labels":["@aws-cdk/aws-config"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-datapipeline]","[aws-datapipeline]","[datapipeline]","[data pipeline]","[data-pipeline]"],"labels":["@aws-cdk/aws-datapipeline"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-dax]","[aws-dax]","[dax]"],"labels":["@aws-cdk/aws-dax"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-detective]","[aws-detective]","[detective]"],"labels":["@aws-cdk/aws-detective"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-directoryservice]","[aws-directoryservice]","[directoryservice]","[directory service]","[directory-service]"],"labels":["@aws-cdk/aws-directoryservice"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-dlm]","[aws-dlm]","[dlm]"],"labels":["@aws-cdk/aws-dlm"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-dms]","[aws-dms]","[dms]"],"labels":["@aws-cdk/aws-dms"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-docdb]","[aws-docdb]","[docdb]","[doc db]","[doc-db]"],"labels":["@aws-cdk/aws-docdb"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-dynamodb]","[aws-dynamodb]","[dynamodb]","[dynamo db]","[dynamo-db]"],"labels":["@aws-cdk/aws-dynamodb"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-dynamodb-global]","[aws-dynamodb-global]","[dynamodb-global]","[dynamodb global]"],"labels":["@aws-cdk/aws-dynamodb-global"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-ec2]","[aws-ec2]","[ec2]","[vpc]"],"labels":["@aws-cdk/aws-ec2"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-ecr]","[aws-ecr]","[ecr]"],"labels":["@aws-cdk/aws-ecr"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-ecr-assets]","[aws-ecr-assets]","[ecr-assets]","[ecr assets]","[ecrassets]"],"labels":["@aws-cdk/aws-ecr-assets"],"assignees":["eladb"]}, + {"keywords":["[@aws-cdk/aws-efs]","[aws-efs]","[efs]"],"labels":["@aws-cdk/aws-efs"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-eks]","[aws-eks]","[eks]"],"labels":["@aws-cdk/aws-eks"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-elasticache]","[aws-elasticache]","[elasticache]","[elastic cache]","[elastic-cache]"],"labels":["@aws-cdk/aws-elasticache"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-elasticbeanstalk]","[aws-elasticbeanstalk]","[elasticbeanstalk]","[elastic beanstalk]","[elastic-beanstalk]"],"labels":["@aws-cdk/aws-elasticbeanstalk"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-elasticloadbalancing]","[aws-elasticloadbalancing]","[elasticloadbalancing]","[elastic loadbalancing]","[elastic-loadbalancing]","[elb]"],"labels":["@aws-cdk/aws-elasticloadbalancing"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-elasticloadbalancingv2]","[aws-elasticloadbalancingv2]","[elasticloadbalancingv2]","[elastic-loadbalancing-v2]","[elbv2]","[elb v2]"],"labels":["@aws-cdk/aws-elasticloadbalancingv2"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-elasticloadbalancingv2-targets]","[aws-elasticloadbalancingv2-targets]","[elasticloadbalancingv2-targets]","[elasticloadbalancingv2 targets]","[elbv2 targets]"],"labels":["@aws-cdk/aws-elasticloadbalancingv2-targets"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-elasticsearch]","[aws-elasticsearch]","[elasticsearch]","[elastic search]","[elastic-search]"],"labels":["@aws-cdk/aws-elasticsearch"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-emr]","[aws-emr]","[emr]"],"labels":["@aws-cdk/aws-emr"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-events]","[aws-events]","[events]","[eventbridge]","event-bridge]"],"labels":["@aws-cdk/aws-events"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-events-targets]","[aws-events-targets]","[events-targets]","[events targets]"],"labels":["@aws-cdk/aws-events-targets"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-eventschemas]","[aws-eventschemas]","[eventschemas]","[event schemas]"],"labels":["@aws-cdk/aws-eventschemas"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-fms]","[aws-fms]","[fms]"],"labels":["@aws-cdk/aws-fms"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-fsx]","[aws-fsx]","[fsx]"],"labels":["@aws-cdk/aws-fsx"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-gamelift]","[aws-gamelift]","[gamelift]","[game lift]"],"labels":["@aws-cdk/aws-gamelift"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-globalaccelerator]","[aws-globalaccelerator]","[globalaccelerator]","[global accelerator]","[global-accelerator]"],"labels":["@aws-cdk/aws-globalaccelerator"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-glue]","[aws-glue]","[glue]"],"labels":["@aws-cdk/aws-glue"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-greengrass]","[aws-greengrass]","[greengrass]","[green grass]","[green-grass]"],"labels":["@aws-cdk/aws-greengrass"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-guardduty]","[aws-guardduty]","[guardduty]","[guard duty]","[guard-duty]"],"labels":["@aws-cdk/aws-guardduty"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-iam]","[aws-iam]","[iam]"],"labels":["@aws-cdk/aws-iam"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/aws-imagebuilder]","[aws-imagebuilder]","[imagebuilder]","[image builder]","[image-builder]"],"labels":["@aws-cdk/aws-imagebuilder"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-inspector]","[aws-inspector]","[inspector]"],"labels":["@aws-cdk/aws-inspector"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-iot]","[aws-iot]","[iot]"],"labels":["@aws-cdk/aws-iot"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-iot1click]","[aws-iot1click]","[iot1click]","[iot 1click]"],"labels":["@aws-cdk/aws-iot1click"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-iotanalytics]","[aws-iotanalytics]","[iotanalytics]","[iot analytics]","[iot-analytics]"],"labels":["@aws-cdk/aws-iotanalytics"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-iotevents]","[aws-iotevents]","[iotevents]","[iot events]","[iot-events]"],"labels":["@aws-cdk/aws-iotevents"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-iotsitewise]","[aws-iotsitewise]","[iotsitewise]","[iot sitewise]","[iot-sitewise]","[iot-site-wise]","[iot site wise]"],"labels":["@aws-cdk/aws-iotsitewise"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-iotthingsgraph]","[aws-iotthingsgraph]","[iotthingsgraph]","[iot things graph]","[iot-things-graph]"],"labels":["@aws-cdk/aws-iotthingsgraph"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-ivs]","[aws-ivs]","[Interactive Video Service]","[ivs]"],"labels":["@aws-cdk/aws-ivs"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-kendra]","[aws-kendra]","[kendra]"],"labels":["@aws-cdk/aws-kendra"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-kinesis]","[aws-kinesis]","[kinesis]"],"labels":["@aws-cdk/aws-kinesis"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-kinesisanalytics]","[aws-kinesisanalytics]","[kinesisanalytics]","[kinesis analytics]","[kinesis-analytics]"],"labels":["@aws-cdk/aws-kinesisanalytics"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-kinesisfirehose]","[aws-kinesisfirehose]","[kinesisfirehose]","[kinesis firehose]","[kinesis-firehose]"],"labels":["@aws-cdk/aws-kinesisfirehose"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-kms]","[aws-kms]","[kms]"],"labels":["@aws-cdk/aws-kms"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-lakeformation]","[aws-lakeformation]","[lakeformation]","[lake formation]","[lake-formation]"],"labels":["@aws-cdk/aws-lakeformation"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-lambda]","[aws-lambda]","[lambda]"],"labels":["@aws-cdk/aws-lambda"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/aws-lambda-event-sources]","[aws-lambda-event-sources]","[lambda-event-sources]","[lambda event sources]"],"labels":["@aws-cdk/aws-lambda-event-sources"],"assignees":["nija-at"]}, + {"keywords":["[@aws-cdk/aws-lambda-nodejs]","[aws-lambda-nodejs]","[lambda-nodejs]","[lambda nodejs]"],"labels":["@aws-cdk/aws-lambda-nodejs"],"assignees":["eladb"]}, + {"keywords":["[@aws-cdk/aws-lambda-python]","[aws-lambda-python]","[lambda-python]","[lambda python]"],"labels":["@aws-cdk/aws-lambda-python"],"assignees":["eladb"]}, + {"keywords":["[@aws-cdk/aws-logs]","[aws-logs]","[logs]"],"labels":["@aws-cdk/aws-logs"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-logs-destinations]","[aws-logs-destinations]","[logs-destinations]","[logs destinations]"],"labels":["@aws-cdk/aws-logs-destinations"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-macie]","[aws-macie]","[macie]"],"labels":["@aws-cdk/aws-macie"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-managedblockchain]","[aws-managedblockchain]","[managedblockchain]","[managed blockchain]","[managed-blockchain]"],"labels":["@aws-cdk/aws-managedblockchain"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-mediaconvert]","[aws-mediaconvert]","[mediaconvert]","[media convert]","[media-convert]"],"labels":["@aws-cdk/aws-mediaconvert"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-medialive]","[aws-medialive]","[medialive]","[media live]","[media-live]"],"labels":["@aws-cdk/aws-medialive"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-mediastore]","[aws-mediastore]","[mediastore]","[media store]","[media-store]"],"labels":["@aws-cdk/aws-mediastore"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-mediapackage]","[aws-mediapackage]","[mediapackage]","[media package]","[media-package]"],"labels":["@aws-cdk/aws-mediapackage"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-msk]","[aws-msk]","[msk]"],"labels":["@aws-cdk/aws-msk"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-neptune]","[aws-neptune]","[neptune]"],"labels":["@aws-cdk/aws-neptune"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-networkmanager]","[aws-networkmanager]","[networkmanager]","[network manager]","[network-manager]"],"labels":["@aws-cdk/aws-networkmanager"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-opsworks]","[aws-opsworks]","[opsworks]","[ops works]","[ops-works]"],"labels":["@aws-cdk/aws-opsworks"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-opsworkscm]","[aws-opsworkscm]","[opsworkscm]","[opsworks cm]","[opsworks-cm]"],"labels":["@aws-cdk/aws-opsworkscm"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-personalize]","[aws-personalize]","[personalize]"],"labels":["@aws-cdk/aws-personalize"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-pinpoint]","[aws-pinpoint]","[pinpoint]"],"labels":["@aws-cdk/aws-pinpoint"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-pinpointemail]","[aws-pinpointemail]","[pinpointemail]","[pinpoint email]","[pinpoint-email]"],"labels":["@aws-cdk/aws-pinpointemail"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-qldb]","[aws-qldb]","[qldb]"],"labels":["@aws-cdk/aws-qldb"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-ram]","[aws-ram]","[ram]"],"labels":["@aws-cdk/aws-ram"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-rds]","[aws-rds]","[rds]"],"labels":["@aws-cdk/aws-rds"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-redshift]","[aws-redshift]","[redshift]","[red shift]","[red-shift]"],"labels":["@aws-cdk/aws-redshift"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-resourcegroups]","[aws-resourcegroups]","[resourcegroups]","[resource groups]","[resource-groups]"],"labels":["@aws-cdk/aws-resourcegroups"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-robomaker]","[aws-robomaker]","[robomaker]","[robo maker]","[robo-maker]"],"labels":["@aws-cdk/aws-robomaker"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-route53]","[aws-route53]","[route53]","[route 53]","[route-53]"],"labels":["@aws-cdk/aws-route53"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-route53-patterns]","[aws-route53-patterns]","[route53-patterns]","[route53 patterns]","[route-53-patterns]"],"labels":["@aws-cdk/aws-route53-patterns"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-route53-targets]","[aws-route53-targets]","[route53-targets]","[route53 targets]","[route-53-targets]"],"labels":["@aws-cdk/aws-route53-targets"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-route53resolver]","[aws-route53resolver]","[route53resolver]","[route53 resolver]","[route-53-resolver]"],"labels":["@aws-cdk/aws-route53resolver"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-s3]","[aws-s3]","[s3]"],"labels":["@aws-cdk/aws-s3"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-s3-assets]","[aws-s3-assets]","[s3-assets]","[s3 assets]"],"labels":["@aws-cdk/aws-s3-assets"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-s3-deployment]","[aws-s3-deployment]","[s3-deployment]","[s3 deployment]"],"labels":["@aws-cdk/aws-s3-deployment"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-s3-notifications]","[aws-s3-notifications]","[s3-notifications]","[s3 notifications]"],"labels":["@aws-cdk/aws-s3-notifications"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-sagemaker]","[aws-sagemaker]","[sagemaker]","[sage maker]","[sage-maker]"],"labels":["@aws-cdk/aws-sagemaker"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-sam]","[aws-sam]","[sam]"],"labels":["@aws-cdk/aws-sam"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-sdb]","[aws-sdb]","[sdb]"],"labels":["@aws-cdk/aws-sdb"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-secretsmanager]","[aws-secretsmanager]","[secretsmanager]","[secrets manager]","[secrets-manager]"],"labels":["@aws-cdk/aws-secretsmanager"],"assignees":["njlynch"]}, + {"keywords":["[@aws-cdk/aws-securityhub]","[aws-securityhub]","[securityhub]","[security hub]","[security-hub]"],"labels":["@aws-cdk/aws-securityhub"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-servicecatalog]","[aws-servicecatalog]","[servicecatalog]","[service catalog]","[service-catalog]"],"labels":["@aws-cdk/aws-servicecatalog"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-servicediscovery]","[aws-servicediscovery]","[servicediscovery]","[service discovery]","[service-discovery]"],"labels":["@aws-cdk/aws-servicediscovery"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-ses]","[aws-ses]","[ses]"],"labels":["@aws-cdk/aws-ses"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-ses-actions]","[aws-ses-actions]","[ses-actions]","[ses actions]"],"labels":["@aws-cdk/aws-ses-actions"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-sns]","[aws-sns]","[sns]"],"labels":["@aws-cdk/aws-sns"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-sns-subscriptions]","[aws-sns-subscriptions]","[sns-subscriptions]","[sns subscriptions]"],"labels":["@aws-cdk/aws-sns-subscriptions"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-sqs]","[aws-sqs]","[sqs]"],"labels":["@aws-cdk/aws-sqs"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-ssm]","[aws-ssm]","[ssm]"],"labels":["@aws-cdk/aws-ssm"],"assignees":["MrArnoldPalmer"]}, + {"keywords":["[@aws-cdk/aws-sso]","[aws-sso]","[sso]"],"labels":["@aws-cdk/aws-sso"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-stepfunctions]","[aws-stepfunctions]","[stepfunctions]","[step functions]","[step-functions]"],"labels":["@aws-cdk/aws-stepfunctions"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-stepfunctions-tasks]","[aws-stepfunctions-tasks]","[stepfunctions-tasks]","[stepfunctions tasks]"],"labels":["@aws-cdk/aws-stepfunctions-tasks"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-synthetics]","[aws-synthetics]","[synthetics]"],"labels":["@aws-cdk/aws-synthetics"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/aws-timestream]","[aws-timestream]","[timestream]"],"labels":["@aws-cdk/aws-timestream"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/aws-transfer]","[aws-transfer]","[transfer]"],"labels":["@aws-cdk/aws-transfer"],"assignees":["iliapolo"]}, + {"keywords":["[@aws-cdk/aws-waf]","[aws-waf]","[waf]"],"labels":["@aws-cdk/aws-waf"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-wafregional]","[aws-wafregional]","[wafregional]","[waf regional]","[waf-regional]"],"labels":["@aws-cdk/aws-wafregional"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-wafv2]","[aws-wafv2]","[wafv2]","[waf v2]","[waf-v2]"],"labels":["@aws-cdk/aws-wafv2"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/aws-workspaces]","[aws-workspaces]","[workspaces]"],"labels":["@aws-cdk/aws-workspaces"],"assignees":["NetaNir"]}, + {"keywords":["[@aws-cdk/cfnspec]","[cfnspec]","[cfn spec]","[cfn-spec]"],"labels":["@aws-cdk/cfnspec"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/cloud-assembly-schema]","[cloud-assembly-schema]","[cloud assembly schema]"],"labels":["@aws-cdk/cloud-assembly-schema"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/cloudformation-diff]","[cloudformation-diff]","[cloudformation diff]","[cfn diff]"],"labels":["@aws-cdk/cloudformation-diff"],"assignees":["shivlaks"]}, + {"keywords":["[@aws-cdk/cloudformation-include]","[cloudformation-include]","[cloudformation include]","[cfn include]","[cfn-include]"],"labels":["@aws-cdk/cloudformation-include"],"assignees":["skinny85"]}, + {"keywords":["[@aws-cdk/core]","[core]"],"labels":["@aws-cdk/core"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/custom-resources]","[custom-resources]","[custom resources]"],"labels":["@aws-cdk/custom-resources"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/cx-api]","[cx-api]","[cx api]"],"labels":["@aws-cdk/cx-api"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/pipelines]","[pipelines]","[cdk pipelines]","[cdk-pipelines]"],"labels":["@aws-cdk/pipelines"],"assignees":["rix0rrr"]}, + {"keywords":["[@aws-cdk/region-info]","[region-info]","[region info]"],"labels":["@aws-cdk/region-info"],"assignees":["RomainMuller"]} ] + diff --git a/CHANGELOG.md b/CHANGELOG.md index 485b074cc5d91..c1423ba20377a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,69 +2,6 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -## [1.75.0](https://github.com/aws/aws-cdk/compare/v1.74.0...v1.75.0) (2020-11-24) - - -### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES - -* **appmesh:** renames gateway listener static methods to use shorter names -* **appmesh:** renames gateway route static methods to use shorter names -* **appmesh:** changes Route's spec to a union-like class. RouteSpec is now defined using protocol variant static methods -* **lambda-nodejs:** local bundling now requires `esbuild` to be installed. -* **lambda-nodejs**: `projectRoot` has been replaced by `depsLockFilePath`. It should point to your dependency lock file (`package-lock.json` or `yarn.lock`) -* **lambda-nodejs**: `parcelEnvironment` has been renamed to `bundlingEnvironment` -* **lambda-nodejs**: `sourceMaps` has been renamed to `sourceMap` -* **appmesh:** `IVirtualNode` no longer has the `addBackends()` method. A backend can be added to `VirtualNode` using the `addBackend()` method which accepts a single `IVirtualService` -* **appmesh**: `IVirtualNode` no longer has the `addListeners()` method. A listener can be added to `VirtualNode` using the `addListener()` method which accepts a single `VirtualNodeListener` -* **appmesh**: `VirtualNode` no longer has a default listener. It is valid to have a `VirtualNode` without any listeners -* **appmesh**: the construction property `listener` of `VirtualNode` has been renamed to `listeners`, and its type changed to an array of listeners -* **appmesh**: the struct `VirtualNodeListener` has been removed. To create Virtual Node listeners, use the static factory methods of the `VirtualNodeListener` class - -### Features - -* **applicationautoscaling:** Add KAFKA to ServiceNamespace ([#11394](https://github.com/aws/aws-cdk/issues/11394)) ([b5c3f84](https://github.com/aws/aws-cdk/commit/b5c3f84c8be855107d3ea6738bbf8511f2ecdb8e)) -* **appmesh:** add listener timeout to Virtual Nodes ([#10793](https://github.com/aws/aws-cdk/issues/10793)) ([62baa7b](https://github.com/aws/aws-cdk/commit/62baa7b51b49c1a669c7144e5883375fe9ab5d35)) -* **appmesh:** change Route's spec to a union-like class ([#11343](https://github.com/aws/aws-cdk/issues/11343)) ([f0de91f](https://github.com/aws/aws-cdk/commit/f0de91fcf5e956e00f930d0aadcc5516a9125922)) -* **appmesh:** updates gateway resources to use shorter static method names ([#11560](https://github.com/aws/aws-cdk/issues/11560)) ([df4d1d3](https://github.com/aws/aws-cdk/commit/df4d1d3c44b7559e36cbc0adcd51d0b2250fc4e7)) -* **cfnspec:** cloudformation spec v20.0.0 ([#11319](https://github.com/aws/aws-cdk/issues/11319)) ([8c17a35](https://github.com/aws/aws-cdk/commit/8c17a35746271d38289f6e200aea35b201b8a93d)) -* **cfnspec:** cloudformation spec v20.2.0 ([#11429](https://github.com/aws/aws-cdk/issues/11429)) ([025992b](https://github.com/aws/aws-cdk/commit/025992b0014aca493a669be518f4f423d3f39a57)) -* **cfnspec:** cloudformation spec v20.3.0 ([#11539](https://github.com/aws/aws-cdk/issues/11539)) ([3246b67](https://github.com/aws/aws-cdk/commit/3246b670730c4369469f6a43683a27f24c732825)) -* **cli:** add `--no-lookups` flag to disable context lookups ([#11489](https://github.com/aws/aws-cdk/issues/11489)) ([0445a6e](https://github.com/aws/aws-cdk/commit/0445a6ec0105510f73292d311fd32b610bf23d2e)), closes [#11461](https://github.com/aws/aws-cdk/issues/11461) -* **codebuild:** allow setting the Project's logging configuration ([#11444](https://github.com/aws/aws-cdk/issues/11444)) ([6a4b22d](https://github.com/aws/aws-cdk/commit/6a4b22d6db5884dca3cb5c1c8d5312f6edc55dee)), closes [#3856](https://github.com/aws/aws-cdk/issues/3856) -* **codeguruprofiler:** CodeGuruProfiler Construct Library is now in Developer Preview ([#11558](https://github.com/aws/aws-cdk/issues/11558)) ([1da6715](https://github.com/aws/aws-cdk/commit/1da671528472b3bee655bea89bae7273fc21a3bd)) -* **codepipeline-actions:** Add deployment timeout to EcsDeployAction ([#11407](https://github.com/aws/aws-cdk/issues/11407)) ([7d9d575](https://github.com/aws/aws-cdk/commit/7d9d5757db2acedb507da8bb84c65cc06d018b91)) -* **core:** add easy importValue to CfnOutput ([#11368](https://github.com/aws/aws-cdk/issues/11368)) ([c71a4e9](https://github.com/aws/aws-cdk/commit/c71a4e9644fdd64fa00a6d804c921b32bd1816d1)), closes [#11360](https://github.com/aws/aws-cdk/issues/11360) -* **ecs:** allow HTTPS connections from LB to task ([#11381](https://github.com/aws/aws-cdk/issues/11381)) ([0f6e2da](https://github.com/aws/aws-cdk/commit/0f6e2daa248aed9300f5b6c3019cdcb168ee4951)) -* **ecs:** environment files for containers in EC2 task definitions ([8cb74ea](https://github.com/aws/aws-cdk/commit/8cb74eacb3c1a8658d8ec231e339c827c5b1d6e4)) -* **ecs:** secret JSON field for Fargate tasks ([#11348](https://github.com/aws/aws-cdk/issues/11348)) ([03e7cd5](https://github.com/aws/aws-cdk/commit/03e7cd5ebaf07be22f8fff8edacbc384989ebf7c)), closes [/github.com/aws/containers-roadmap/issues/385#issuecomment-722696672](https://github.com/aws//github.com/aws/containers-roadmap/issues/385/issues/issuecomment-722696672) [#11341](https://github.com/aws/aws-cdk/issues/11341) -* **efs:** import access point - `fromAccessPointAttributes()` ([#10712](https://github.com/aws/aws-cdk/issues/10712)) ([ec72c85](https://github.com/aws/aws-cdk/commit/ec72c859c31a069406994433fe430f56ff0e5ff3)) -* **events-targets:** add CloudWatch LogGroup Target ([#10598](https://github.com/aws/aws-cdk/issues/10598)) ([98e9b59](https://github.com/aws/aws-cdk/commit/98e9b5956b3bff6db1cee615cd0e14dcb50d4726)), closes [#9953](https://github.com/aws/aws-cdk/issues/9953) -* **iam:** specify initial PolicyDocument for inline Policy ([#11430](https://github.com/aws/aws-cdk/issues/11430)) ([a8c4f17](https://github.com/aws/aws-cdk/commit/a8c4f178e08cef4f306f54976076c21de2252a55)), closes [#11236](https://github.com/aws/aws-cdk/issues/11236) -* **lambda-nodejs:** esbuild bundling ([#11289](https://github.com/aws/aws-cdk/issues/11289)) ([7a82850](https://github.com/aws/aws-cdk/commit/7a82850d8bec45f18791e269e988c5261d5238d4)), closes [#10286](https://github.com/aws/aws-cdk/issues/10286) [#9130](https://github.com/aws/aws-cdk/issues/9130) [#9312](https://github.com/aws/aws-cdk/issues/9312) [#11222](https://github.com/aws/aws-cdk/issues/11222) -* **logs:** Add KMS key support to LogGroup ([#11363](https://github.com/aws/aws-cdk/issues/11363)) ([21ccfce](https://github.com/aws/aws-cdk/commit/21ccfce514e10cfcdde36148b45f085d3494c540)), closes [#11211](https://github.com/aws/aws-cdk/issues/11211) -* **stepfunctions-tasks:** support overriding all properties of CodeBuild StartBuild integration ([#10356](https://github.com/aws/aws-cdk/issues/10356)) ([58efbad](https://github.com/aws/aws-cdk/commit/58efbad743464439ce8eb97a6c6c3e07b531d93c)), closes [#10302](https://github.com/aws/aws-cdk/issues/10302) - - -### Bug Fixes - -* **autoscaling:** `targetRequestsPerSecond` is actually requests per minute ([#11457](https://github.com/aws/aws-cdk/issues/11457)) ([39e277f](https://github.com/aws/aws-cdk/commit/39e277f65666e96fe1ad662254327967f666dbad)), closes [#11446](https://github.com/aws/aws-cdk/issues/11446) -* **aws-custom-resource:** module fails loading when bundled with parcel ([#11487](https://github.com/aws/aws-cdk/issues/11487)) ([421d4e4](https://github.com/aws/aws-cdk/commit/421d4e4e0c73875db2193847ea0b09349c3635de)) -* **cli:** credential provider plugins cannot be used with modern synthesis ([#11350](https://github.com/aws/aws-cdk/issues/11350)) ([9e91306](https://github.com/aws/aws-cdk/commit/9e91306f53faec31cf7e79f543c216a146406efc)) -* **cloudfront:** origin ID exceeds undocumented 128 character limit ([#11523](https://github.com/aws/aws-cdk/issues/11523)) ([90f0b9d](https://github.com/aws/aws-cdk/commit/90f0b9d466772c4b049b6318c449a490ca7431d8)), closes [#11504](https://github.com/aws/aws-cdk/issues/11504) -* **core:** DefaultStackSynthesizer supports object prefix for s3 assets ([#11327](https://github.com/aws/aws-cdk/issues/11327)) ([1b5f218](https://github.com/aws/aws-cdk/commit/1b5f21861d6b43ac36a8caf590b267bb1a12c0c8)) -* **core:** missing context in Stages is not filled by CLI ([#11461](https://github.com/aws/aws-cdk/issues/11461)) ([a4a555a](https://github.com/aws/aws-cdk/commit/a4a555a9f5e8844a377d8de5041219346d0eb65c)), closes [#9226](https://github.com/aws/aws-cdk/issues/9226) -* **core:** reusing StackSynthesizer leads to unsynthesized Stacks ([#11635](https://github.com/aws/aws-cdk/issues/11635)) ([f03c889](https://github.com/aws/aws-cdk/commit/f03c88974dc89eca8fca798f0640188508bd3623)), closes [#11528](https://github.com/aws/aws-cdk/issues/11528) -* **efs:** cannot use encryption key imported from another account ([#11524](https://github.com/aws/aws-cdk/issues/11524)) ([3578d84](https://github.com/aws/aws-cdk/commit/3578d8434f842a5b5a7290b1d0108818cdaae0f6)), closes [#7641](https://github.com/aws/aws-cdk/issues/7641) -* **eks:** cluster creation fails when configured with an imported public subnet and private endpoint ([#11620](https://github.com/aws/aws-cdk/issues/11620)) ([2c045ce](https://github.com/aws/aws-cdk/commit/2c045ce410e220311f10049da0d9789073eddb37)) -* **iam:** attach policy to imported User ([#11493](https://github.com/aws/aws-cdk/issues/11493)) ([0a8971c](https://github.com/aws/aws-cdk/commit/0a8971c7112735eb70f04633411f3557d2412ff0)), closes [#10913](https://github.com/aws/aws-cdk/issues/10913) [#11046](https://github.com/aws/aws-cdk/issues/11046) [#10527](https://github.com/aws/aws-cdk/issues/10527) -* **init:** TypeScript code is not being recompiled automatically ([#11470](https://github.com/aws/aws-cdk/issues/11470)) ([9843e71](https://github.com/aws/aws-cdk/commit/9843e71219bfe8b5ca675ac322e3dc5b3ab6381c)) -* **lambda:** failed to add permission to an imported lambda from another account ([#11369](https://github.com/aws/aws-cdk/issues/11369)) ([715a030](https://github.com/aws/aws-cdk/commit/715a0300ea44c7cfcb6ae9973bd4ca16585c8fa5)), closes [#11278](https://github.com/aws/aws-cdk/issues/11278) [#11141](https://github.com/aws/aws-cdk/issues/11141) [#11141](https://github.com/aws/aws-cdk/issues/11141) -* **pipelines:** synthesizes incorrect paths on Windows ([#11464](https://github.com/aws/aws-cdk/issues/11464)) ([2ca31a8](https://github.com/aws/aws-cdk/commit/2ca31a87a8cbf0c5267b3d3b39c8dc75b142488e)), closes [#11359](https://github.com/aws/aws-cdk/issues/11359) [#11405](https://github.com/aws/aws-cdk/issues/11405) [#11424](https://github.com/aws/aws-cdk/issues/11424) -* **pipelines:** wrong runOrder for manual approval when using `extraRunOrderSpace` ([#11511](https://github.com/aws/aws-cdk/issues/11511)) ([9b72fc8](https://github.com/aws/aws-cdk/commit/9b72fc8fe0b6238ff4d43a2e5f544bb655bb8908)) -* **stepfunctions:** metric* helpers not available on imported state machines ([#11509](https://github.com/aws/aws-cdk/issues/11509)) ([83c0543](https://github.com/aws/aws-cdk/commit/83c05431e4c254db173cd36dd564c360808ccbde)) -* **stepfunctions-tasks:** encryption is required for AthenaStartQueryExecution ([#11355](https://github.com/aws/aws-cdk/issues/11355)) ([f26a592](https://github.com/aws/aws-cdk/commit/f26a592e609674d528990aad14fb8884112ad64d)) -* **stepfunctions-tasks:** incorrect policy for Athena prevents database deletions ([#11427](https://github.com/aws/aws-cdk/issues/11427)) ([58e6576](https://github.com/aws/aws-cdk/commit/58e6576a90f722929495b7cd9f1d67f93bf9c31e)), closes [#11357](https://github.com/aws/aws-cdk/issues/11357) - ## [1.74.0](https://github.com/aws/aws-cdk/compare/v1.73.0...v1.74.0) (2020-11-17) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index ee31c4a12528b..abb37f4e9df01 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -102,4 +102,4 @@ }, "maturity": "stable", "stability": "stable" -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index 4b034de9b4480..895778bc83e4f 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -71,7 +71,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "@types/sinon": "^9.0.9", + "@types/sinon": "^9.0.8", "aws-cdk": "0.0.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-amplify/lib/app.ts b/packages/@aws-cdk/aws-amplify/lib/app.ts index 8e7217a59cc58..e2b4d4085eae5 100644 --- a/packages/@aws-cdk/aws-amplify/lib/app.ts +++ b/packages/@aws-cdk/aws-amplify/lib/app.ts @@ -219,7 +219,7 @@ export class App extends Resource implements IApp, iam.IGrantable { buildSpec: props.autoBranchCreation.buildSpec && props.autoBranchCreation.buildSpec.toBuildSpec(), enableAutoBranchCreation: true, enableAutoBuild: props.autoBranchCreation.autoBuild === undefined ? true : props.autoBranchCreation.autoBuild, - environmentVariables: Lazy.any({ produce: () => renderEnvironmentVariables(this.autoBranchEnvironmentVariables ) }, { omitEmptyArray: true }), // eslint-disable-line max-len + environmentVariables: Lazy.anyValue({ produce: () => renderEnvironmentVariables(this.autoBranchEnvironmentVariables ) }, { omitEmptyArray: true }), // eslint-disable-line max-len enablePullRequestPreview: props.autoBranchCreation.pullRequestPreview === undefined ? true : props.autoBranchCreation.pullRequestPreview, pullRequestEnvironmentName: props.autoBranchCreation.pullRequestEnvironmentName, stage: props.autoBranchCreation.stage, @@ -227,9 +227,9 @@ export class App extends Resource implements IApp, iam.IGrantable { enableBranchAutoDeletion: props.autoBranchDeletion, basicAuthConfig: props.basicAuth && props.basicAuth.bind(this, 'AppBasicAuth'), buildSpec: props.buildSpec && props.buildSpec.toBuildSpec(), - customRules: Lazy.any({ produce: () => this.customRules }, { omitEmptyArray: true }), + customRules: Lazy.anyValue({ produce: () => this.customRules }, { omitEmptyArray: true }), description: props.description, - environmentVariables: Lazy.any({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), + environmentVariables: Lazy.anyValue({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), iamServiceRole: role.roleArn, name: props.appName || this.node.id, oauthToken: sourceCodeProviderOptions?.oauthToken?.toString(), diff --git a/packages/@aws-cdk/aws-amplify/lib/branch.ts b/packages/@aws-cdk/aws-amplify/lib/branch.ts index e26fe6c4d46a2..31434b929e391 100644 --- a/packages/@aws-cdk/aws-amplify/lib/branch.ts +++ b/packages/@aws-cdk/aws-amplify/lib/branch.ts @@ -141,7 +141,7 @@ export class Branch extends Resource implements IBranch { description: props.description, enableAutoBuild: props.autoBuild === undefined ? true : props.autoBuild, enablePullRequestPreview: props.pullRequestPreview === undefined ? true : props.pullRequestPreview, - environmentVariables: Lazy.any({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), + environmentVariables: Lazy.anyValue({ produce: () => renderEnvironmentVariables(this.environmentVariables) }, { omitEmptyArray: true }), pullRequestEnvironmentName: props.pullRequestEnvironmentName, stage: props.stage, }); diff --git a/packages/@aws-cdk/aws-amplify/lib/domain.ts b/packages/@aws-cdk/aws-amplify/lib/domain.ts index b657ebdefb247..c8bb702f9b414 100644 --- a/packages/@aws-cdk/aws-amplify/lib/domain.ts +++ b/packages/@aws-cdk/aws-amplify/lib/domain.ts @@ -105,7 +105,7 @@ export class Domain extends Resource { const domain = new CfnDomain(this, 'Resource', { appId: props.app.appId, domainName, - subDomainSettings: Lazy.any({ produce: () => this.renderSubDomainSettings() }, { omitEmptyArray: true }), + subDomainSettings: Lazy.anyValue({ produce: () => this.renderSubDomainSettings() }, { omitEmptyArray: true }), }); this.arn = domain.attrArn; diff --git a/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts b/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts index a354c8a4b3196..82f7696fe2fa2 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/authorizers/lambda.ts @@ -118,7 +118,7 @@ abstract class LambdaAuthorizer extends Authorizer implements IAuthorizer { * Throws an error, during token resolution, if no RestApi is attached to this authorizer. */ protected lazyRestApiId() { - return Lazy.string({ + return Lazy.stringValue({ produce: () => { if (!this.restApiId) { throw new Error(`Authorizer (${this.node.path}) must be attached to a RestApi`); diff --git a/packages/@aws-cdk/aws-apigateway/lib/deployment.ts b/packages/@aws-cdk/aws-apigateway/lib/deployment.ts index a286e978fdafb..877af8df471b3 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/deployment.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/deployment.ts @@ -78,7 +78,7 @@ export class Deployment extends Resource { } this.api = props.api; - this.deploymentId = Lazy.string({ produce: () => this.resource.ref }); + this.deploymentId = Lazy.stringValue({ produce: () => this.resource.ref }); if (props.api instanceof RestApiBase) { props.api._attachDeployment(this); @@ -141,7 +141,7 @@ class LatestDeploymentResource extends CfnDeployment { this.api = props.restApi; this.originalLogicalId = this.stack.getLogicalId(this); - this.overrideLogicalId(Lazy.uncachedString({ produce: () => this.calculateLogicalId() })); + this.overrideLogicalId(Lazy.stringValue({ produce: () => this.calculateLogicalId() })); } /** diff --git a/packages/@aws-cdk/aws-apigateway/lib/integration.ts b/packages/@aws-cdk/aws-apigateway/lib/integration.ts index 475358d672540..9d08a02b57bc2 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integration.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integration.ts @@ -204,7 +204,7 @@ export class Integration { const options = this.props.options; if (options?.connectionType === ConnectionType.VPC_LINK && uri === undefined) { - uri = Lazy.string({ + uri = Lazy.stringValue({ // needs to be a lazy since the targets can be added to the VpcLink construct after initialization. produce: () => { const vpcLink = options.vpcLink; diff --git a/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts b/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts index 6374bb404902a..2960d9c9431d8 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts @@ -78,7 +78,7 @@ export class AwsIntegration extends Integration { super({ type, integrationHttpMethod: props.integrationHttpMethod || 'POST', - uri: cdk.Lazy.string({ + uri: cdk.Lazy.stringValue({ produce: () => { if (!this.scope) { throw new Error('AwsIntegration must be used in API'); } return cdk.Stack.of(this.scope).formatArn({ diff --git a/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts b/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts index 399484510f343..895b36323f1d7 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integrations/lambda.ts @@ -63,7 +63,7 @@ export class LambdaIntegration extends AwsIntegration { this.handler.addPermission(`ApiPermission.${desc}`, { principal, scope: method, - sourceArn: Lazy.string({ produce: () => method.methodArn }), + sourceArn: Lazy.stringValue({ produce: () => method.methodArn }), }); // add permission to invoke from the console diff --git a/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts b/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts index ad807d4a7d2d0..e39efd410fe80 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/usage-plan.ts @@ -156,7 +156,7 @@ export class UsagePlan extends Resource { let resource: CfnUsagePlan; resource = new CfnUsagePlan(this, 'Resource', { - apiStages: Lazy.any({ produce: () => this.renderApiStages(this.apiStages) }), + apiStages: Lazy.anyValue({ produce: () => this.renderApiStages(this.apiStages) }), description: props.description, quota: this.renderQuota(props), throttle: this.renderThrottle(props.throttle), diff --git a/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts b/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts index f7d137f2c9e1a..dc7576b22961c 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts @@ -66,13 +66,13 @@ export class VpcLink extends Resource implements IVpcLink { constructor(scope: Construct, id: string, props: VpcLinkProps = {}) { super(scope, id, { physicalName: props.vpcLinkName || - Lazy.string({ produce: () => Names.nodeUniqueId(this.node) }), + Lazy.stringValue({ produce: () => Names.nodeUniqueId(this.node) }), }); const cfnResource = new CfnVpcLink(this, 'Resource', { name: this.physicalName, description: props.description, - targetArns: Lazy.list({ produce: () => this.renderTargets() }), + targetArns: Lazy.listValue({ produce: () => this.renderTargets() }), }); this.vpcLinkId = cfnResource.ref; diff --git a/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts b/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts index 55e5ab8859734..77f8b887eae57 100644 --- a/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts +++ b/packages/@aws-cdk/aws-apigateway/test/deployment.test.ts @@ -147,7 +147,7 @@ describe('deployment', () => { // tokens supported, and are resolved upon synthesis const value = 'hello hello'; - deployment.addToLogicalId({ foo: Lazy.string({ produce: () => value }) }); + deployment.addToLogicalId({ foo: Lazy.stringValue({ produce: () => value }) }); const template2 = synthesize(); expect(template2.Resources.deployment333819758d91bed959c6bd6268ba84f6d33e888e).toBeDefined(); diff --git a/packages/@aws-cdk/aws-apigateway/test/stage.test.ts b/packages/@aws-cdk/aws-apigateway/test/stage.test.ts index a2575edbaa07b..1584850913deb 100644 --- a/packages/@aws-cdk/aws-apigateway/test/stage.test.ts +++ b/packages/@aws-cdk/aws-apigateway/test/stage.test.ts @@ -319,7 +319,7 @@ describe('stage', () => { // WHEN const testLogGroup = new logs.LogGroup(stack, 'LogGroup'); - const testFormat = apigateway.AccessLogFormat.custom(cdk.Lazy.string({ produce: () => 'test' })); + const testFormat = apigateway.AccessLogFormat.custom(cdk.Lazy.stringValue({ produce: () => 'test' })); // THEN expect(() => new apigateway.Stage(stack, 'my-stage', { diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts index 60ab5b3bbaede..9549ff5c6598c 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/scalable-target.ts @@ -125,7 +125,7 @@ export class ScalableTarget extends Resource implements IScalableTarget { resourceId: props.resourceId, roleArn: this.role.roleArn, scalableDimension: props.scalableDimension, - scheduledActions: Lazy.any({ produce: () => this.actions }, { omitEmptyArray: true }), + scheduledActions: Lazy.anyValue({ produce: () => this.actions }, { omitEmptyArray: true }), serviceNamespace: props.serviceNamespace, }); diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts index 4cb7aa2328ebc..95242ed9e8cdf 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts @@ -90,7 +90,7 @@ export class StepScalingAction extends cdk.Construct { cooldown: props.cooldown && props.cooldown.toSeconds(), minAdjustmentMagnitude: props.minAdjustmentMagnitude, metricAggregationType: props.metricAggregationType, - stepAdjustments: cdk.Lazy.any({ produce: () => this.adjustments }), + stepAdjustments: cdk.Lazy.anyValue({ produce: () => this.adjustments }), } as CfnScalingPolicy.StepScalingPolicyConfigurationProperty, }); diff --git a/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts b/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts index 68622c2f60181..c042f305994d1 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/test/test.scalable-target.ts @@ -40,8 +40,8 @@ export = { serviceNamespace: appscaling.ServiceNamespace.DYNAMODB, scalableDimension: 'test:TestCount', resourceId: 'test:this/test', - minCapacity: cdk.Lazy.number({ produce: () => 10 }), - maxCapacity: cdk.Lazy.number({ produce: () => 1 }), + minCapacity: cdk.Lazy.numberValue({ produce: () => 10 }), + maxCapacity: cdk.Lazy.numberValue({ produce: () => 1 }), }); // THEN: no exception diff --git a/packages/@aws-cdk/aws-appmesh/README.md b/packages/@aws-cdk/aws-appmesh/README.md index 7de09d776eff5..4bed6a9598541 100644 --- a/packages/@aws-cdk/aws-appmesh/README.md +++ b/packages/@aws-cdk/aws-appmesh/README.md @@ -263,7 +263,7 @@ Create a virtual gateway with the constructor: ```typescript const gateway = new appmesh.VirtualGateway(stack, 'gateway', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.http({ + listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -280,7 +280,7 @@ Add a virtual gateway directly to the mesh: const gateway = mesh.addVirtualGateway('gateway', { accessLog: appmesh.AccessLog.fromFilePath('/dev/stdout'), virtualGatewayName: 'virtualGateway', - listeners: [appmesh.VirtualGatewayListener.http({ + listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -302,7 +302,7 @@ By default, an HTTP based route will match on `/`. All matches must start with a ```typescript gateway.addGatewayRoute('gateway-route-http', { - routeSpec: appmesh.GatewayRouteSpec.http({ + routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, match: { prefixMatch: '/', @@ -316,7 +316,7 @@ You cannot omit the field, and must specify a match for these routes. ```typescript gateway.addGatewayRoute('gateway-route-grpc', { - routeSpec: appmesh.GatewayRouteSpec.grpc({ + routeSpec: appmesh.GatewayRouteSpec.grpcRouteSpec({ routeTarget: virtualService, match: { serviceName: 'my-service.default.svc.cluster.local', diff --git a/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts b/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts index 525bc4d2ba7e0..b75890ece1453 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts @@ -29,7 +29,7 @@ export interface GrpcGatewayRouteMatch { /** * Properties specific for HTTP Based GatewayRoutes */ -export interface HttpGatewayRouteSpecOptions { +export interface HttpRouteSpecProps { /** * The criterion for determining a request match for this GatewayRoute * @@ -46,7 +46,7 @@ export interface HttpGatewayRouteSpecOptions { /** * Properties specific for a GRPC GatewayRoute */ -export interface GrpcGatewayRouteSpecOptions { +export interface GrpcRouteSpecProps { /** * The criterion for determining a request match for this GatewayRoute */ @@ -91,28 +91,28 @@ export abstract class GatewayRouteSpec { /** * Creates an HTTP Based GatewayRoute * - * @param options - no http gateway route + * @param props - no http gateway route */ - public static http(options: HttpGatewayRouteSpecOptions): GatewayRouteSpec { - return new HttpGatewayRouteSpec(options, Protocol.HTTP); + public static httpRouteSpec(props: HttpRouteSpecProps): GatewayRouteSpec { + return new HttpGatewayRouteSpec(props, Protocol.HTTP); } /** * Creates an HTTP2 Based GatewayRoute * - * @param options - no http2 gateway route + * @param props - no http2 gateway route */ - public static http2(options: HttpGatewayRouteSpecOptions): GatewayRouteSpec { - return new HttpGatewayRouteSpec(options, Protocol.HTTP2); + public static http2RouteSpec(props: HttpRouteSpecProps): GatewayRouteSpec { + return new HttpGatewayRouteSpec(props, Protocol.HTTP2); } /** * Creates an GRPC Based GatewayRoute * - * @param options - no grpc gateway route + * @param props - no grpc gateway route */ - public static grpc(options: GrpcGatewayRouteSpecOptions): GatewayRouteSpec { - return new GrpcGatewayRouteSpec(options); + public static grpcRouteSpec(props: GrpcRouteSpecProps): GatewayRouteSpec { + return new GrpcGatewayRouteSpec(props); } /** @@ -140,11 +140,11 @@ class HttpGatewayRouteSpec extends GatewayRouteSpec { */ readonly routeType: Protocol; - constructor(options: HttpGatewayRouteSpecOptions, protocol: Protocol.HTTP | Protocol.HTTP2) { + constructor(props: HttpRouteSpecProps, protocol: Protocol.HTTP | Protocol.HTTP2) { super(); - this.routeTarget = options.routeTarget; + this.routeTarget = props.routeTarget; this.routeType = protocol; - this.match = options.match; + this.match = props.match; } public bind(_scope: cdk.Construct): GatewayRouteSpecConfig { @@ -184,10 +184,10 @@ class GrpcGatewayRouteSpec extends GatewayRouteSpec { */ readonly routeTarget: IVirtualService; - constructor(options: GrpcGatewayRouteSpecOptions) { + constructor(props: GrpcRouteSpecProps) { super(); - this.match = options.match; - this.routeTarget = options.routeTarget; + this.match = props.match; + this.routeTarget = props.routeTarget; } public bind(_scope: cdk.Construct): GatewayRouteSpecConfig { diff --git a/packages/@aws-cdk/aws-appmesh/lib/mesh.ts b/packages/@aws-cdk/aws-appmesh/lib/mesh.ts index cc0596695aae2..869d2198fdd0c 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/mesh.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/mesh.ts @@ -186,7 +186,7 @@ export class Mesh extends MeshBase { constructor(scope: Construct, id: string, props: MeshProps = {}) { super(scope, id, { - physicalName: props.meshName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.meshName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), }); const mesh = new CfnMesh(this, 'Resource', { diff --git a/packages/@aws-cdk/aws-appmesh/lib/route.ts b/packages/@aws-cdk/aws-appmesh/lib/route.ts index 7b9bd2aeb94d2..f2fb9ab58232a 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/route.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/route.ts @@ -110,7 +110,7 @@ export class Route extends cdk.Resource implements IRoute { constructor(scope: Construct, id: string, props: RouteProps) { super(scope, id, { - physicalName: props.routeName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.routeName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), }); this.virtualRouter = props.virtualRouter; diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts index 7b111dbc0a67d..a690c022f8c32 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts @@ -6,7 +6,7 @@ import { HealthCheck, Protocol } from './shared-interfaces'; /** * Represents the properties needed to define HTTP Listeners for a VirtualGateway */ -export interface HttpGatewayListenerOptions { +export interface HttpGatewayListenerProps { /** * Port to listen for connections on * @@ -25,7 +25,7 @@ export interface HttpGatewayListenerOptions { /** * Represents the properties needed to define GRPC Listeners for a VirtualGateway */ -export interface GrpcGatewayListenerOptions { +export interface GrpcGatewayListenerProps { /** * Port to listen for connections on * @@ -58,29 +58,70 @@ export abstract class VirtualGatewayListener { /** * Returns an HTTP Listener for a VirtualGateway */ - public static http(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { - return new HttpGatewayListener(options); + public static httpGatewayListener(props: HttpGatewayListenerProps = {}): VirtualGatewayListener { + return new HttpGatewayListener(props); } /** * Returns an HTTP2 Listener for a VirtualGateway */ - public static http2(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { - return new Http2GatewayListener(options); + public static http2GatewayListener(props: HttpGatewayListenerProps = {}): VirtualGatewayListener { + return new Http2GatewayListener(props); } /** * Returns a GRPC Listener for a VirtualGateway */ - public static grpc(options: GrpcGatewayListenerOptions = {}): VirtualGatewayListener { - return new GrpcGatewayListener(options); + public static grpcGatewayListener(props: GrpcGatewayListenerProps = {}): VirtualGatewayListener { + return new GrpcGatewayListener(props); } + /** + * Protocol the listener implements + */ + protected abstract protocol: Protocol; + + /** + * Port to listen for connections on + */ + protected abstract port: number; + + /** + * Health checking strategy upstream nodes should use when communicating with the listener + */ + protected abstract healthCheck?: HealthCheck; + /** * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ public abstract bind(scope: cdk.Construct): VirtualGatewayListenerConfig; + + protected renderHealthCheck(hc: HealthCheck): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty | undefined { + if (hc.protocol === Protocol.TCP) { + throw new Error('TCP health checks are not permitted for gateway listeners'); + } + + if (hc.protocol === Protocol.GRPC && hc.path) { + throw new Error('The path property cannot be set with Protocol.GRPC'); + } + + const protocol = hc.protocol? hc.protocol : this.protocol; + + const healthCheck: CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty = { + healthyThreshold: hc.healthyThreshold || 2, + intervalMillis: (hc.interval || cdk.Duration.seconds(5)).toMilliseconds(), // min + path: hc.path || ((protocol === Protocol.HTTP || protocol === Protocol.HTTP2) ? '/' : undefined), + port: hc.port || this.port, + protocol: hc.protocol || this.protocol, + timeoutMillis: (hc.timeout || cdk.Duration.seconds(2)).toMilliseconds(), + unhealthyThreshold: hc.unhealthyThreshold || 2, + }; + + validateHealthChecks(healthCheck); + + return healthCheck; + } } /** @@ -106,10 +147,10 @@ class HttpGatewayListener extends VirtualGatewayListener { */ protected protocol: Protocol = Protocol.HTTP; - constructor(options: HttpGatewayListenerOptions = {}) { + constructor(props: HttpGatewayListenerProps = {}) { super(); - this.port = options.port ? options.port : 8080; - this.healthCheck = options.healthCheck; + this.port = props.port ? props.port : 8080; + this.healthCheck = props.healthCheck; } /** @@ -123,7 +164,7 @@ class HttpGatewayListener extends VirtualGatewayListener { port: this.port, protocol: this.protocol, }, - healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, + healthCheck: this.healthCheck ? this.renderHealthCheck(this.healthCheck): undefined, }, }; } @@ -133,8 +174,8 @@ class HttpGatewayListener extends VirtualGatewayListener { * Represents the properties needed to define an HTTP2 Listener for a VirtualGateway */ class Http2GatewayListener extends HttpGatewayListener { - constructor(options: HttpGatewayListenerOptions = {}) { - super(options); + constructor(props: HttpGatewayListenerProps = {}) { + super(props); this.protocol = Protocol.HTTP2; } } @@ -162,10 +203,10 @@ class GrpcGatewayListener extends VirtualGatewayListener { */ protected protocol: Protocol = Protocol.GRPC; - constructor(options: HttpGatewayListenerOptions = {}) { + constructor(props: HttpGatewayListenerProps = {}) { super(); - this.port = options.port ? options.port : 8080; - this.healthCheck = options.healthCheck; + this.port = props.port ? props.port : 8080; + this.healthCheck = props.healthCheck; } /** @@ -179,36 +220,8 @@ class GrpcGatewayListener extends VirtualGatewayListener { port: this.port, protocol: Protocol.GRPC, }, - healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, + healthCheck: this.healthCheck? this.renderHealthCheck(this.healthCheck): undefined, }, }; } -} - -function renderHealthCheck( - hc: HealthCheck, listenerProtocol: Protocol, listenerPort: number): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty { - - if (hc.protocol === Protocol.TCP) { - throw new Error('TCP health checks are not permitted for gateway listeners'); - } - - if (hc.protocol === Protocol.GRPC && hc.path) { - throw new Error('The path property cannot be set with Protocol.GRPC'); - } - - const protocol = hc.protocol? hc.protocol : listenerProtocol; - - const healthCheck: CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty = { - healthyThreshold: hc.healthyThreshold || 2, - intervalMillis: (hc.interval || cdk.Duration.seconds(5)).toMilliseconds(), // min - path: hc.path || ((protocol === Protocol.HTTP || protocol === Protocol.HTTP2) ? '/' : undefined), - port: hc.port || listenerPort, - protocol: hc.protocol || listenerProtocol, - timeoutMillis: (hc.timeout || cdk.Duration.seconds(2)).toMilliseconds(), - unhealthyThreshold: hc.unhealthyThreshold || 2, - }; - - validateHealthChecks(healthCheck); - - return healthCheck; -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts index 4a0c5fef1af75..337807c9153da 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts @@ -161,7 +161,7 @@ export class VirtualGateway extends VirtualGatewayBase { if (!props.listeners) { // Use listener default of http listener port 8080 if no listener is defined - this.listeners.push(VirtualGatewayListener.http().bind(this)); + this.listeners.push(VirtualGatewayListener.httpGatewayListener().bind(this)); } else { props.listeners.forEach(listener => this.listeners.push(listener.bind(this))); } diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts index e868ce69936c7..fd8b2cadc87db 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-node.ts @@ -180,7 +180,7 @@ export class VirtualNode extends VirtualNodeBase { constructor(scope: Construct, id: string, props: VirtualNodeProps) { super(scope, id, { - physicalName: props.virtualNodeName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.virtualNodeName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), }); this.mesh = props.mesh; @@ -193,8 +193,8 @@ export class VirtualNode extends VirtualNodeBase { virtualNodeName: this.physicalName, meshName: this.mesh.meshName, spec: { - backends: cdk.Lazy.any({ produce: () => this.backends }, { omitEmptyArray: true }), - listeners: cdk.Lazy.any({ produce: () => this.listeners.map(listener => listener.listener) }, { omitEmptyArray: true }), + backends: cdk.Lazy.anyValue({ produce: () => this.backends }, { omitEmptyArray: true }), + listeners: cdk.Lazy.anyValue({ produce: () => this.listeners.map(listener => listener.listener) }, { omitEmptyArray: true }), serviceDiscovery: { dns: props.dnsHostName !== undefined ? { hostname: props.dnsHostName } : undefined, awsCloudMap: props.cloudMapService !== undefined ? { diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts index b202c4c1ca3ae..65c3921a844fd 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-router.ts @@ -141,7 +141,7 @@ export class VirtualRouter extends VirtualRouterBase { constructor(scope: Construct, id: string, props: VirtualRouterProps) { super(scope, id, { - physicalName: props.virtualRouterName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.virtualRouterName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), }); this.mesh = props.mesh; diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts index 677eb96b3e4a8..374d342040784 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-service.ts @@ -123,7 +123,7 @@ export class VirtualService extends cdk.Resource implements IVirtualService { constructor(scope: Construct, id: string, props: VirtualServiceProps) { super(scope, id, { - physicalName: props.virtualServiceName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), + physicalName: props.virtualServiceName || cdk.Lazy.stringValue({ produce: () => cdk.Names.uniqueId(this) }), }); if (props.virtualNode && props.virtualRouter) { diff --git a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts index 1a064b5ce7031..782ca6cee1f83 100644 --- a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts +++ b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts @@ -131,7 +131,7 @@ const gateway = mesh.addVirtualGateway('gateway1', { new appmesh.VirtualGateway(stack, 'gateway2', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.http({ + listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -140,19 +140,19 @@ new appmesh.VirtualGateway(stack, 'gateway2', { }); gateway.addGatewayRoute('gateway1-route-http', { - routeSpec: appmesh.GatewayRouteSpec.http({ + routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, }), }); gateway.addGatewayRoute('gateway1-route-http2', { - routeSpec: appmesh.GatewayRouteSpec.http2({ + routeSpec: appmesh.GatewayRouteSpec.http2RouteSpec({ routeTarget: virtualService, }), }); gateway.addGatewayRoute('gateway1-route-grpc', { - routeSpec: appmesh.GatewayRouteSpec.grpc({ + routeSpec: appmesh.GatewayRouteSpec.grpcRouteSpec({ routeTarget: virtualService, match: { serviceName: virtualService.virtualServiceName, diff --git a/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts b/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts index a741ec0b0d1d8..2f08e58bb873a 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.gateway-route.ts @@ -16,7 +16,7 @@ export = { }); const virtualGateway = new appmesh.VirtualGateway(stack, 'gateway-1', { - listeners: [appmesh.VirtualGatewayListener.http()], + listeners: [appmesh.VirtualGatewayListener.httpGatewayListener()], mesh: mesh, }); @@ -27,21 +27,21 @@ export = { // Add an HTTP Route virtualGateway.addGatewayRoute('gateway-http-route', { - routeSpec: appmesh.GatewayRouteSpec.http({ + routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, }), gatewayRouteName: 'gateway-http-route', }); virtualGateway.addGatewayRoute('gateway-http2-route', { - routeSpec: appmesh.GatewayRouteSpec.http2({ + routeSpec: appmesh.GatewayRouteSpec.http2RouteSpec({ routeTarget: virtualService, }), gatewayRouteName: 'gateway-http2-route', }); virtualGateway.addGatewayRoute('gateway-grpc-route', { - routeSpec: appmesh.GatewayRouteSpec.grpc({ + routeSpec: appmesh.GatewayRouteSpec.grpcRouteSpec({ routeTarget: virtualService, match: { serviceName: virtualService.virtualServiceName, @@ -122,7 +122,7 @@ export = { }); const virtualService = mesh.addVirtualService('testVirtualService'); - test.throws(() => appmesh.GatewayRouteSpec.http({ + test.throws(() => appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, match: { prefixPath: 'wrong', diff --git a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts index 8e76b0f5c85f5..f5c020426c9b9 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts @@ -21,7 +21,7 @@ export = { new appmesh.VirtualGateway(stack, 'httpGateway', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.http({ + listeners: [appmesh.VirtualGatewayListener.httpGatewayListener({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -31,7 +31,7 @@ export = { new appmesh.VirtualGateway(stack, 'http2Gateway', { mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.http2({ + listeners: [appmesh.VirtualGatewayListener.http2GatewayListener({ port: 443, healthCheck: { interval: cdk.Duration.seconds(10), @@ -113,7 +113,7 @@ export = { new appmesh.VirtualGateway(stack, 'testGateway', { virtualGatewayName: 'test-gateway', - listeners: [appmesh.VirtualGatewayListener.grpc({ + listeners: [appmesh.VirtualGatewayListener.grpcGatewayListener({ port: 80, healthCheck: { }, @@ -174,7 +174,7 @@ export = { virtualGateway.addGatewayRoute('testGatewayRoute', { gatewayRouteName: 'test-gateway-route', - routeSpec: appmesh.GatewayRouteSpec.http({ + routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, }), }); @@ -218,13 +218,13 @@ export = { const virtualGateway = mesh.addVirtualGateway('gateway'); virtualGateway.addGatewayRoute('testGatewayRoute', { gatewayRouteName: 'test-gateway-route', - routeSpec: appmesh.GatewayRouteSpec.http({ + routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, }), }); virtualGateway.addGatewayRoute('testGatewayRoute2', { gatewayRouteName: 'test-gateway-route-2', - routeSpec: appmesh.GatewayRouteSpec.http({ + routeSpec: appmesh.GatewayRouteSpec.httpRouteSpec({ routeTarget: virtualService, }), }); diff --git a/packages/@aws-cdk/aws-appsync/lib/schema.ts b/packages/@aws-cdk/aws-appsync/lib/schema.ts index 3ab8a800d16fb..ec5bbfa14241d 100644 --- a/packages/@aws-cdk/aws-appsync/lib/schema.ts +++ b/packages/@aws-cdk/aws-appsync/lib/schema.ts @@ -80,7 +80,7 @@ export class Schema { this.schema = new CfnGraphQLSchema(api, 'Schema', { apiId: api.apiId, definition: this.mode === SchemaMode.CODE ? - Lazy.string({ + Lazy.stringValue({ produce: () => this.types.reduce((acc, type) => { return `${acc}${type._bindToGraphqlApi(api).toString()}\n`; }, `${this.declareSchema()}${this.definition}`), }) diff --git a/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts b/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts index 0d5dd3f147235..cf5f6acbcbf71 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/auto-scaling-group.ts @@ -936,8 +936,8 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements // use delayed evaluation const imageConfig = props.machineImage.getImage(this); this.userData = props.userData ?? imageConfig.userData; - const userDataToken = Lazy.string({ produce: () => Fn.base64(this.userData.render()) }); - const securityGroupsToken = Lazy.list({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); + const userDataToken = Lazy.stringValue({ produce: () => Fn.base64(this.userData.render()) }); + const securityGroupsToken = Lazy.listValue({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); const launchConfig = new CfnLaunchConfiguration(this, 'LaunchConfig', { imageId: imageConfig.imageId, @@ -1014,10 +1014,10 @@ export class AutoScalingGroup extends AutoScalingGroupBase implements maxSize: Tokenization.stringifyNumber(maxCapacity), desiredCapacity: desiredCapacity !== undefined ? Tokenization.stringifyNumber(desiredCapacity) : undefined, launchConfigurationName: launchConfig.ref, - loadBalancerNames: Lazy.list({ produce: () => this.loadBalancerNames }, { omitEmpty: true }), - targetGroupArns: Lazy.list({ produce: () => this.targetGroupArns }, { omitEmpty: true }), + loadBalancerNames: Lazy.listValue({ produce: () => this.loadBalancerNames }, { omitEmpty: true }), + targetGroupArns: Lazy.listValue({ produce: () => this.targetGroupArns }, { omitEmpty: true }), notificationConfigurations: this.renderNotificationConfiguration(), - metricsCollection: Lazy.any({ produce: () => this.renderMetricsCollection() }), + metricsCollection: Lazy.anyValue({ produce: () => this.renderMetricsCollection() }), vpcZoneIdentifier: subnetIds, healthCheckType: props.healthCheck && props.healthCheck.type, healthCheckGracePeriod: props.healthCheck && props.healthCheck.gracePeriod && props.healthCheck.gracePeriod.toSeconds(), diff --git a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts index 9b9939d740d16..76ba4685c0a38 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts @@ -79,7 +79,7 @@ export class StepScalingAction extends CoreConstruct { adjustmentType: props.adjustmentType, minAdjustmentMagnitude: props.minAdjustmentMagnitude, metricAggregationType: props.metricAggregationType, - stepAdjustments: Lazy.any({ produce: () => this.adjustments }), + stepAdjustments: Lazy.anyValue({ produce: () => this.adjustments }), }); this.scalingPolicyArn = resource.ref; diff --git a/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts b/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts index 737566c369b76..4e4e800828780 100644 --- a/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts +++ b/packages/@aws-cdk/aws-autoscaling/test/auto-scaling-group.test.ts @@ -170,9 +170,9 @@ nodeunitShim({ instanceType: ec2.InstanceType.of(ec2.InstanceClass.M4, ec2.InstanceSize.MICRO), machineImage: new ec2.AmazonLinuxImage(), vpc, - minCapacity: cdk.Lazy.number({ produce: () => 5 }), - maxCapacity: cdk.Lazy.number({ produce: () => 1 }), - desiredCapacity: cdk.Lazy.number({ produce: () => 20 }), + minCapacity: cdk.Lazy.numberValue({ produce: () => 5 }), + maxCapacity: cdk.Lazy.numberValue({ produce: () => 1 }), + desiredCapacity: cdk.Lazy.numberValue({ produce: () => 20 }), }); // THEN: no exception diff --git a/packages/@aws-cdk/aws-backup/lib/plan.ts b/packages/@aws-cdk/aws-backup/lib/plan.ts index 70240e778969b..3476b56817dc1 100644 --- a/packages/@aws-cdk/aws-backup/lib/plan.ts +++ b/packages/@aws-cdk/aws-backup/lib/plan.ts @@ -125,7 +125,7 @@ export class BackupPlan extends Resource implements IBackupPlan { const plan = new CfnBackupPlan(this, 'Resource', { backupPlan: { backupPlanName: props.backupPlanName || id, - backupPlanRule: Lazy.any({ produce: () => this.rules }, { omitEmptyArray: true }), + backupPlanRule: Lazy.anyValue({ produce: () => this.rules }, { omitEmptyArray: true }), }, }); diff --git a/packages/@aws-cdk/aws-backup/lib/selection.ts b/packages/@aws-cdk/aws-backup/lib/selection.ts index 401af8314b6e1..fb3278ec42404 100644 --- a/packages/@aws-cdk/aws-backup/lib/selection.ts +++ b/packages/@aws-cdk/aws-backup/lib/selection.ts @@ -96,10 +96,10 @@ export class BackupSelection extends Resource implements iam.IGrantable { backupSelection: { iamRoleArn: role.roleArn, selectionName: props.backupSelectionName || this.node.id, - listOfTags: Lazy.any({ + listOfTags: Lazy.anyValue({ produce: () => this.listOfTags, }, { omitEmptyArray: true }), - resources: Lazy.list({ + resources: Lazy.listValue({ produce: () => [...this.resources, ...this.backupableResourcesCollector.resources], }, { omitEmpty: true }), }, @@ -130,7 +130,7 @@ export class BackupSelection extends Resource implements iam.IGrantable { Aspects.of(resource.construct).add(this.backupableResourcesCollector); // Cannot push `this.backupableResourcesCollector.resources` to // `this.resources` here because it has not been evaluated yet. - // Will be concatenated to `this.resources` in a `Lazy.list` + // Will be concatenated to `this.resources` in a `Lazy.listValue` // in the constructor instead. } } diff --git a/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts b/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts index f1a5cd442e9d1..655361ba5b4b7 100644 --- a/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts +++ b/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts @@ -98,7 +98,7 @@ export class DnsValidatedCertificate extends cdk.Resource implements ICertificat serviceToken: requestorFunction.functionArn, properties: { DomainName: props.domainName, - SubjectAlternativeNames: cdk.Lazy.list({ produce: () => props.subjectAlternativeNames }, { omitEmpty: true }), + SubjectAlternativeNames: cdk.Lazy.listValue({ produce: () => props.subjectAlternativeNames }, { omitEmpty: true }), HostedZoneId: this.hostedZoneId, Region: props.region, Route53Endpoint: props.route53Endpoint, diff --git a/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts b/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts index ab43a486ae7d1..5bbeadf007f1e 100644 --- a/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts +++ b/packages/@aws-cdk/aws-certificatemanager/test/certificate.test.ts @@ -66,7 +66,7 @@ test('needs validation domain supplied if domain contains a token', () => { const stack = new Stack(); expect(() => { - const domainName = Lazy.string({ produce: () => 'example.com' }); + const domainName = Lazy.stringValue({ produce: () => 'example.com' }); new Certificate(stack, 'Certificate', { domainName, }); @@ -76,7 +76,7 @@ test('needs validation domain supplied if domain contains a token', () => { test('validationdomains can be given for a Token', () => { const stack = new Stack(); - const domainName = Lazy.string({ produce: () => 'my.example.com' }); + const domainName = Lazy.stringValue({ produce: () => 'my.example.com' }); new Certificate(stack, 'Certificate', { domainName, validationDomains: { diff --git a/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts b/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts index 93ac7d4b9913a..6db44400cfa89 100644 --- a/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts +++ b/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts @@ -157,7 +157,7 @@ export class CustomResource extends core.CustomResource { properties: props.properties, removalPolicy: props.removalPolicy, resourceType: props.resourceType, - serviceToken: core.Lazy.string({ produce: () => props.provider.bind(this).serviceToken }), + serviceToken: core.Lazy.stringValue({ produce: () => props.provider.bind(this).serviceToken }), }); } } diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index 425a01b99f55a..ac39d79cf3ff3 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -73,7 +73,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "pkglint": "0.0.0" diff --git a/packages/@aws-cdk/aws-cloudfront/.gitignore b/packages/@aws-cdk/aws-cloudfront/.gitignore index e65361cd8269a..832d814be5d7a 100644 --- a/packages/@aws-cdk/aws-cloudfront/.gitignore +++ b/packages/@aws-cdk/aws-cloudfront/.gitignore @@ -15,6 +15,4 @@ nyc.config.js !.eslintrc.js !jest.config.js -!lib/experimental/edge-function/index.js - -junit.xml +junit.xml \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cloudfront/README.md b/packages/@aws-cdk/aws-cloudfront/README.md index d752286bac5d5..a75dc7aa9dce4 100644 --- a/packages/@aws-cdk/aws-cloudfront/README.md +++ b/packages/@aws-cdk/aws-cloudfront/README.md @@ -251,12 +251,8 @@ or authorize requests based on headers or authorization tokens. The following shows a Lambda@Edge function added to the default behavior and triggered on every request: -```ts -const myFunc = new cloudfront.experimental.EdgeFunction(this, 'MyFunction', { - runtime: lambda.Runtime.NODEJS_10_X, - handler: 'index.handler', - code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')), -}); +```typescript +const myFunc = new lambda.Function(...); new cloudfront.Distribution(this, 'myDist', { defaultBehavior: { origin: new origins.S3Origin(myBucket), @@ -270,23 +266,9 @@ new cloudfront.Distribution(this, 'myDist', { }); ``` -> **Note:** Lambda@Edge functions must be created in the `us-east-1` region, regardless of the region of the CloudFront distribution and stack. -> To make it easier to request functions for Lambda@Edge, the `EdgeFunction` construct can be used. -> The `EdgeFunction` construct will automatically request a function in `us-east-1`, regardless of the region of the current stack. -> `EdgeFunction` has the same interface as `Function` and can be created and used interchangably. - -If the stack is in `us-east-1`, a "normal" `lambda.Function` can be used instead of an `EdgeFunction`. - -```ts -const myFunc = new lambda.Function(this, 'MyFunction', { - runtime: lambda.Runtime.NODEJS_10_X, - handler: 'index.handler', - code: lambda.Code.fromAsset(path.join(__dirname, 'lambda-handler')), -}); -``` - Lambda@Edge functions can also be associated with additional behaviors, -either at or after Distribution creation time. +either at Distribution creation time, +or after. ```typescript // assigning at Distribution creation diff --git a/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts b/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts index 0eacc04f44cc7..b3c9db91d700c 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts @@ -277,11 +277,11 @@ export class Distribution extends Resource implements IDistribution { const distribution = new CfnDistribution(this, 'Resource', { distributionConfig: { enabled: props.enabled ?? true, - origins: Lazy.any({ produce: () => this.renderOrigins() }), - originGroups: Lazy.any({ produce: () => this.renderOriginGroups() }), + origins: Lazy.anyValue({ produce: () => this.renderOrigins() }), + originGroups: Lazy.anyValue({ produce: () => this.renderOriginGroups() }), defaultCacheBehavior: this.defaultBehavior._renderBehavior(), aliases: props.domainNames, - cacheBehaviors: Lazy.any({ produce: () => this.renderCacheBehaviors() }), + cacheBehaviors: Lazy.anyValue({ produce: () => this.renderCacheBehaviors() }), comment: props.comment, customErrorResponses: this.renderErrorResponses(), defaultRootObject: props.defaultRootObject, diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts deleted file mode 100644 index 1a93ec84c0584..0000000000000 --- a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts +++ /dev/null @@ -1,262 +0,0 @@ -import * as crypto from 'crypto'; -import * as path from 'path'; -import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; -import * as ec2 from '@aws-cdk/aws-ec2'; -import * as iam from '@aws-cdk/aws-iam'; -import * as lambda from '@aws-cdk/aws-lambda'; -import * as ssm from '@aws-cdk/aws-ssm'; -import { - BootstraplessSynthesizer, CfnResource, ConstructNode, - CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, - DefaultStackSynthesizer, IStackSynthesizer, Resource, Stack, Stage, Token, -} from '@aws-cdk/core'; -import { Construct } from 'constructs'; - -/** - * Properties for creating a Lambda@Edge function - * @experimental - */ -export interface EdgeFunctionProps extends lambda.FunctionProps { } - -/** - * A Lambda@Edge function. - * - * Convenience resource for requesting a Lambda function in the 'us-east-1' region for use with Lambda@Edge. - * Implements several restrictions enforced by Lambda@Edge. - * - * @resource AWS::Lambda::Function - * @experimental - */ -export class EdgeFunction extends Resource implements lambda.IVersion { - - private static readonly EDGE_REGION: string = 'us-east-1'; - - public readonly edgeArn: string; - public readonly functionName: string; - public readonly functionArn: string; - public readonly grantPrincipal: iam.IPrincipal; - public readonly isBoundToVpc = false; - public readonly permissionsNode: ConstructNode; - public readonly role?: iam.IRole; - public readonly version: string; - - // functionStack needed for `addAlias`. - private readonly functionStack: Stack; - private readonly _edgeFunction: lambda.Function; - - constructor(scope: Construct, id: string, props: EdgeFunctionProps) { - super(scope, id); - - // Create a simple Function if we're already in us-east-1; otherwise create a cross-region stack. - const regionIsUsEast1 = !Token.isUnresolved(this.stack.region) && this.stack.region === 'us-east-1'; - const { functionStack, edgeFunction, edgeArn } = regionIsUsEast1 - ? this.createInRegionFunction(props) - : this.createCrossRegionFunction(id, props); - - this.functionStack = functionStack; - this.edgeArn = edgeArn; - - this.functionArn = edgeArn; - this._edgeFunction = edgeFunction; - this.functionName = this._edgeFunction.functionName; - this.grantPrincipal = this._edgeFunction.role!; - this.permissionsNode = this._edgeFunction.permissionsNode; - this.version = lambda.extractQualifierFromArn(this.functionArn); - - this.node.defaultChild = this._edgeFunction; - } - - public get lambda(): lambda.IFunction { - return this._edgeFunction; - } - - /** - * Convenience method to make `EdgeFunction` conform to the same interface as `Function`. - */ - public get currentVersion(): lambda.IVersion { - return this; - } - - public addAlias(aliasName: string, options: lambda.AliasOptions = {}): lambda.Alias { - return new lambda.Alias(this.functionStack, `Alias${aliasName}`, { - aliasName, - version: this._edgeFunction.currentVersion, - ...options, - }); - } - - /** - * Not supported. Connections are only applicable to VPC-enabled functions. - */ - public get connections(): ec2.Connections { - throw new Error('Lambda@Edge does not support connections'); - } - public get latestVersion(): lambda.IVersion { - throw new Error('$LATEST function version cannot be used for Lambda@Edge'); - } - - public addEventSourceMapping(id: string, options: lambda.EventSourceMappingOptions): lambda.EventSourceMapping { - return this.lambda.addEventSourceMapping(id, options); - } - public addPermission(id: string, permission: lambda.Permission): void { - return this.lambda.addPermission(id, permission); - } - public addToRolePolicy(statement: iam.PolicyStatement): void { - return this.lambda.addToRolePolicy(statement); - } - public grantInvoke(identity: iam.IGrantable): iam.Grant { - return this.lambda.grantInvoke(identity); - } - public metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.lambda.metric(metricName, { ...props, region: EdgeFunction.EDGE_REGION }); - } - public metricDuration(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.lambda.metricDuration({ ...props, region: EdgeFunction.EDGE_REGION }); - } - public metricErrors(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.lambda.metricErrors({ ...props, region: EdgeFunction.EDGE_REGION }); - } - public metricInvocations(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.lambda.metricInvocations({ ...props, region: EdgeFunction.EDGE_REGION }); - } - public metricThrottles(props?: cloudwatch.MetricOptions): cloudwatch.Metric { - return this.lambda.metricThrottles({ ...props, region: EdgeFunction.EDGE_REGION }); - } - /** Adds an event source to this function. */ - public addEventSource(source: lambda.IEventSource): void { - return this.lambda.addEventSource(source); - } - public configureAsyncInvoke(options: lambda.EventInvokeConfigOptions): void { - return this.lambda.configureAsyncInvoke(options); - } - - /** Create a function in-region */ - private createInRegionFunction(props: lambda.FunctionProps): FunctionConfig { - const edgeFunction = new lambda.Function(this, 'Fn', props); - addEdgeLambdaToRoleTrustStatement(edgeFunction.role!); - - return { edgeFunction, edgeArn: edgeFunction.currentVersion.edgeArn, functionStack: this.stack }; - } - - /** Create a support stack and function in us-east-1, and a SSM reader in-region */ - private createCrossRegionFunction(id: string, props: lambda.FunctionProps): FunctionConfig { - const parameterNamePrefix = 'EdgeFunctionArn'; - const parameterName = `${parameterNamePrefix}${id}`; - const functionStack = this.edgeStack(); - - const edgeFunction = new lambda.Function(functionStack, id, props); - addEdgeLambdaToRoleTrustStatement(edgeFunction.role!); - - // Store the current version's ARN to be retrieved by the cross region reader below. - new ssm.StringParameter(edgeFunction, 'Parameter', { - parameterName, - stringValue: edgeFunction.currentVersion.edgeArn, - }); - - const edgeArn = this.createCrossRegionArnReader(parameterNamePrefix, parameterName, edgeFunction); - - return { edgeFunction, edgeArn, functionStack }; - } - - private createCrossRegionArnReader(parameterNamePrefix: string, parameterName: string, edgeFunction: lambda.Function): string { - // Prefix of the parameter ARN that applies to all EdgeFunctions. - // This is necessary because the `CustomResourceProvider` is a singleton, and the `policyStatement` - // must work for multiple EdgeFunctions. - const parameterArnPrefix = this.stack.formatArn({ - service: 'ssm', - region: EdgeFunction.EDGE_REGION, - resource: 'parameter', - resourceName: parameterNamePrefix + '*', - }); - - const resourceType = 'Custom::CrossRegionStringParameterReader'; - const serviceToken = CustomResourceProvider.getOrCreate(this, resourceType, { - codeDirectory: path.join(__dirname, 'edge-function'), - runtime: CustomResourceProviderRuntime.NODEJS_12, - policyStatements: [{ - Effect: 'Allow', - Resource: parameterArnPrefix, - Action: ['ssm:GetParameter'], - }], - }); - const resource = new CustomResource(this, 'ArnReader', { - resourceType: resourceType, - serviceToken, - properties: { - Region: EdgeFunction.EDGE_REGION, - ParameterName: parameterName, - // This is used to determine when the function has changed, to refresh the ARN from the custom resource. - RefreshToken: calculateFunctionHash(edgeFunction), - }, - }); - - return resource.getAttString('FunctionArn'); - } - - private edgeStack(): Stack { - const stage = this.node.root; - if (!stage || !Stage.isStage(stage)) { - throw new Error('stacks which use EdgeFunctions must be part of a CDK app or stage'); - } - const region = this.env.region; - if (Token.isUnresolved(region)) { - throw new Error('stacks which use EdgeFunctions must have an explicitly set region'); - } - - const edgeStackId = `edge-lambda-stack-${region}`; - let edgeStack = stage.node.tryFindChild(edgeStackId) as Stack; - if (!edgeStack) { - edgeStack = new Stack(stage, edgeStackId, { - synthesizer: crossRegionSupportSynthesizer(this.stack), - env: { region: EdgeFunction.EDGE_REGION }, - }); - } - this.stack.addDependency(edgeStack); - return edgeStack; - } -} - -/** Result of creating an in-region or cross-region function */ -interface FunctionConfig { - readonly edgeFunction: lambda.Function; - readonly edgeArn: string; - readonly functionStack: Stack; -} - -// Stolen (and modified) from `@aws-cdk/aws-codepipeline`'s `Pipeline`. -function crossRegionSupportSynthesizer(stack: Stack): IStackSynthesizer | undefined { - // If we have the new synthesizer we need a bootstrapless copy of it, - // because we don't want to require bootstrapping the environment - // of the account in this replication region. - // Otherwise, return undefined to use the default. - const scopeStackSynthesizer = stack.synthesizer; - return (scopeStackSynthesizer instanceof DefaultStackSynthesizer) - ? new BootstraplessSynthesizer({ - deployRoleArn: scopeStackSynthesizer.deployRoleArn, - cloudFormationExecutionRoleArn: scopeStackSynthesizer.cloudFormationExecutionRoleArn, - }) - : undefined; -} - -function addEdgeLambdaToRoleTrustStatement(role: iam.IRole) { - if (role instanceof iam.Role && role.assumeRolePolicy) { - const statement = new iam.PolicyStatement(); - const edgeLambdaServicePrincipal = new iam.ServicePrincipal('edgelambda.amazonaws.com'); - statement.addPrincipals(edgeLambdaServicePrincipal); - statement.addActions(edgeLambdaServicePrincipal.assumeRoleAction); - role.assumeRolePolicy.addStatements(statement); - } -} - -// Stolen from @aws-lambda/lib/function-hash.ts, which isn't currently exported. -// This should be DRY'ed up (exported by @aws-lambda) before this is marked as stable. -function calculateFunctionHash(fn: lambda.Function) { - const stack = Stack.of(fn); - const functionResource = fn.node.defaultChild as CfnResource; - // render the cloudformation resource from this function - const config = stack.resolve((functionResource as any)._toCloudFormation()); - - const hash = crypto.createHash('md5'); - hash.update(JSON.stringify(config)); - return hash.digest('hex'); -} diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js deleted file mode 100644 index b3bf920efd2e3..0000000000000 --- a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function/index.js +++ /dev/null @@ -1,19 +0,0 @@ -var AWS = require('aws-sdk'); - -exports.handler = async function (event) { - const props = event.ResourceProperties; - - console.info(`Reading function ARN from SSM parameter ${props.ParameterName} in region ${props.Region}`); - - if (event.RequestType === 'Create' || event.RequestType === 'Update') { - const ssm = new AWS.SSM({ region: props.Region }); - const ssmParameter = await ssm.getParameter({ Name: props.ParameterName }).promise(); - console.info('Response: %j', ssmParameter); - const functionArn = ssmParameter.Parameter.Value; - return { - Data: { - FunctionArn: functionArn, - }, - }; - } -}; diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts b/packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts deleted file mode 100644 index a1362556b10ea..0000000000000 --- a/packages/@aws-cdk/aws-cloudfront/lib/experimental/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './edge-function'; diff --git a/packages/@aws-cdk/aws-cloudfront/lib/index.ts b/packages/@aws-cdk/aws-cloudfront/lib/index.ts index b0bd550231be3..e04d76a72e48d 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/index.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/index.ts @@ -6,7 +6,5 @@ export * from './origin_access_identity'; export * from './origin-request-policy'; export * from './web_distribution'; -export * as experimental from './experimental'; - // AWS::CloudFront CloudFormation Resources: export * from './cloudfront.generated'; diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index d8f146d502e46..2aa923d6dd5db 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -74,7 +74,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -83,26 +83,20 @@ }, "dependencies": { "@aws-cdk/aws-certificatemanager": "0.0.0", - "@aws-cdk/aws-cloudwatch": "0.0.0", - "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", "constructs": "^3.2.0" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-certificatemanager": "0.0.0", - "@aws-cdk/aws-cloudwatch": "0.0.0", - "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", "constructs": "^3.2.0" }, diff --git a/packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts b/packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts deleted file mode 100644 index faeffde9edc51..0000000000000 --- a/packages/@aws-cdk/aws-cloudfront/test/experimental/edge-function.test.ts +++ /dev/null @@ -1,202 +0,0 @@ -import '@aws-cdk/assert/jest'; -import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; -import * as iam from '@aws-cdk/aws-iam'; -import * as lambda from '@aws-cdk/aws-lambda'; -import * as cdk from '@aws-cdk/core'; -import * as cloudfront from '../../lib'; - -let app: cdk.App; -let stack: cdk.Stack; - -beforeEach(() => { - app = new cdk.App(); - stack = new cdk.Stack(app, 'Stack', { - env: { account: '111111111111', region: 'testregion' }, - }); -}); - -describe('stacks', () => { - test('creates a custom resource and supporting resources in main stack', () => { - new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); - - expect(stack).toHaveResource('AWS::IAM::Role', { - AssumeRolePolicyDocument: { - Statement: [{ - Action: 'sts:AssumeRole', - Effect: 'Allow', - Principal: { Service: 'lambda.amazonaws.com' }, - }], - Version: '2012-10-17', - }, - ManagedPolicyArns: [ - { 'Fn::Sub': 'arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole' }, - ], - Policies: [{ - PolicyName: 'Inline', - PolicyDocument: { - Version: '2012-10-17', - Statement: [{ - Effect: 'Allow', - Resource: { - 'Fn::Join': ['', ['arn:', { Ref: 'AWS::Partition' }, ':ssm:us-east-1:111111111111:parameter/EdgeFunctionArn*']], - }, - Action: ['ssm:GetParameter'], - }], - }, - }], - }); - expect(stack).toHaveResourceLike('AWS::Lambda::Function', { - Handler: '__entrypoint__.handler', - Role: { - 'Fn::GetAtt': ['CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825', 'Arn'], - }, - }); - expect(stack).toHaveResource('Custom::CrossRegionStringParameterReader', { - ServiceToken: { - 'Fn::GetAtt': ['CustomCrossRegionStringParameterReaderCustomResourceProviderHandler65B5F33A', 'Arn'], - }, - Region: 'us-east-1', - ParameterName: 'EdgeFunctionArnMyFn', - }); - }); - - test('creates the actual function and supporting resources in us-east-1 stack', () => { - new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); - - const fnStack = getFnStack(); - - expect(fnStack).toHaveResource('AWS::IAM::Role', { - AssumeRolePolicyDocument: { - Statement: [ - { - Action: 'sts:AssumeRole', - Effect: 'Allow', - Principal: { Service: 'lambda.amazonaws.com' }, - }, - { - Action: 'sts:AssumeRole', - Effect: 'Allow', - Principal: { Service: 'edgelambda.amazonaws.com' }, - }, - ], - Version: '2012-10-17', - }, - ManagedPolicyArns: [ - { 'Fn::Join': ['', ['arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole']] }, - ], - }); - expect(fnStack).toHaveResource('AWS::Lambda::Function', { - Code: { ZipFile: 'foo' }, - Handler: 'index.handler', - Role: { 'Fn::GetAtt': ['MyFnServiceRoleF3016589', 'Arn'] }, - Runtime: 'nodejs12.x', - }); - expect(fnStack).toHaveResource('AWS::Lambda::Version', { - FunctionName: { Ref: 'MyFn6F8F742F' }, - }); - expect(fnStack).toHaveResource('AWS::SSM::Parameter', { - Type: 'String', - Value: { Ref: 'MyFnCurrentVersion309B29FC29686ce94039b6e08d1645be854b3ac9' }, - Name: 'EdgeFunctionArnMyFn', - }); - }); - - test('creates minimal constructs if scope region is us-east-1', () => { - app = new cdk.App(); - stack = new cdk.Stack(app, 'Stack', { - env: { account: '111111111111', region: 'us-east-1' }, - }); - new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); - - expect(stack).toHaveResource('AWS::IAM::Role', { - AssumeRolePolicyDocument: { - Statement: [ - { - Action: 'sts:AssumeRole', - Effect: 'Allow', - Principal: { Service: 'lambda.amazonaws.com' }, - }, - { - Action: 'sts:AssumeRole', - Effect: 'Allow', - Principal: { Service: 'edgelambda.amazonaws.com' }, - }, - ], - Version: '2012-10-17', - }, - ManagedPolicyArns: [ - { 'Fn::Join': ['', ['arn:', { Ref: 'AWS::Partition' }, ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole']] }, - ], - }); - expect(stack).toHaveResource('AWS::Lambda::Function', { - Code: { ZipFile: 'foo' }, - Handler: 'index.handler', - Role: { 'Fn::GetAtt': ['MyFnServiceRole3F9D41E1', 'Arn'] }, - Runtime: 'nodejs12.x', - }); - expect(stack).toHaveResource('AWS::Lambda::Version', { - FunctionName: { Ref: 'MyFn223608AD' }, - }); - }); - - test('only one cross-region stack is created for multiple functions', () => { - new cloudfront.experimental.EdgeFunction(stack, 'MyFn1', defaultEdgeFunctionProps()); - new cloudfront.experimental.EdgeFunction(stack, 'MyFn2', defaultEdgeFunctionProps()); - - const fnStack = getFnStack(); - expect(fnStack).toCountResources('AWS::Lambda::Function', 2); - }); -}); - -test('addAlias() creates alias in function stack', () => { - const fn = new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); - - fn.addAlias('MyCurrentAlias'); - - const fnStack = getFnStack(); - expect(fnStack).toHaveResourceLike('AWS::Lambda::Alias', { - Name: 'MyCurrentAlias', - }); -}); - -test('addPermission() creates permissions in function stack', () => { - const fn = new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); - - fn.addPermission('MyPerms', { - action: 'lambda:InvokeFunction', - principal: new iam.AccountPrincipal('123456789012'), - }); - - const fnStack = getFnStack(); - expect(fnStack).toHaveResourceLike('AWS::Lambda::Permission', { - Action: 'lambda:InvokeFunction', - Principal: '123456789012', - }); -}); - -test('metric methods', () => { - const fn = new cloudfront.experimental.EdgeFunction(stack, 'MyFn', defaultEdgeFunctionProps()); - - const metrics = new Array(); - metrics.push(fn.metricDuration()); - metrics.push(fn.metricErrors()); - metrics.push(fn.metricInvocations()); - metrics.push(fn.metricThrottles()); - - for (const metric of metrics) { - expect(metric.namespace).toEqual('AWS/Lambda'); - expect(metric.region).toEqual('us-east-1'); - } -}); - -function defaultEdgeFunctionProps() { - return { - code: lambda.Code.fromInline('foo'), - handler: 'index.handler', - runtime: lambda.Runtime.NODEJS_12_X, - }; -} - -function getFnStack(region: string = 'testregion'): cdk.Stack { - return app.node.findChild(`edge-lambda-stack-${region}`) as cdk.Stack; -} diff --git a/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json b/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json deleted file mode 100644 index aafb7b7e3982f..0000000000000 --- a/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.expected.json +++ /dev/null @@ -1,261 +0,0 @@ -[ - { - "Resources": { - "LambdaArnReaderAB4FC772": { - "Type": "Custom::CrossRegionStringParameterReader", - "Properties": { - "ServiceToken": { - "Fn::GetAtt": [ - "CustomCrossRegionStringParameterReaderCustomResourceProviderHandler65B5F33A", - "Arn" - ] - }, - "Region": "us-east-1", - "ParameterName": "EdgeFunctionArnLambda", - "RefreshToken": "4412ddb0ae449da20173ca211c51fddc" - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - } - ] - }, - "ManagedPolicyArns": [ - { - "Fn::Sub": "arn:${AWS::Partition}:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - } - ], - "Policies": [ - { - "PolicyName": "Inline", - "PolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":ssm:us-east-1:", - { - "Ref": "AWS::AccountId" - }, - ":parameter/EdgeFunctionArn*" - ] - ] - }, - "Action": [ - "ssm:GetParameter" - ] - } - ] - } - } - ] - } - }, - "CustomCrossRegionStringParameterReaderCustomResourceProviderHandler65B5F33A": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Ref": "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3BucketF1BC72A7" - }, - "S3Key": { - "Fn::Join": [ - "", - [ - { - "Fn::Select": [ - 0, - { - "Fn::Split": [ - "||", - { - "Ref": "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3VersionKey7AD83AC7" - } - ] - } - ] - }, - { - "Fn::Select": [ - 1, - { - "Fn::Split": [ - "||", - { - "Ref": "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3VersionKey7AD83AC7" - } - ] - } - ] - } - ] - ] - } - }, - "Timeout": 900, - "MemorySize": 128, - "Handler": "__entrypoint__.handler", - "Role": { - "Fn::GetAtt": [ - "CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825", - "Arn" - ] - }, - "Runtime": "nodejs12.x" - }, - "DependsOn": [ - "CustomCrossRegionStringParameterReaderCustomResourceProviderRole71CD6825" - ] - }, - "DistB3B78991": { - "Type": "AWS::CloudFront::Distribution", - "Properties": { - "DistributionConfig": { - "DefaultCacheBehavior": { - "CachePolicyId": "4135ea2d-6df8-44a3-9df3-4b5a84be39ad", - "Compress": true, - "LambdaFunctionAssociations": [ - { - "EventType": "origin-request", - "LambdaFunctionARN": { - "Fn::GetAtt": [ - "LambdaArnReaderAB4FC772", - "FunctionArn" - ] - } - } - ], - "TargetOriginId": "integdistributionlambdacrossregionDistOrigin167A054D5", - "ViewerProtocolPolicy": "allow-all" - }, - "Enabled": true, - "HttpVersion": "http2", - "IPV6Enabled": true, - "Origins": [ - { - "CustomOriginConfig": { - "OriginProtocolPolicy": "https-only" - }, - "DomainName": "www.example.com", - "Id": "integdistributionlambdacrossregionDistOrigin167A054D5" - } - ] - } - } - } - }, - "Parameters": { - "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3BucketF1BC72A7": { - "Type": "String", - "Description": "S3 bucket for asset \"45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241\"" - }, - "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241S3VersionKey7AD83AC7": { - "Type": "String", - "Description": "S3 key for asset version \"45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241\"" - }, - "AssetParameters45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241ArtifactHash1B3D1B80": { - "Type": "String", - "Description": "Artifact hash for asset \"45b7ed524ce2b119dd4f2b8642ae8bfaf0df45bc6bd705072ae4ee6d1a999241\"" - } - } - }, - { - "Resources": { - "LambdaServiceRoleA8ED4D3B": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "lambda.amazonaws.com" - } - }, - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "edgelambda.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - }, - "ManagedPolicyArns": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" - ] - ] - } - ] - } - }, - "LambdaD247545B": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "ZipFile": "foo" - }, - "Handler": "index.handler", - "Role": { - "Fn::GetAtt": [ - "LambdaServiceRoleA8ED4D3B", - "Arn" - ] - }, - "Runtime": "nodejs10.x" - }, - "DependsOn": [ - "LambdaServiceRoleA8ED4D3B" - ] - }, - "LambdaCurrentVersionDF706F6A97fb843e9bd06fcd2bb15eeace80e13e": { - "Type": "AWS::Lambda::Version", - "Properties": { - "FunctionName": { - "Ref": "LambdaD247545B" - } - } - }, - "LambdaParameterCDCFFB68": { - "Type": "AWS::SSM::Parameter", - "Properties": { - "Type": "String", - "Value": { - "Ref": "LambdaCurrentVersionDF706F6A97fb843e9bd06fcd2bb15eeace80e13e" - }, - "Name": "EdgeFunctionArnLambda" - } - } - } - } -] \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts b/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts deleted file mode 100644 index 5814ab3d6ce59..0000000000000 --- a/packages/@aws-cdk/aws-cloudfront/test/integ.distribution-lambda-cross-region.ts +++ /dev/null @@ -1,27 +0,0 @@ -/// !cdk-integ * -import * as lambda from '@aws-cdk/aws-lambda'; -import * as cdk from '@aws-cdk/core'; -import * as cloudfront from '../lib'; -import { TestOrigin } from './test-origin'; - -const app = new cdk.App(); -const stack = new cdk.Stack(app, 'integ-distribution-lambda-cross-region', { env: { region: 'eu-west-1' } }); - -const lambdaFunction = new cloudfront.experimental.EdgeFunction(stack, 'Lambda', { - code: lambda.Code.fromInline('foo'), - handler: 'index.handler', - runtime: lambda.Runtime.NODEJS_10_X, -}); - -new cloudfront.Distribution(stack, 'Dist', { - defaultBehavior: { - origin: new TestOrigin('www.example.com'), - cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED, - edgeLambdas: [{ - functionVersion: lambdaFunction.currentVersion, - eventType: cloudfront.LambdaEdgeEventType.ORIGIN_REQUEST, - }], - }, -}); - -app.synth(); diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index c2c820dca66d2..6c2185d179185 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -74,7 +74,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts b/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts index 5c1daacb54dd3..ae8fd29424786 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/alarm.ts @@ -179,9 +179,9 @@ export class Alarm extends AlarmBase { // Actions actionsEnabled: props.actionsEnabled, - alarmActions: Lazy.list({ produce: () => this.alarmActionArns }), - insufficientDataActions: Lazy.list({ produce: (() => this.insufficientDataActionArns) }), - okActions: Lazy.list({ produce: () => this.okActionArns }), + alarmActions: Lazy.listValue({ produce: () => this.alarmActionArns }), + insufficientDataActions: Lazy.listValue({ produce: (() => this.insufficientDataActionArns) }), + okActions: Lazy.listValue({ produce: () => this.okActionArns }), // Metric ...metricProps, diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts b/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts index 8b9d61c99ea82..8d625ee16f7f6 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/composite-alarm.ts @@ -91,7 +91,7 @@ export class CompositeAlarm extends AlarmBase { constructor(scope: Construct, id: string, props: CompositeAlarmProps) { super(scope, id, { - physicalName: props.compositeAlarmName ?? Lazy.string({ produce: () => this.generateUniqueId() }), + physicalName: props.compositeAlarmName ?? Lazy.stringValue({ produce: () => this.generateUniqueId() }), }); if (props.alarmRule.renderAlarmRule().length > 10240) { @@ -105,9 +105,9 @@ export class CompositeAlarm extends AlarmBase { alarmRule: this.alarmRule, alarmDescription: props.alarmDescription, actionsEnabled: props.actionsEnabled, - alarmActions: Lazy.list({ produce: () => this.alarmActionArns }), - insufficientDataActions: Lazy.list({ produce: (() => this.insufficientDataActionArns) }), - okActions: Lazy.list({ produce: () => this.okActionArns }), + alarmActions: Lazy.listValue({ produce: () => this.alarmActionArns }), + insufficientDataActions: Lazy.listValue({ produce: (() => this.insufficientDataActionArns) }), + okActions: Lazy.listValue({ produce: () => this.okActionArns }), }); this.alarmName = this.getResourceNameAttribute(alarm.ref); diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts b/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts index 91813d592463c..f4a17d634f32f 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/dashboard.ts @@ -94,7 +94,7 @@ export class Dashboard extends Resource { new CfnDashboard(this, 'Resource', { dashboardName: this.physicalName, - dashboardBody: Lazy.string({ + dashboardBody: Lazy.stringValue({ produce: () => { const column = new Column(...this.rows); column.position(0, 0); diff --git a/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts b/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts index 5f33babced96a..7f9236319d7bb 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/build-spec.ts @@ -63,7 +63,7 @@ class ObjectBuildSpec extends BuildSpec { public toBuildSpec(): string { // We have to pretty-print the buildspec, otherwise // CodeBuild will not recognize it as an inline buildspec. - return Lazy.uncachedString({ + return Lazy.stringValue({ produce: (ctx: IResolveContext) => Stack.of(ctx.scope).toJsonString(this.spec, 2), }); diff --git a/packages/@aws-cdk/aws-codebuild/lib/project.ts b/packages/@aws-cdk/aws-codebuild/lib/project.ts index 7810c82287f4c..8973dc8f5ea04 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/project.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/project.ts @@ -764,18 +764,18 @@ export class Project extends ProjectBase { artifacts: artifactsConfig.artifactsProperty, serviceRole: this.role.roleArn, environment: this.renderEnvironment(props.environment, environmentVariables), - fileSystemLocations: Lazy.any({ produce: () => this.renderFileSystemLocations() }), + fileSystemLocations: Lazy.anyValue({ produce: () => this.renderFileSystemLocations() }), // lazy, because we have a setter for it in setEncryptionKey // The 'alias/aws/s3' default is necessary because leaving the `encryptionKey` field // empty will not remove existing encryptionKeys during an update (ref. t/D17810523) - encryptionKey: Lazy.string({ produce: () => this._encryptionKey ? this._encryptionKey.keyArn : 'alias/aws/s3' }), + encryptionKey: Lazy.stringValue({ produce: () => this._encryptionKey ? this._encryptionKey.keyArn : 'alias/aws/s3' }), badgeEnabled: props.badge, cache: cache._toCloudFormation(), name: this.physicalName, timeoutInMinutes: props.timeout && props.timeout.toMinutes(), - secondarySources: Lazy.any({ produce: () => this.renderSecondarySources() }), - secondarySourceVersions: Lazy.any({ produce: () => this.renderSecondarySourceVersions() }), - secondaryArtifacts: Lazy.any({ produce: () => this.renderSecondaryArtifacts() }), + secondarySources: Lazy.anyValue({ produce: () => this.renderSecondarySources() }), + secondarySourceVersions: Lazy.anyValue({ produce: () => this.renderSecondarySourceVersions() }), + secondaryArtifacts: Lazy.anyValue({ produce: () => this.renderSecondaryArtifacts() }), triggers: sourceConfig.buildTriggers, sourceVersion: sourceConfig.sourceVersion, vpcConfig: this.configureVpc(props), diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index ab06f3d6ae50d..d43252c66587d 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -80,7 +80,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-codecommit/lib/repository.ts b/packages/@aws-cdk/aws-codecommit/lib/repository.ts index dbb4d3064c9e9..7345d669ed763 100644 --- a/packages/@aws-cdk/aws-codecommit/lib/repository.ts +++ b/packages/@aws-cdk/aws-codecommit/lib/repository.ts @@ -335,7 +335,7 @@ export class Repository extends RepositoryBase { this.repository = new CfnRepository(this, 'Resource', { repositoryName: props.repositoryName, repositoryDescription: props.description, - triggers: Lazy.any({ produce: () => this.triggers }, { omitEmptyArray: true }), + triggers: Lazy.anyValue({ produce: () => this.triggers }, { omitEmptyArray: true }), }); this.repositoryName = this.getResourceNameAttribute(this.repository.attrName); diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index d75a5b1595099..ba05c7888b5ac 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -80,7 +80,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts b/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts index 0d6c6a347886a..c8b8152356091 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-group.ts @@ -170,8 +170,8 @@ export class LambdaDeploymentGroup extends cdk.Resource implements ILambdaDeploy deploymentType: 'BLUE_GREEN', deploymentOption: 'WITH_TRAFFIC_CONTROL', }, - alarmConfiguration: cdk.Lazy.any({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), - autoRollbackConfiguration: cdk.Lazy.any({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), + alarmConfiguration: cdk.Lazy.anyValue({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), + autoRollbackConfiguration: cdk.Lazy.anyValue({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), }); this.deploymentGroupName = this.getResourceNameAttribute(resource.ref); @@ -193,8 +193,8 @@ export class LambdaDeploymentGroup extends cdk.Resource implements ILambdaDeploy codeDeployLambdaAliasUpdate: { applicationName: this.application.applicationName, deploymentGroupName: resource.ref, - beforeAllowTrafficHook: cdk.Lazy.string({ produce: () => this.preHook && this.preHook.functionName }), - afterAllowTrafficHook: cdk.Lazy.string({ produce: () => this.postHook && this.postHook.functionName }), + beforeAllowTrafficHook: cdk.Lazy.stringValue({ produce: () => this.preHook && this.preHook.functionName }), + afterAllowTrafficHook: cdk.Lazy.stringValue({ produce: () => this.postHook && this.postHook.functionName }), }, }; diff --git a/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts b/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts index eb4bbafade216..9a3d912bb1e0d 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/server/deployment-group.ts @@ -291,7 +291,7 @@ export class ServerDeploymentGroup extends ServerDeploymentGroupBase { serviceRoleArn: this.role.roleArn, deploymentConfigName: props.deploymentConfig && props.deploymentConfig.deploymentConfigName, - autoScalingGroups: cdk.Lazy.list({ produce: () => this._autoScalingGroups.map(asg => asg.autoScalingGroupName) }, { omitEmpty: true }), + autoScalingGroups: cdk.Lazy.listValue({ produce: () => this._autoScalingGroups.map(asg => asg.autoScalingGroupName) }, { omitEmpty: true }), loadBalancerInfo: this.loadBalancerInfo(props.loadBalancer), deploymentStyle: props.loadBalancer === undefined ? undefined @@ -300,8 +300,8 @@ export class ServerDeploymentGroup extends ServerDeploymentGroupBase { }, ec2TagSet: this.ec2TagSet(props.ec2InstanceTags), onPremisesTagSet: this.onPremiseTagSet(props.onPremiseInstanceTags), - alarmConfiguration: cdk.Lazy.any({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), - autoRollbackConfiguration: cdk.Lazy.any({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), + alarmConfiguration: cdk.Lazy.anyValue({ produce: () => renderAlarmConfiguration(this.alarms, props.ignorePollAlarmsFailure) }), + autoRollbackConfiguration: cdk.Lazy.anyValue({ produce: () => renderAutoRollbackConfiguration(this.alarms, props.autoRollback) }), }); this.deploymentGroupName = this.getResourceNameAttribute(resource.ref); diff --git a/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts b/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts index 0537b469c17d5..d47c994c283e4 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts +++ b/packages/@aws-cdk/aws-codeguruprofiler/lib/profiling-group.ts @@ -177,7 +177,7 @@ export class ProfilingGroup extends ProfilingGroupBase { constructor(scope: Construct, id: string, props: ProfilingGroupProps = {}) { super(scope, id, { - physicalName: props.profilingGroupName ?? Lazy.string({ produce: () => this.generateUniqueId() }), + physicalName: props.profilingGroupName ?? Lazy.stringValue({ produce: () => this.generateUniqueId() }), }); const profilingGroup = new CfnProfilingGroup(this, 'ProfilingGroup', { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts index b3ce90e2aa793..e14f3184011a0 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts @@ -24,7 +24,7 @@ export abstract class Action implements codepipeline.IAction { protected constructor(actionProperties: codepipeline.ActionProperties) { this.customerProvidedNamespace = actionProperties.variablesNamespace; - this.namespaceOrToken = Lazy.string({ + this.namespaceOrToken = Lazy.stringValue({ produce: () => { // make sure the action was bound (= added to a pipeline) if (this.actualNamespace !== undefined) { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts index cedc1db5ca90b..53d789b665262 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts @@ -174,7 +174,7 @@ export class CodeBuildAction extends Action { }; if ((this.actionProperties.inputs || []).length > 1) { // lazy, because the Artifact name might be generated lazily - configuration.PrimarySource = cdk.Lazy.string({ produce: () => this.props.input.artifactName }); + configuration.PrimarySource = cdk.Lazy.stringValue({ produce: () => this.props.input.artifactName }); } return { configuration, diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts index 33bc07c148b1e..771a1b8e3e448 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts @@ -184,12 +184,12 @@ export class CodeDeployEcsDeployAction extends Action { ApplicationName: this.actionProps.deploymentGroup.application.applicationName, DeploymentGroupName: this.actionProps.deploymentGroup.deploymentGroupName, - TaskDefinitionTemplateArtifact: Lazy.string({ produce: () => taskDefinitionTemplateArtifact.artifactName }), + TaskDefinitionTemplateArtifact: Lazy.stringValue({ produce: () => taskDefinitionTemplateArtifact.artifactName }), TaskDefinitionTemplatePath: this.actionProps.taskDefinitionTemplateFile ? this.actionProps.taskDefinitionTemplateFile.fileName : 'taskdef.json', - AppSpecTemplateArtifact: Lazy.string({ produce: () => appSpecTemplateArtifact.artifactName }), + AppSpecTemplateArtifact: Lazy.stringValue({ produce: () => appSpecTemplateArtifact.artifactName }), AppSpecTemplatePath: this.actionProps.appSpecTemplateFile ? this.actionProps.appSpecTemplateFile.fileName : 'appspec.yaml', @@ -199,7 +199,7 @@ export class CodeDeployEcsDeployAction extends Action { if (this.actionProps.containerImageInputs) { for (let i = 1; i <= this.actionProps.containerImageInputs.length; i++) { const imageInput = this.actionProps.containerImageInputs[i - 1]; - actionConfig.configuration[`Image${i}ArtifactName`] = Lazy.string({ produce: () => imageInput.input.artifactName }); + actionConfig.configuration[`Image${i}ArtifactName`] = Lazy.stringValue({ produce: () => imageInput.input.artifactName }); actionConfig.configuration[`Image${i}ContainerName`] = imageInput.taskDefinitionPlaceholder ? imageInput.taskDefinitionPlaceholder : 'IMAGE'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts index 9aa0ac65a72c9..520af74ba8af2 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/codecommit/test.codecommit-source-action.ts @@ -240,7 +240,7 @@ export = { repository: new codecommit.Repository(stack, 'R', { repositoryName: 'repository', }), - branch: Lazy.string({ produce: () => 'my-branch' }), + branch: Lazy.stringValue({ produce: () => 'my-branch' }), output: sourceOutput, }), ], @@ -291,7 +291,7 @@ export = { repository: new codecommit.Repository(stack, 'R', { repositoryName: 'repository', }), - branch: Lazy.string({ produce: () => 'my-branch' }), + branch: Lazy.stringValue({ produce: () => 'my-branch' }), output: sourceOutput, eventRole: triggerEventTestRole, }); diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts index 035d8ddb63a38..84af1c50a7583 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/lambda/test.lambda-invoke-action.ts @@ -39,7 +39,7 @@ export = { 'properly resolves any Tokens passed in userParameters'(test: Test) { const stack = stackIncludingLambdaInvokeCodePipeline({ userParams: { - key: Lazy.string({ produce: () => Aws.REGION }), + key: Lazy.stringValue({ produce: () => Aws.REGION }), }, }); diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts index fc069cffae6d3..6b9dc716961e5 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/s3/test.s3-source-action.ts @@ -182,13 +182,13 @@ export = { const bucket = new s3.Bucket(stack, 'MyBucket'); const sourceStage = minimalPipeline(stack, { bucket, - bucketKey: Lazy.string({ produce: () => 'my-bucket-key1' }), + bucketKey: Lazy.stringValue({ produce: () => 'my-bucket-key1' }), trigger: cpactions.S3Trigger.EVENTS, }); sourceStage.addAction(new cpactions.S3SourceAction({ actionName: 'Source2', bucket, - bucketKey: Lazy.string({ produce: () => 'my-bucket-key2' }), + bucketKey: Lazy.stringValue({ produce: () => 'my-bucket-key2' }), trigger: cpactions.S3Trigger.EVENTS, output: new codepipeline.Artifact(), })); diff --git a/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts b/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts index 5317676a5f0fe..487cc7c422189 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/artifact.ts @@ -132,17 +132,17 @@ export class ArtifactPath { public get location() { const artifactName = this.artifact.artifactName ? this.artifact.artifactName - : Lazy.string({ produce: () => this.artifact.artifactName }); + : Lazy.stringValue({ produce: () => this.artifact.artifactName }); return `${artifactName}::${this.fileName}`; } } function artifactAttribute(artifact: Artifact, attributeName: string) { - const lazyArtifactName = Lazy.string({ produce: () => artifact.artifactName }); + const lazyArtifactName = Lazy.stringValue({ produce: () => artifact.artifactName }); return Token.asString({ 'Fn::GetArtifactAtt': [lazyArtifactName, attributeName] }); } function artifactGetParam(artifact: Artifact, jsonFile: string, keyName: string) { - const lazyArtifactName = Lazy.string({ produce: () => artifact.artifactName }); + const lazyArtifactName = Lazy.stringValue({ produce: () => artifact.artifactName }); return Token.asString({ 'Fn::GetParam': [lazyArtifactName, jsonFile, keyName] }); } diff --git a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts index ba7fd8d87233d..e59de17b454b3 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts @@ -283,9 +283,9 @@ export class Pipeline extends PipelineBase { }); const codePipeline = new CfnPipeline(this, 'Resource', { - artifactStore: Lazy.any({ produce: () => this.renderArtifactStoreProperty() }), - artifactStores: Lazy.any({ produce: () => this.renderArtifactStoresProperty() }), - stages: Lazy.any({ produce: () => this.renderStages() }), + artifactStore: Lazy.anyValue({ produce: () => this.renderArtifactStoreProperty() }), + artifactStores: Lazy.anyValue({ produce: () => this.renderArtifactStoresProperty() }), + stages: Lazy.anyValue({ produce: () => this.renderStages() }), roleArn: this.role.roleArn, restartExecutionOnUpdate: props && props.restartExecutionOnUpdate, name: this.physicalName, diff --git a/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts b/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts index e9ed5a6995f02..a0f16972e1575 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts @@ -142,8 +142,8 @@ export class Stage implements IStage { } private renderAction(action: FullActionDescriptor): CfnPipeline.ActionDeclarationProperty { - const outputArtifacts = cdk.Lazy.any({ produce: () => this.renderArtifacts(action.outputs) }, { omitEmptyArray: true }); - const inputArtifacts = cdk.Lazy.any({ produce: () => this.renderArtifacts(action.inputs) }, { omitEmptyArray: true }); + const outputArtifacts = cdk.Lazy.anyValue({ produce: () => this.renderArtifacts(action.outputs) }, { omitEmptyArray: true }); + const inputArtifacts = cdk.Lazy.anyValue({ produce: () => this.renderArtifacts(action.inputs) }, { omitEmptyArray: true }); return { name: action.actionName, inputArtifacts, diff --git a/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts b/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts index 8e8c2652caa9c..ab2f56471f1dd 100644 --- a/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline/test/fake-source-action.ts @@ -31,7 +31,7 @@ export class FakeSourceAction implements codepipeline.IAction { outputs: [props.output, ...props.extraOutputs || []], }; this.variables = { - firstVariable: Lazy.string({ produce: () => `#{${this.actionProperties.variablesNamespace}.FirstVariable}` }), + firstVariable: Lazy.stringValue({ produce: () => `#{${this.actionProperties.variablesNamespace}.FirstVariable}` }), }; } diff --git a/packages/@aws-cdk/aws-cognito/lib/user-pool.ts b/packages/@aws-cdk/aws-cognito/lib/user-pool.ts index 3730c7c97a301..0e652fb2c0b76 100644 --- a/packages/@aws-cdk/aws-cognito/lib/user-pool.ts +++ b/packages/@aws-cdk/aws-cognito/lib/user-pool.ts @@ -736,7 +736,7 @@ export class UserPool extends UserPoolBase { usernameAttributes: signIn.usernameAttrs, aliasAttributes: signIn.aliasAttrs, autoVerifiedAttributes: signIn.autoVerifyAttrs, - lambdaConfig: Lazy.any({ produce: () => undefinedIfNoKeys(this.triggers) }), + lambdaConfig: Lazy.anyValue({ produce: () => undefinedIfNoKeys(this.triggers) }), smsConfiguration: this.smsConfiguration(props), adminCreateUserConfig, emailVerificationMessage, diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 785b16e45bb37..e41f34a5206af 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -89,6 +89,7 @@ "@aws-cdk/custom-resources": "0.0.0", "constructs": "^3.2.0", "punycode": "^2.1.1" + }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { diff --git a/packages/@aws-cdk/aws-config/lib/managed-rules.ts b/packages/@aws-cdk/aws-config/lib/managed-rules.ts index 4bc7b7fa8c015..cfbe2645367c6 100644 --- a/packages/@aws-cdk/aws-config/lib/managed-rules.ts +++ b/packages/@aws-cdk/aws-config/lib/managed-rules.ts @@ -78,7 +78,7 @@ export class CloudFormationStackDriftDetectionCheck extends ManagedRule { ...props, identifier: ManagedRuleIdentifiers.CLOUDFORMATION_STACK_DRIFT_DETECTION_CHECK, inputParameters: { - cloudformationRoleArn: Lazy.string({ produce: () => this.role.roleArn }), + cloudformationRoleArn: Lazy.stringValue({ produce: () => this.role.roleArn }), }, }); diff --git a/packages/@aws-cdk/aws-config/lib/rule.ts b/packages/@aws-cdk/aws-config/lib/rule.ts index 2b6ad35d08859..ac4044ac4ae99 100644 --- a/packages/@aws-cdk/aws-config/lib/rule.ts +++ b/packages/@aws-cdk/aws-config/lib/rule.ts @@ -265,7 +265,7 @@ export class ManagedRule extends RuleNew { description: props.description, inputParameters: props.inputParameters, maximumExecutionFrequency: props.maximumExecutionFrequency, - scope: Lazy.any({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) + scope: Lazy.anyValue({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) source: { owner: 'AWS', sourceIdentifier: props.identifier, @@ -371,7 +371,7 @@ export class CustomRule extends RuleNew { description: props.description, inputParameters: props.inputParameters, maximumExecutionFrequency: props.maximumExecutionFrequency, - scope: Lazy.any({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) + scope: Lazy.anyValue({ produce: () => renderScope(this.ruleScope) }), // scope can use values such as stack id (see CloudFormationStackDriftDetectionCheck) source: { owner: 'CUSTOM_LAMBDA', sourceDetails, diff --git a/packages/@aws-cdk/aws-databrew/.eslintrc.js b/packages/@aws-cdk/aws-databrew/.eslintrc.js deleted file mode 100644 index 61dd8dd001f63..0000000000000 --- a/packages/@aws-cdk/aws-databrew/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-databrew/.gitignore b/packages/@aws-cdk/aws-databrew/.gitignore deleted file mode 100644 index 62ebc95d75ce6..0000000000000 --- a/packages/@aws-cdk/aws-databrew/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*.js -*.js.map -*.d.ts -tsconfig.json -node_modules -*.generated.ts -dist -.jsii - -.LAST_BUILD -.nyc_output -coverage -.nycrc -.LAST_PACKAGE -*.snk -nyc.config.js -!.eslintrc.js -!jest.config.js -junit.xml diff --git a/packages/@aws-cdk/aws-databrew/.npmignore b/packages/@aws-cdk/aws-databrew/.npmignore deleted file mode 100644 index e4486030fcb17..0000000000000 --- a/packages/@aws-cdk/aws-databrew/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Don't include original .ts files when doing `npm pack` -*.ts -!*.d.ts -coverage -.nyc_output -*.tgz - -dist -.LAST_PACKAGE -.LAST_BUILD -!*.js - -# Include .jsii -!.jsii - -*.snk - -*.tsbuildinfo - -tsconfig.json - -.eslintrc.js -jest.config.js - -# exclude cdk artifacts -**/cdk.out -junit.xml -test/ diff --git a/packages/@aws-cdk/aws-databrew/LICENSE b/packages/@aws-cdk/aws-databrew/LICENSE deleted file mode 100644 index b71ec1688783a..0000000000000 --- a/packages/@aws-cdk/aws-databrew/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/@aws-cdk/aws-databrew/NOTICE b/packages/@aws-cdk/aws-databrew/NOTICE deleted file mode 100644 index bfccac9a7f69c..0000000000000 --- a/packages/@aws-cdk/aws-databrew/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AWS Cloud Development Kit (AWS CDK) -Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-databrew/README.md b/packages/@aws-cdk/aws-databrew/README.md deleted file mode 100644 index d3ad1b0618ed8..0000000000000 --- a/packages/@aws-cdk/aws-databrew/README.md +++ /dev/null @@ -1,16 +0,0 @@ -## AWS::DataBrew Construct Library - ---- - -![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) - -> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use. - ---- - - -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -```ts -import databrew = require('@aws-cdk/aws-databrew'); -``` diff --git a/packages/@aws-cdk/aws-databrew/jest.config.js b/packages/@aws-cdk/aws-databrew/jest.config.js deleted file mode 100644 index 54e28beb9798b..0000000000000 --- a/packages/@aws-cdk/aws-databrew/jest.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/jest.config'); -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-databrew/lib/index.ts b/packages/@aws-cdk/aws-databrew/lib/index.ts deleted file mode 100644 index 1e8de6dfda21a..0000000000000 --- a/packages/@aws-cdk/aws-databrew/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// AWS::DataBrew CloudFormation Resources: -export * from './databrew.generated'; diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json deleted file mode 100644 index 8440ca093db74..0000000000000 --- a/packages/@aws-cdk/aws-databrew/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "@aws-cdk/aws-databrew", - "version": "0.0.0", - "description": "The CDK Construct Library for AWS::DataBrew", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "jsii": { - "outdir": "dist", - "projectReferences": true, - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DataBrew", - "packageId": "Amazon.CDK.AWS.DataBrew", - "signAssembly": true, - "assemblyOriginatorKeyFile": "../../key.snk", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" - }, - "java": { - "package": "software.amazon.awscdk.services.databrew", - "maven": { - "groupId": "software.amazon.awscdk", - "artifactId": "databrew" - } - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 1" - ], - "distName": "aws-cdk.aws-databrew", - "module": "aws_cdk.aws_databrew" - } - } - }, - "repository": { - "type": "git", - "url": "https://github.com/aws/aws-cdk.git", - "directory": "packages/@aws-cdk/aws-databrew" - }, - "homepage": "https://github.com/aws/aws-cdk", - "scripts": { - "build": "cdk-build", - "watch": "cdk-watch", - "lint": "cdk-lint", - "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f", - "package": "cdk-package", - "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", - "build+test+package": "npm run build+test && npm run package", - "build+test": "npm run build && npm test", - "compat": "cdk-compat", - "gen": "cfn2ts" - }, - "cdk-build": { - "cloudformation": "AWS::DataBrew", - "jest": true, - "env": { - "AWSLINT_BASE_CONSTRUCT": "true" - } - }, - "keywords": [ - "aws", - "cdk", - "constructs", - "AWS::DataBrew", - "aws-databrew" - ], - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com", - "organization": true - }, - "license": "Apache-2.0", - "devDependencies": { - "@aws-cdk/assert": "0.0.0", - "cdk-build-tools": "0.0.0", - "cfn2ts": "0.0.0", - "pkglint": "0.0.0" - }, - "dependencies": { - "@aws-cdk/core": "0.0.0" - }, - "peerDependencies": { - "@aws-cdk/core": "0.0.0" - }, - "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" - }, - "stability": "experimental", - "maturity": "cfn-only", - "awscdkio": { - "announce": false - }, - "private": true -} diff --git a/packages/@aws-cdk/aws-databrew/test/databrew.test.ts b/packages/@aws-cdk/aws-databrew/test/databrew.test.ts deleted file mode 100644 index e394ef336bfb4..0000000000000 --- a/packages/@aws-cdk/aws-databrew/test/databrew.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@aws-cdk/assert/jest'; -import {} from '../lib'; - -test('No tests are specified for this package', () => { - expect(true).toBe(true); -}); diff --git a/packages/@aws-cdk/aws-dynamodb/lib/table.ts b/packages/@aws-cdk/aws-dynamodb/lib/table.ts index 780d240abbc55..f67175c62c5b9 100644 --- a/packages/@aws-cdk/aws-dynamodb/lib/table.ts +++ b/packages/@aws-cdk/aws-dynamodb/lib/table.ts @@ -558,9 +558,9 @@ abstract class TableBase extends Resource implements ITable { actions, resourceArns: [ this.tableArn, - Lazy.string({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), + Lazy.stringValue({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), ...this.regionalArns, - ...this.regionalArns.map(arn => Lazy.string({ + ...this.regionalArns.map(arn => Lazy.stringValue({ produce: () => this.hasIndex ? `${arn}/index/*` : Aws.NO_VALUE, })), ], @@ -873,9 +873,9 @@ abstract class TableBase extends Resource implements ITable { ): iam.Grant { if (opts.tableActions) { const resources = [this.tableArn, - Lazy.string({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), + Lazy.stringValue({ produce: () => this.hasIndex ? `${this.tableArn}/index/*` : Aws.NO_VALUE }), ...this.regionalArns, - ...this.regionalArns.map(arn => Lazy.string({ + ...this.regionalArns.map(arn => Lazy.stringValue({ produce: () => this.hasIndex ? `${arn}/index/*` : Aws.NO_VALUE, }))]; const ret = iam.Grant.addToPrincipal({ @@ -1059,8 +1059,8 @@ export class Table extends TableBase { tableName: this.physicalName, keySchema: this.keySchema, attributeDefinitions: this.attributeDefinitions, - globalSecondaryIndexes: Lazy.any({ produce: () => this.globalSecondaryIndexes }, { omitEmptyArray: true }), - localSecondaryIndexes: Lazy.any({ produce: () => this.localSecondaryIndexes }, { omitEmptyArray: true }), + globalSecondaryIndexes: Lazy.anyValue({ produce: () => this.globalSecondaryIndexes }, { omitEmptyArray: true }), + localSecondaryIndexes: Lazy.anyValue({ produce: () => this.localSecondaryIndexes }, { omitEmptyArray: true }), pointInTimeRecoverySpecification: props.pointInTimeRecovery ? { pointInTimeRecoveryEnabled: props.pointInTimeRecovery } : undefined, billingMode: this.billingMode === BillingMode.PAY_PER_REQUEST ? this.billingMode : undefined, provisionedThroughput: this.billingMode === BillingMode.PAY_PER_REQUEST ? undefined : { diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index 1de117ceae58c..4d090b7ece65d 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/jest": "^26.0.15", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-ec2/lib/instance.ts b/packages/@aws-cdk/aws-ec2/lib/instance.ts index a7e56280fa4dd..07ada4670aa9a 100644 --- a/packages/@aws-cdk/aws-ec2/lib/instance.ts +++ b/packages/@aws-cdk/aws-ec2/lib/instance.ts @@ -324,8 +324,8 @@ export class Instance extends Resource implements IInstance { // use delayed evaluation const imageConfig = props.machineImage.getImage(this); this.userData = props.userData ?? imageConfig.userData; - const userDataToken = Lazy.string({ produce: () => Fn.base64(this.userData.render()) }); - const securityGroupsToken = Lazy.list({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); + const userDataToken = Lazy.stringValue({ produce: () => Fn.base64(this.userData.render()) }); + const securityGroupsToken = Lazy.listValue({ produce: () => this.securityGroups.map(sg => sg.securityGroupId) }); const { subnets } = props.vpc.selectSubnets(props.vpcSubnets); let subnet; @@ -385,7 +385,7 @@ export class Instance extends Resource implements IInstance { // Trigger replacement (via new logical ID) on user data change, if specified or cfn-init is being used. const originalLogicalId = Stack.of(this).getLogicalId(this.instance); - this.instance.overrideLogicalId(Lazy.uncachedString({ + this.instance.overrideLogicalId(Lazy.stringValue({ produce: () => { let logicalId = originalLogicalId; if (props.userDataCausesReplacement ?? props.initOptions) { diff --git a/packages/@aws-cdk/aws-ec2/lib/security-group.ts b/packages/@aws-cdk/aws-ec2/lib/security-group.ts index 62a0ceb19e0ca..db733fcb816d4 100644 --- a/packages/@aws-cdk/aws-ec2/lib/security-group.ts +++ b/packages/@aws-cdk/aws-ec2/lib/security-group.ts @@ -395,8 +395,8 @@ export class SecurityGroup extends SecurityGroupBase { this.securityGroup = new CfnSecurityGroup(this, 'Resource', { groupName: this.physicalName, groupDescription, - securityGroupIngress: Lazy.any({ produce: () => this.directIngressRules }, { omitEmptyArray: true } ), - securityGroupEgress: Lazy.any({ produce: () => this.directEgressRules }, { omitEmptyArray: true } ), + securityGroupIngress: Lazy.anyValue({ produce: () => this.directIngressRules }, { omitEmptyArray: true } ), + securityGroupEgress: Lazy.anyValue({ produce: () => this.directEgressRules }, { omitEmptyArray: true } ), vpcId: props.vpc.vpcId, }); diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts b/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts index e17632ac2acb0..f66045e9ffd3c 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc-endpoint.ts @@ -192,7 +192,7 @@ export class GatewayVpcEndpoint extends VpcEndpoint implements IGatewayVpcEndpoi } const endpoint = new CfnVPCEndpoint(this, 'Resource', { - policyDocument: Lazy.any({ produce: () => this.policyDocument }), + policyDocument: Lazy.anyValue({ produce: () => this.policyDocument }), routeTableIds, serviceName: props.service.name, vpcEndpointType: VpcEndpointType.GATEWAY, @@ -318,7 +318,7 @@ export class InterfaceVpcEndpointAwsService implements IInterfaceVpcEndpointServ public readonly privateDnsDefault?: boolean = true; constructor(name: string, prefix?: string, port?: number) { - const region = Lazy.uncachedString({ + const region = Lazy.stringValue({ produce: (context) => Stack.of(context.scope).region, }); this.name = `${prefix || 'com.amazonaws'}.${region}.${name}`; @@ -482,7 +482,7 @@ export class InterfaceVpcEndpoint extends VpcEndpoint implements IInterfaceVpcEn const endpoint = new CfnVPCEndpoint(this, 'Resource', { privateDnsEnabled: props.privateDnsEnabled ?? props.service.privateDnsDefault ?? true, - policyDocument: Lazy.any({ produce: () => this.policyDocument }), + policyDocument: Lazy.anyValue({ produce: () => this.policyDocument }), securityGroupIds: securityGroups.map(s => s.securityGroupId), serviceName: props.service.name, vpcEndpointType: VpcEndpointType.INTERFACE, diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc.ts b/packages/@aws-cdk/aws-ec2/lib/vpc.ts index f6ce634b18a75..7cbf02c76a452 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc.ts @@ -1536,7 +1536,7 @@ export class Subnet extends Resource implements ISubnet { // subnet.attrNetworkAclAssociationId is the default ACL after the subnet // was just created. However, the ACL can be replaced at a later time. this._networkAcl = NetworkAcl.fromNetworkAclId(this, 'Acl', subnet.attrNetworkAclAssociationId); - this.subnetNetworkAclAssociationId = Lazy.string({ produce: () => this._networkAcl.networkAclId }); + this.subnetNetworkAclAssociationId = Lazy.stringValue({ produce: () => this._networkAcl.networkAclId }); this.node.defaultChild = subnet; const table = new CfnRouteTable(this, 'RouteTable', { diff --git a/packages/@aws-cdk/aws-ec2/test/security-group.test.ts b/packages/@aws-cdk/aws-ec2/test/security-group.test.ts index 9851d87235c41..1a72a6a715d2c 100644 --- a/packages/@aws-cdk/aws-ec2/test/security-group.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/security-group.test.ts @@ -163,11 +163,11 @@ nodeunitShim({ const ports = [ Port.tcp(1234), - Port.tcp(Lazy.number({ produce: () => 5000 })), + Port.tcp(Lazy.numberValue({ produce: () => 5000 })), Port.allTcp(), Port.tcpRange(80, 90), Port.udp(2345), - Port.udp(Lazy.number({ produce: () => 7777 })), + Port.udp(Lazy.numberValue({ produce: () => 7777 })), Port.allUdp(), Port.udpRange(85, 95), Port.icmpTypeAndCode(5, 1), @@ -192,8 +192,8 @@ nodeunitShim({ 'if tokens are used in ports, `canInlineRule` should be false to avoid cycles'(test: Test) { // GIVEN - const p1 = Lazy.number({ produce: () => 80 }); - const p2 = Lazy.number({ produce: () => 5000 }); + const p1 = Lazy.numberValue({ produce: () => 80 }); + const p2 = Lazy.numberValue({ produce: () => 5000 }); // WHEN const ports = [ diff --git a/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts b/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts index 5555dc3fa9ed7..766a16dea0b1d 100644 --- a/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/vpc.from-lookup.test.ts @@ -13,7 +13,7 @@ nodeunitShim({ test.throws(() => { Vpc.fromLookup(stack, 'Vpc', { - vpcId: Lazy.string({ produce: () => 'some-id' }), + vpcId: Lazy.stringValue({ produce: () => 'some-id' }), }); }, 'All arguments to Vpc.fromLookup() must be concrete'); diff --git a/packages/@aws-cdk/aws-ec2/test/vpc.test.ts b/packages/@aws-cdk/aws-ec2/test/vpc.test.ts index 9ea01086411dd..9163a210738f8 100644 --- a/packages/@aws-cdk/aws-ec2/test/vpc.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/vpc.test.ts @@ -818,7 +818,7 @@ nodeunitShim({ const stack = new Stack(); test.throws(() => { new Vpc(stack, 'Vpc', { - cidr: Lazy.string({ produce: () => 'abc' }), + cidr: Lazy.stringValue({ produce: () => 'abc' }), }); }, /property must be a concrete CIDR string/); diff --git a/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts b/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts index efa1498b41d90..7da0621f2aa42 100644 --- a/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts +++ b/packages/@aws-cdk/aws-ecr-assets/test/image-asset.test.ts @@ -238,7 +238,7 @@ nodeunitShim({ 'fails if using tokens in build args keys or values'(test: Test) { // GIVEN - const token = Lazy.string({ produce: () => 'foo' }); + const token = Lazy.stringValue({ produce: () => 'foo' }); const expected = /Cannot use tokens in keys or values of "buildArgs" since they are needed before deployment/; // THEN @@ -257,7 +257,7 @@ nodeunitShim({ 'fails if using token as repositoryName'(test: Test) { // GIVEN - const token = Lazy.string({ produce: () => 'foo' }); + const token = Lazy.stringValue({ produce: () => 'foo' }); // THEN test.throws(() => new DockerImageAsset(stack, 'MyAsset1', { diff --git a/packages/@aws-cdk/aws-ecr/lib/repository.ts b/packages/@aws-cdk/aws-ecr/lib/repository.ts index 36e14cf861adc..53990d1e07934 100644 --- a/packages/@aws-cdk/aws-ecr/lib/repository.ts +++ b/packages/@aws-cdk/aws-ecr/lib/repository.ts @@ -417,8 +417,8 @@ export class Repository extends RepositoryBase { const resource = new CfnRepository(this, 'Resource', { repositoryName: this.physicalName, // It says "Text", but they actually mean "Object". - repositoryPolicyText: Lazy.any({ produce: () => this.policyDocument }), - lifecyclePolicy: Lazy.any({ produce: () => this.renderLifecyclePolicy() }), + repositoryPolicyText: Lazy.anyValue({ produce: () => this.policyDocument }), + lifecyclePolicy: Lazy.anyValue({ produce: () => this.renderLifecyclePolicy() }), imageScanningConfiguration: !props.imageScanOnPush ? undefined : { scanOnPush: true, }, diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index 535fb240217ec..ac4f4cf6f035a 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -340,7 +340,7 @@ export abstract class BaseService extends Resource this.resource = new CfnService(this, 'Service', { desiredCount: props.desiredCount, serviceName: this.physicalName, - loadBalancers: Lazy.any({ produce: () => this.loadBalancers }, { omitEmptyArray: true }), + loadBalancers: Lazy.anyValue({ produce: () => this.loadBalancers }, { omitEmptyArray: true }), deploymentConfiguration: { maximumPercent: props.maxHealthyPercent || 200, minimumHealthyPercent: props.minHealthyPercent === undefined ? 50 : props.minHealthyPercent, @@ -351,8 +351,8 @@ export abstract class BaseService extends Resource launchType: props.deploymentController?.type === DeploymentControllerType.EXTERNAL ? undefined : props.launchType, healthCheckGracePeriodSeconds: this.evaluateHealthGracePeriod(props.healthCheckGracePeriod), /* role: never specified, supplanted by Service Linked Role */ - networkConfiguration: Lazy.any({ produce: () => this.networkConfiguration }, { omitEmptyArray: true }), - serviceRegistries: Lazy.any({ produce: () => this.serviceRegistries }, { omitEmptyArray: true }), + networkConfiguration: Lazy.anyValue({ produce: () => this.networkConfiguration }, { omitEmptyArray: true }), + serviceRegistries: Lazy.anyValue({ produce: () => this.serviceRegistries }, { omitEmptyArray: true }), ...additionalProps, }); @@ -606,7 +606,7 @@ export abstract class BaseService extends Resource awsvpcConfiguration: { assignPublicIp: assignPublicIp ? 'ENABLED' : 'DISABLED', subnets: vpc.selectSubnets(vpcSubnets).subnetIds, - securityGroups: Lazy.list({ produce: () => [securityGroup!.securityGroupId] }), + securityGroups: Lazy.listValue({ produce: () => [securityGroup!.securityGroupId] }), }, }; } @@ -714,7 +714,7 @@ export abstract class BaseService extends Resource * healthCheckGracePeriod is not already set */ private evaluateHealthGracePeriod(providedHealthCheckGracePeriod?: Duration): IResolvable { - return Lazy.any({ + return Lazy.anyValue({ produce: () => providedHealthCheckGracePeriod !== undefined ? providedHealthCheckGracePeriod.toSeconds() : this.loadBalancers.length > 0 ? 60 : undefined, diff --git a/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts b/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts index ff27f00cb79a8..862193b11fe3b 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts @@ -122,13 +122,9 @@ export interface TaskDefinitionProps extends CommonTaskDefinitionProps { * which determines your range of valid values for the memory parameter: * * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - * * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - * * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - * * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - * * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) * * @default - CPU units are not specified. @@ -143,13 +139,9 @@ export interface TaskDefinitionProps extends CommonTaskDefinitionProps { * which determines your range of valid values for the cpu parameter: * * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) - * * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) - * * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) - * * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) - * * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) * * @default - Memory used by task is not specified. @@ -307,9 +299,9 @@ export class TaskDefinition extends TaskDefinitionBase { }); const taskDef = new CfnTaskDefinition(this, 'Resource', { - containerDefinitions: Lazy.any({ produce: () => this.renderContainers() }, { omitEmptyArray: true }), - volumes: Lazy.any({ produce: () => this.renderVolumes() }, { omitEmptyArray: true }), - executionRoleArn: Lazy.string({ produce: () => this.executionRole && this.executionRole.roleArn }), + containerDefinitions: Lazy.anyValue({ produce: () => this.renderContainers() }, { omitEmptyArray: true }), + volumes: Lazy.anyValue({ produce: () => this.renderVolumes() }, { omitEmptyArray: true }), + executionRoleArn: Lazy.stringValue({ produce: () => this.executionRole && this.executionRole.roleArn }), family: this.family, taskRoleArn: this.taskRole.roleArn, requiresCompatibilities: [ @@ -317,7 +309,7 @@ export class TaskDefinition extends TaskDefinitionBase { ...(isFargateCompatible(props.compatibility) ? ['FARGATE'] : []), ], networkMode: this.renderNetworkMode(this.networkMode), - placementConstraints: Lazy.any({ + placementConstraints: Lazy.anyValue({ produce: () => !isFargateCompatible(this.compatibility) ? this.placementConstraints : undefined, }, { omitEmptyArray: true }), diff --git a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts index 341ffe5237b4c..0ad416ea61880 100644 --- a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts @@ -590,7 +590,7 @@ export class ContainerDefinition extends cdk.Construct { command: this.props.command, cpu: this.props.cpu, disableNetworking: this.props.disableNetworking, - dependsOn: cdk.Lazy.any({ produce: () => this.containerDependencies.map(renderContainerDependency) }, { omitEmptyArray: true }), + dependsOn: cdk.Lazy.anyValue({ produce: () => this.containerDependencies.map(renderContainerDependency) }, { omitEmptyArray: true }), dnsSearchDomains: this.props.dnsSearchDomains, dnsServers: this.props.dnsServers, dockerLabels: this.props.dockerLabels, @@ -601,17 +601,17 @@ export class ContainerDefinition extends cdk.Construct { image: this.imageConfig.imageName, memory: this.props.memoryLimitMiB, memoryReservation: this.props.memoryReservationMiB, - mountPoints: cdk.Lazy.any({ produce: () => this.mountPoints.map(renderMountPoint) }, { omitEmptyArray: true }), + mountPoints: cdk.Lazy.anyValue({ produce: () => this.mountPoints.map(renderMountPoint) }, { omitEmptyArray: true }), name: this.containerName, - portMappings: cdk.Lazy.any({ produce: () => this.portMappings.map(renderPortMapping) }, { omitEmptyArray: true }), + portMappings: cdk.Lazy.anyValue({ produce: () => this.portMappings.map(renderPortMapping) }, { omitEmptyArray: true }), privileged: this.props.privileged, readonlyRootFilesystem: this.props.readonlyRootFilesystem, repositoryCredentials: this.imageConfig.repositoryCredentials, startTimeout: this.props.startTimeout && this.props.startTimeout.toSeconds(), stopTimeout: this.props.stopTimeout && this.props.stopTimeout.toSeconds(), - ulimits: cdk.Lazy.any({ produce: () => this.ulimits.map(renderUlimit) }, { omitEmptyArray: true }), + ulimits: cdk.Lazy.anyValue({ produce: () => this.ulimits.map(renderUlimit) }, { omitEmptyArray: true }), user: this.props.user, - volumesFrom: cdk.Lazy.any({ produce: () => this.volumesFrom.map(renderVolumeFrom) }, { omitEmptyArray: true }), + volumesFrom: cdk.Lazy.anyValue({ produce: () => this.volumesFrom.map(renderVolumeFrom) }, { omitEmptyArray: true }), workingDirectory: this.props.workingDirectory, logConfiguration: this.logDriverConfig, environment: this.props.environment && renderKV(this.props.environment, 'name', 'value'), @@ -619,7 +619,7 @@ export class ContainerDefinition extends cdk.Construct { secrets: this.secrets, extraHosts: this.props.extraHosts && renderKV(this.props.extraHosts, 'hostname', 'ipAddress'), healthCheck: this.props.healthCheck && renderHealthCheck(this.props.healthCheck), - links: cdk.Lazy.list({ produce: () => this.links }, { omitEmpty: true }), + links: cdk.Lazy.listValue({ produce: () => this.links }, { omitEmpty: true }), linuxParameters: this.linuxParameters && this.linuxParameters.renderLinuxParameters(), resourceRequirements: (this.props.gpuCount !== undefined) ? renderResourceRequirements(this.props.gpuCount) : undefined, }; diff --git a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts index 33769c3223b08..151375ba68764 100644 --- a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts @@ -197,8 +197,8 @@ export class Ec2Service extends BaseService implements IEc2Service { { cluster: props.cluster.clusterName, taskDefinition: props.deploymentController?.type === DeploymentControllerType.EXTERNAL ? undefined : props.taskDefinition.taskDefinitionArn, - placementConstraints: Lazy.any({ produce: () => this.constraints }, { omitEmptyArray: true }), - placementStrategies: Lazy.any({ produce: () => this.strategies }, { omitEmptyArray: true }), + placementConstraints: Lazy.anyValue({ produce: () => this.constraints }, { omitEmptyArray: true }), + placementStrategies: Lazy.anyValue({ produce: () => this.strategies }, { omitEmptyArray: true }), schedulingStrategy: props.daemon ? 'DAEMON' : 'REPLICA', }, props.taskDefinition); diff --git a/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts b/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts index eba4ac4371ee8..4513e55debe63 100644 --- a/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-task-definition.ts @@ -12,13 +12,9 @@ export interface FargateTaskDefinitionProps extends CommonTaskDefinitionProps { * which determines your range of valid values for the memory parameter: * * 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - * * 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - * * 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - * * 2048 (2 vCPU) - Available memory values: Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - * * 4096 (4 vCPU) - Available memory values: Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) * * @default 256 @@ -30,13 +26,9 @@ export interface FargateTaskDefinitionProps extends CommonTaskDefinitionProps { * this field is required and you must use one of the following values, which determines your range of valid values for the cpu parameter: * * 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) - * * 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: 512 (.5 vCPU) - * * 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) - * * Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - Available cpu values: 2048 (2 vCPU) - * * Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - Available cpu values: 4096 (4 vCPU) * * @default 512 diff --git a/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts b/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts index 45e792126fd20..fbf77f69b76f3 100644 --- a/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts +++ b/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts @@ -107,11 +107,11 @@ export class LinuxParameters extends cdk.Construct { initProcessEnabled: this.initProcessEnabled, sharedMemorySize: this.sharedMemorySize, capabilities: { - add: cdk.Lazy.list({ produce: () => this.capAdd }, { omitEmpty: true }), - drop: cdk.Lazy.list({ produce: () => this.capDrop }, { omitEmpty: true }), + add: cdk.Lazy.listValue({ produce: () => this.capAdd }, { omitEmpty: true }), + drop: cdk.Lazy.listValue({ produce: () => this.capDrop }, { omitEmpty: true }), }, - devices: cdk.Lazy.any({ produce: () => this.devices.map(renderDevice) }, { omitEmptyArray: true }), - tmpfs: cdk.Lazy.any({ produce: () => this.tmpfs.map(renderTmpfs) }, { omitEmptyArray: true }), + devices: cdk.Lazy.anyValue({ produce: () => this.devices.map(renderDevice) }, { omitEmptyArray: true }), + tmpfs: cdk.Lazy.anyValue({ produce: () => this.tmpfs.map(renderTmpfs) }, { omitEmptyArray: true }), }; } } diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts index 99aeb6da886f9..2d7687f5855e6 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts @@ -28,8 +28,8 @@ export = { const stack = new cdk.Stack(); new ecs.FargateTaskDefinition(stack, 'FargateTaskDef', { - cpu: cdk.Lazy.number({ produce: () => 128 }), - memoryLimitMiB: cdk.Lazy.number({ produce: () => 1024 }), + cpu: cdk.Lazy.numberValue({ produce: () => 128 }), + memoryLimitMiB: cdk.Lazy.numberValue({ produce: () => 1024 }), }); // THEN diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts b/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts index 276937847d558..b4c5de9af36d6 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts @@ -92,7 +92,7 @@ export class AwsAuth extends Construct { } private synthesizeMapRoles() { - return Lazy.any({ + return Lazy.anyValue({ produce: () => this.stack.toJsonString(this.roleMappings.map(m => ({ rolearn: m.role.roleArn, username: m.mapping.username, @@ -102,7 +102,7 @@ export class AwsAuth extends Construct { } private synthesizeMapUsers() { - return Lazy.any({ + return Lazy.anyValue({ produce: () => this.stack.toJsonString(this.userMappings.map(m => ({ userarn: m.user.userArn, username: m.mapping.username, @@ -112,7 +112,7 @@ export class AwsAuth extends Construct { } private synthesizeMapAccounts() { - return Lazy.any({ + return Lazy.anyValue({ produce: () => this.stack.toJsonString(this.accounts), }); } diff --git a/packages/@aws-cdk/aws-eks/lib/aws-auth.ts b/packages/@aws-cdk/aws-eks/lib/aws-auth.ts index 02f2b321933f7..1d0317758f705 100644 --- a/packages/@aws-cdk/aws-eks/lib/aws-auth.ts +++ b/packages/@aws-cdk/aws-eks/lib/aws-auth.ts @@ -115,7 +115,7 @@ export class AwsAuth extends CoreConstruct { } private synthesizeMapRoles() { - return Lazy.any({ + return Lazy.anyValue({ produce: () => this.stack.toJsonString(this.roleMappings.map(m => ({ rolearn: m.role.roleArn, username: m.mapping.username ?? m.role.roleArn, @@ -125,7 +125,7 @@ export class AwsAuth extends CoreConstruct { } private synthesizeMapUsers() { - return Lazy.any({ + return Lazy.anyValue({ produce: () => this.stack.toJsonString(this.userMappings.map(m => ({ userarn: m.user.userArn, username: m.mapping.username ?? m.user.userArn, @@ -135,7 +135,7 @@ export class AwsAuth extends CoreConstruct { } private synthesizeMapAccounts() { - return Lazy.any({ + return Lazy.anyValue({ produce: () => this.stack.toJsonString(this.accounts), }); } diff --git a/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts b/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts index 788210c987dbe..e41625ea3c808 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts @@ -122,7 +122,7 @@ export class ClusterResource extends CoreConstruct { // this role to manage all clusters in the account. this must be lazy since // `props.name` may contain a lazy value that conditionally resolves to a // physical name. - const resourceArns = Lazy.list({ + const resourceArns = Lazy.listValue({ produce: () => { const arn = stack.formatArn(clusterArnComponents(stack.resolve(props.name))); return stack.resolve(props.name) @@ -131,7 +131,7 @@ export class ClusterResource extends CoreConstruct { }, }); - const fargateProfileResourceArn = Lazy.string({ + const fargateProfileResourceArn = Lazy.stringValue({ produce: () => stack.resolve(props.name) ? stack.formatArn({ service: 'eks', resource: 'fargateprofile', resourceName: stack.resolve(props.name) + '/*' }) : '*', diff --git a/packages/@aws-cdk/aws-eks/lib/cluster.ts b/packages/@aws-cdk/aws-eks/lib/cluster.ts index 7974f988aff33..ec6f048a4de58 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster.ts @@ -1352,20 +1352,18 @@ export class Cluster extends ClusterBase { private selectPrivateSubnets(): ec2.ISubnet[] { const privateSubnets: ec2.ISubnet[] = []; - const vpcPrivateSubnetIds = this.vpc.privateSubnets.map(s => s.subnetId); - const vpcPublicSubnetIds = this.vpc.publicSubnets.map(s => s.subnetId); for (const placement of this.vpcSubnets) { for (const subnet of this.vpc.selectSubnets(placement).subnets) { - if (vpcPrivateSubnetIds.includes(subnet.subnetId)) { + if (this.vpc.privateSubnets.includes(subnet)) { // definitely private, take it. privateSubnets.push(subnet); continue; } - if (vpcPublicSubnetIds.includes(subnet.subnetId)) { + if (this.vpc.publicSubnets.includes(subnet)) { // definitely public, skip it. continue; } diff --git a/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts b/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts index 4ce6f094909bd..a070d04af3910 100644 --- a/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts +++ b/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts @@ -183,7 +183,7 @@ export class FargateProfile extends CoreConstruct implements ITaggable { podExecutionRoleArn: this.podExecutionRole.roleArn, selectors: props.selectors, subnets, - tags: Lazy.any({ produce: () => this.tags.renderTags() }), + tags: Lazy.anyValue({ produce: () => this.tags.renderTags() }), }, }, }); diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index adad2d1310319..4d3510784301d 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -75,7 +75,7 @@ "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", "@types/yaml": "1.9.6", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-eks/test/test.cluster.ts b/packages/@aws-cdk/aws-eks/test/test.cluster.ts index facdf1880d426..170273d0485fe 100644 --- a/packages/@aws-cdk/aws-eks/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-eks/test/test.cluster.ts @@ -2106,103 +2106,6 @@ export = { test.done(); }, - 'private endpoint access selects only private subnets from looked up vpc with concrete subnet selection'(test: Test) { - - const vpcId = 'vpc-12345'; - // can't use the regular fixture because it also adds a VPC to the stack, which prevents - // us from setting context. - const stack = new cdk.Stack(new cdk.App(), 'Stack', { - env: { - account: '11112222', - region: 'us-east-1', - }, - }); - stack.node.setContext(`vpc-provider:account=${stack.account}:filter.vpc-id=${vpcId}:region=${stack.region}:returnAsymmetricSubnets=true`, { - vpcId: vpcId, - vpcCidrBlock: '10.0.0.0/16', - subnetGroups: [ - { - name: 'Private', - type: 'Private', - subnets: [ - { - subnetId: 'subnet-private-in-us-east-1a', - cidr: '10.0.1.0/24', - availabilityZone: 'us-east-1a', - routeTableId: 'rtb-06068e4c4049921ef', - }, - ], - }, - { - name: 'Public', - type: 'Public', - subnets: [ - { - subnetId: 'subnet-public-in-us-east-1c', - cidr: '10.0.0.0/24', - availabilityZone: 'us-east-1c', - routeTableId: 'rtb-0ff08e62195198dbb', - }, - ], - }, - ], - }); - const vpc = ec2.Vpc.fromLookup(stack, 'Vpc', { - vpcId: vpcId, - }); - - new eks.Cluster(stack, 'Cluster', { - vpc, - version: CLUSTER_VERSION, - endpointAccess: eks.EndpointAccess.PRIVATE, - vpcSubnets: [{ - subnets: [ - ec2.Subnet.fromSubnetId(stack, 'Private', 'subnet-private-in-us-east-1a'), - ec2.Subnet.fromSubnetId(stack, 'Public', 'subnet-public-in-us-east-1c'), - ], - }], - }); - - const nested = stack.node.tryFindChild('@aws-cdk/aws-eks.KubectlProvider') as cdk.NestedStack; - const template = expect(nested).value; - - test.deepEqual(template.Resources.Handler886CB40B.Properties.VpcConfig.SubnetIds, [ - 'subnet-private-in-us-east-1a', - ]); - - test.done(); - }, - - 'private endpoint access selects only private subnets from managed vpc with concrete subnet selection'(test: Test) { - - const { stack } = testFixture(); - - const vpc = new ec2.Vpc(stack, 'Vpc'); - - new eks.Cluster(stack, 'Cluster', { - vpc, - version: CLUSTER_VERSION, - endpointAccess: eks.EndpointAccess.PRIVATE, - vpcSubnets: [{ - subnets: [ - vpc.privateSubnets[0], - vpc.publicSubnets[1], - ec2.Subnet.fromSubnetId(stack, 'Private', 'subnet-unknown'), - ], - }], - }); - - const nested = stack.node.tryFindChild('@aws-cdk/aws-eks.KubectlProvider') as cdk.NestedStack; - const template = expect(nested).value; - - test.deepEqual(template.Resources.Handler886CB40B.Properties.VpcConfig.SubnetIds, [ - { Ref: 'referencetoStackVpcPrivateSubnet1Subnet8E6A14CBRef' }, - 'subnet-unknown', - ]); - - test.done(); - }, - 'private endpoint access considers specific subnet selection'(test: Test) { const { stack } = testFixture(); new eks.Cluster(stack, 'Cluster', { diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts index 55c423f157a55..2bb95496a4c74 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancing/lib/load-balancer.ts @@ -245,7 +245,7 @@ export class LoadBalancer extends Resource implements IConnectable { this.elb = new CfnLoadBalancer(this, 'Resource', { securityGroups: [this.securityGroup.securityGroupId], subnets: selectedSubnets.subnetIds, - listeners: Lazy.any({ produce: () => this.listeners }), + listeners: Lazy.anyValue({ produce: () => this.listeners }), scheme: props.internetFacing ? 'internet-facing' : 'internal', healthCheck: props.healthCheck && healthCheckToJSON(props.healthCheck), crossZone: (props.crossZone === undefined || props.crossZone) ? true : false, diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts index 13b725a3deb3b..425e8e8f29a31 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/lib/cognito-action.ts @@ -85,7 +85,7 @@ export class AuthenticateCognitoAction extends elbv2.ListenerAction { onUnauthenticatedRequest: options.onUnauthenticatedRequest, scope: options.scope, sessionCookieName: options.sessionCookieName, - sessionTimeout: options.sessionTimeout?.toSeconds().toString(), + sessionTimeout: options.sessionTimeout?.toSeconds(), }, }, options.next); } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts index 09ae095c46a92..9b3e713a6115c 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts @@ -40,7 +40,7 @@ export class ListenerAction implements IListenerAction { onUnauthenticatedRequest: options.onUnauthenticatedRequest, scope: options.scope, sessionCookieName: options.sessionCookieName, - sessionTimeout: options.sessionTimeout?.toSeconds().toString(), + sessionTimeout: options.sessionTimeout?.toSeconds(), }, }, options.next); } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts index edc0e04551f46..fe22b97653430 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts @@ -231,8 +231,8 @@ export class ApplicationListenerRule extends cdk.Construct { const resource = new CfnListenerRule(this, 'Resource', { listenerArn: props.listener.listenerArn, priority: props.priority, - conditions: cdk.Lazy.any({ produce: () => this.renderConditions() }), - actions: cdk.Lazy.any({ produce: () => this.action ? this.action.renderActions() : [] }), + conditions: cdk.Lazy.anyValue({ produce: () => this.renderConditions() }), + actions: cdk.Lazy.anyValue({ produce: () => this.action ? this.action.renderActions() : [] }), }); if (props.hostHeader) { diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts index 230c02f7ab84f..3a055b5fce4be 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts @@ -190,7 +190,7 @@ export class ApplicationListener extends BaseListener implements IApplicationLis super(scope, id, { loadBalancerArn: props.loadBalancer.loadBalancerArn, - certificates: Lazy.any({ produce: () => this.certificateArns.map(certificateArn => ({ certificateArn })) }, { omitEmptyArray: true }), + certificates: Lazy.anyValue({ produce: () => this.certificateArns.map(certificateArn => ({ certificateArn })) }, { omitEmptyArray: true }), protocol, port, sslPolicy: props.sslPolicy, diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts index d3b428094a344..0b6c9d76a7d8f 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-load-balancer.ts @@ -83,7 +83,7 @@ export class ApplicationLoadBalancer extends BaseLoadBalancer implements IApplic constructor(scope: Construct, id: string, props: ApplicationLoadBalancerProps) { super(scope, id, props, { type: 'application', - securityGroups: Lazy.list({ produce: () => this.connections.securityGroups.map(sg => sg.securityGroupId) }), + securityGroups: Lazy.listValue({ produce: () => this.connections.securityGroups.map(sg => sg.securityGroupId) }), ipAddressType: props.ipAddressType, }); diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts index 17170f4402b1a..b735d6e375870 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts @@ -108,7 +108,7 @@ export abstract class BaseListener extends Resource { const resource = new CfnListener(this, 'Resource', { ...additionalProps, - defaultActions: Lazy.any({ produce: () => this.defaultAction ? this.defaultAction.renderActions() : [] }), + defaultActions: Lazy.anyValue({ produce: () => this.defaultAction ? this.defaultAction.renderActions() : [] }), }); this.listenerArn = resource.ref; diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts index f96b4e7711ccc..46526b9376f68 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-load-balancer.ts @@ -209,7 +209,7 @@ export abstract class BaseLoadBalancer extends Resource { name: this.physicalName, subnets: subnetIds, scheme: internetFacing ? 'internet-facing' : 'internal', - loadBalancerAttributes: Lazy.any({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true } ), + loadBalancerAttributes: Lazy.anyValue({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true } ), ...additionalProps, }); if (internetFacing) { diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts index f9155bb1430eb..fbe3e54b5b757 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts @@ -236,25 +236,25 @@ export abstract class TargetGroupBase extends cdk.Construct implements ITargetGr this.resource = new CfnTargetGroup(this, 'Resource', { name: baseProps.targetGroupName, - targetGroupAttributes: cdk.Lazy.any({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true }), - targetType: cdk.Lazy.string({ produce: () => this.targetType }), - targets: cdk.Lazy.any({ produce: () => this.targetsJson }, { omitEmptyArray: true }), - vpcId: cdk.Lazy.string({ produce: () => this.vpc && this.targetType !== TargetType.LAMBDA ? this.vpc.vpcId : undefined }), + targetGroupAttributes: cdk.Lazy.anyValue({ produce: () => renderAttributes(this.attributes) }, { omitEmptyArray: true }), + targetType: cdk.Lazy.stringValue({ produce: () => this.targetType }), + targets: cdk.Lazy.anyValue({ produce: () => this.targetsJson }, { omitEmptyArray: true }), + vpcId: cdk.Lazy.stringValue({ produce: () => this.vpc && this.targetType !== TargetType.LAMBDA ? this.vpc.vpcId : undefined }), // HEALTH CHECK - healthCheckEnabled: cdk.Lazy.any({ produce: () => this.healthCheck && this.healthCheck.enabled }), - healthCheckIntervalSeconds: cdk.Lazy.number({ + healthCheckEnabled: cdk.Lazy.anyValue({ produce: () => this.healthCheck && this.healthCheck.enabled }), + healthCheckIntervalSeconds: cdk.Lazy.numberValue({ produce: () => this.healthCheck && this.healthCheck.interval && this.healthCheck.interval.toSeconds(), }), - healthCheckPath: cdk.Lazy.string({ produce: () => this.healthCheck && this.healthCheck.path }), - healthCheckPort: cdk.Lazy.string({ produce: () => this.healthCheck && this.healthCheck.port }), - healthCheckProtocol: cdk.Lazy.string({ produce: () => this.healthCheck && this.healthCheck.protocol }), - healthCheckTimeoutSeconds: cdk.Lazy.number({ + healthCheckPath: cdk.Lazy.stringValue({ produce: () => this.healthCheck && this.healthCheck.path }), + healthCheckPort: cdk.Lazy.stringValue({ produce: () => this.healthCheck && this.healthCheck.port }), + healthCheckProtocol: cdk.Lazy.stringValue({ produce: () => this.healthCheck && this.healthCheck.protocol }), + healthCheckTimeoutSeconds: cdk.Lazy.numberValue({ produce: () => this.healthCheck && this.healthCheck.timeout && this.healthCheck.timeout.toSeconds(), }), - healthyThresholdCount: cdk.Lazy.number({ produce: () => this.healthCheck && this.healthCheck.healthyThresholdCount }), - unhealthyThresholdCount: cdk.Lazy.number({ produce: () => this.healthCheck && this.healthCheck.unhealthyThresholdCount }), - matcher: cdk.Lazy.any({ + healthyThresholdCount: cdk.Lazy.numberValue({ produce: () => this.healthCheck && this.healthCheck.healthyThresholdCount }), + unhealthyThresholdCount: cdk.Lazy.numberValue({ produce: () => this.healthCheck && this.healthCheck.unhealthyThresholdCount }), + matcher: cdk.Lazy.anyValue({ produce: () => this.healthCheck && this.healthCheck.healthyHttpCodes !== undefined ? { httpCode: this.healthCheck.healthyHttpCodes, } : undefined, diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts index 42e50714bdad8..4931bde8f4a1e 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts @@ -1240,7 +1240,7 @@ export class Domain extends DomainBase implements IDomain { effect: iam.Effect.ALLOW, actions: ['es:ESHttp*'], principals: [new iam.Anyone()], - resources: [cdk.Lazy.string({ produce: () => `${this.domainArn}/*` })], + resources: [cdk.Lazy.stringValue({ produce: () => `${this.domainArn}/*` })], }); const masterUserArn = props.fineGrainedAccessControl?.masterUserArn; diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index 297de4fca708b..e9a59ba3c5009 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -76,7 +76,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-events/lib/event-bus.ts b/packages/@aws-cdk/aws-events/lib/event-bus.ts index 27c79c9c7fe3a..6101b44f680f4 100644 --- a/packages/@aws-cdk/aws-events/lib/event-bus.ts +++ b/packages/@aws-cdk/aws-events/lib/event-bus.ts @@ -219,7 +219,7 @@ export class EventBus extends Resource implements IEventBus { constructor(scope: Construct, id: string, props?: EventBusProps) { const { eventBusName, eventSourceName } = EventBus.eventBusProps( - Lazy.string({ produce: () => Names.uniqueId(this) }), + Lazy.stringValue({ produce: () => Names.uniqueId(this) }), props, ); diff --git a/packages/@aws-cdk/aws-events/lib/input.ts b/packages/@aws-cdk/aws-events/lib/input.ts index 1fd68a1754119..b3f8938b4d4c7 100644 --- a/packages/@aws-cdk/aws-events/lib/input.ts +++ b/packages/@aws-cdk/aws-events/lib/input.ts @@ -219,7 +219,7 @@ class FieldAwareEventInput extends RuleTargetInput { private unquoteKeyPlaceholders(sub: string) { if (this.inputType !== InputType.Object) { return sub; } - return Lazy.uncachedString({ produce: (ctx: IResolveContext) => Token.asString(deepUnquote(ctx.resolve(sub))) }); + return Lazy.stringValue({ produce: (ctx: IResolveContext) => Token.asString(deepUnquote(ctx.resolve(sub))) }); function deepUnquote(resolved: any): any { if (Array.isArray(resolved)) { diff --git a/packages/@aws-cdk/aws-events/lib/rule.ts b/packages/@aws-cdk/aws-events/lib/rule.ts index 0079954e73558..98e629874e382 100644 --- a/packages/@aws-cdk/aws-events/lib/rule.ts +++ b/packages/@aws-cdk/aws-events/lib/rule.ts @@ -132,8 +132,8 @@ export class Rule extends Resource implements IRule { description: this.description, state: props.enabled == null ? 'ENABLED' : (props.enabled ? 'ENABLED' : 'DISABLED'), scheduleExpression: this.scheduleExpression, - eventPattern: Lazy.any({ produce: () => this._renderEventPattern() }), - targets: Lazy.any({ produce: () => this.renderTargets() }), + eventPattern: Lazy.anyValue({ produce: () => this._renderEventPattern() }), + targets: Lazy.anyValue({ produce: () => this.renderTargets() }), eventBusName: props.eventBus && props.eventBus.eventBusName, }); diff --git a/packages/@aws-cdk/aws-events/test/test.input.ts b/packages/@aws-cdk/aws-events/test/test.input.ts index 49c38f63ac1e8..9094e02a5b86b 100644 --- a/packages/@aws-cdk/aws-events/test/test.input.ts +++ b/packages/@aws-cdk/aws-events/test/test.input.ts @@ -156,7 +156,7 @@ export = { schedule: Schedule.rate(cdk.Duration.minutes(1)), }); - const world = cdk.Lazy.string({ produce: () => 'world' }); + const world = cdk.Lazy.stringValue({ produce: () => 'world' }); // WHEN rule.addTarget(new SomeTarget(RuleTargetInput.fromText(`hello ${world}`))); diff --git a/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts b/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts index a2532aecdffa0..f7c1b565af434 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts +++ b/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts @@ -169,7 +169,7 @@ export class EndpointGroup extends cdk.Resource implements IEndpointGroup { const resource = new ga.CfnEndpointGroup(this, 'Resource', { listenerArn: props.listener.listenerArn, endpointGroupRegion: props.region ?? cdk.Stack.of(this).region, - endpointConfigurations: cdk.Lazy.any({ produce: () => this.renderEndpoints() }, { omitEmptyArray: true }), + endpointConfigurations: cdk.Lazy.anyValue({ produce: () => this.renderEndpoints() }, { omitEmptyArray: true }), }); this.endpointGroupArn = resource.attrEndpointGroupArn; diff --git a/packages/@aws-cdk/aws-iam/lib/group.ts b/packages/@aws-cdk/aws-iam/lib/group.ts index eca266f6975dd..6fc5963fdbeeb 100644 --- a/packages/@aws-cdk/aws-iam/lib/group.ts +++ b/packages/@aws-cdk/aws-iam/lib/group.ts @@ -170,7 +170,7 @@ export class Group extends GroupBase { const group = new CfnGroup(this, 'Resource', { groupName: this.physicalName, - managedPolicyArns: Lazy.list({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), + managedPolicyArns: Lazy.listValue({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), path: props.path, }); diff --git a/packages/@aws-cdk/aws-iam/lib/managed-policy.ts b/packages/@aws-cdk/aws-iam/lib/managed-policy.ts index cc8bddc0e8a17..8393f71f58a0d 100644 --- a/packages/@aws-cdk/aws-iam/lib/managed-policy.ts +++ b/packages/@aws-cdk/aws-iam/lib/managed-policy.ts @@ -156,7 +156,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy { */ public static fromAwsManagedPolicyName(managedPolicyName: string): IManagedPolicy { class AwsManagedPolicy implements IManagedPolicy { - public readonly managedPolicyArn = Lazy.uncachedString({ + public readonly managedPolicyArn = Lazy.stringValue({ produce(ctx: IResolveContext) { return Stack.of(ctx.scope).formatArn({ service: 'iam', diff --git a/packages/@aws-cdk/aws-iam/lib/policy.ts b/packages/@aws-cdk/aws-iam/lib/policy.ts index 6c006c6576120..45cd1fb138927 100644 --- a/packages/@aws-cdk/aws-iam/lib/policy.ts +++ b/packages/@aws-cdk/aws-iam/lib/policy.ts @@ -131,7 +131,7 @@ export class Policy extends Resource implements IPolicy { // generatePolicyName will take the last 128 characters of the logical id since // policy names are limited to 128. the last 8 chars are a stack-unique hash, so // that shouod be sufficient to ensure uniqueness within a principal. - Lazy.string({ produce: () => generatePolicyName(scope, resource.logicalId) }), + Lazy.stringValue({ produce: () => generatePolicyName(scope, resource.logicalId) }), }); const self = this; diff --git a/packages/@aws-cdk/aws-iam/lib/role.ts b/packages/@aws-cdk/aws-iam/lib/role.ts index 74e251bd7bc07..3a11bd7fae2d9 100644 --- a/packages/@aws-cdk/aws-iam/lib/role.ts +++ b/packages/@aws-cdk/aws-iam/lib/role.ts @@ -326,7 +326,7 @@ export class Role extends Resource implements IRole { const role = new CfnRole(this, 'Resource', { assumeRolePolicyDocument: this.assumeRolePolicy as any, - managedPolicyArns: Lazy.list({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), + managedPolicyArns: Lazy.listValue({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), policies: _flatten(this.inlinePolicies), path: props.path, permissionsBoundary: this.permissionsBoundary ? this.permissionsBoundary.managedPolicyArn : undefined, diff --git a/packages/@aws-cdk/aws-iam/lib/user.ts b/packages/@aws-cdk/aws-iam/lib/user.ts index a8c3b61443771..c6c0799d2bc8d 100644 --- a/packages/@aws-cdk/aws-iam/lib/user.ts +++ b/packages/@aws-cdk/aws-iam/lib/user.ts @@ -217,7 +217,7 @@ export class User extends Resource implements IIdentity, IUser { const user = new CfnUser(this, 'Resource', { userName: this.physicalName, groups: undefinedIfEmpty(() => this.groups), - managedPolicyArns: Lazy.list({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), + managedPolicyArns: Lazy.listValue({ produce: () => this.managedPolicies.map(p => p.managedPolicyArn) }, { omitEmpty: true }), path: props.path, permissionsBoundary: this.permissionsBoundary ? this.permissionsBoundary.managedPolicyArn : undefined, loginProfile: this.parseLoginProfile(props), diff --git a/packages/@aws-cdk/aws-iam/lib/util.ts b/packages/@aws-cdk/aws-iam/lib/util.ts index b5f1700baefe7..545d5bc9de439 100644 --- a/packages/@aws-cdk/aws-iam/lib/util.ts +++ b/packages/@aws-cdk/aws-iam/lib/util.ts @@ -5,7 +5,7 @@ import { IPolicy } from './policy'; const MAX_POLICY_NAME_LEN = 128; export function undefinedIfEmpty(f: () => string[]): string[] { - return Lazy.list({ + return Lazy.listValue({ produce: () => { const array = f(); return (array && array.length > 0) ? array : undefined; diff --git a/packages/@aws-cdk/aws-iam/test/cross-account.test.ts b/packages/@aws-cdk/aws-iam/test/cross-account.test.ts index c3a45ec730580..f3e8a7769d6cf 100644 --- a/packages/@aws-cdk/aws-iam/test/cross-account.test.ts +++ b/packages/@aws-cdk/aws-iam/test/cross-account.test.ts @@ -170,7 +170,7 @@ class FakeResource extends cdk.Resource implements iam.IResourceWithPolicy { new cdk.CfnResource(this, 'Default', { type: 'Test::Fake::Resource', properties: { - ResourcePolicy: cdk.Lazy.any({ produce: () => this.policy }), + ResourcePolicy: cdk.Lazy.anyValue({ produce: () => this.policy }), }, }); } diff --git a/packages/@aws-cdk/aws-iam/test/policy-document.test.ts b/packages/@aws-cdk/aws-iam/test/policy-document.test.ts index d8a9b1337c21c..9ce8b5f9ec6c8 100644 --- a/packages/@aws-cdk/aws-iam/test/policy-document.test.ts +++ b/packages/@aws-cdk/aws-iam/test/policy-document.test.ts @@ -311,8 +311,8 @@ describe('IAM policy document', () => { const stack = new Stack(); const statement = new PolicyStatement(); - statement.addActions(...Lazy.list({ produce: () => ['a', 'b', 'c'] })); - statement.addResources(...Lazy.list({ produce: () => ['x', 'y', 'z'] })); + statement.addActions(...Lazy.listValue({ produce: () => ['a', 'b', 'c'] })); + statement.addResources(...Lazy.listValue({ produce: () => ['x', 'y', 'z'] })); expect(stack.resolve(statement.toStatementJson())).toEqual({ Effect: 'Allow', @@ -558,7 +558,7 @@ describe('IAM policy document', () => { // WHEN const p = new ArnPrincipal('arn:of:principal').withConditions({ - StringEquals: Lazy.any({ produce: () => ({ goo: 'zar' }) }), + StringEquals: Lazy.anyValue({ produce: () => ({ goo: 'zar' }) }), }); statement.addPrincipals(p); @@ -582,7 +582,7 @@ describe('IAM policy document', () => { const p = new FederatedPrincipal('fed', { StringEquals: { foo: 'bar' }, }).withConditions({ - StringEquals: Lazy.any({ produce: () => ({ goo: 'zar' }) }), + StringEquals: Lazy.anyValue({ produce: () => ({ goo: 'zar' }) }), }); const statement = new PolicyStatement(); @@ -644,12 +644,12 @@ describe('IAM policy document', () => { const p = new PolicyDocument(); const statement1 = new PolicyStatement(); - statement1.addResources(Lazy.string({ produce: () => 'resource' })); - statement1.addActions(Lazy.string({ produce: () => 'action' })); + statement1.addResources(Lazy.stringValue({ produce: () => 'resource' })); + statement1.addActions(Lazy.stringValue({ produce: () => 'action' })); const statement2 = new PolicyStatement(); - statement2.addResources(Lazy.string({ produce: () => 'resource' })); - statement2.addActions(Lazy.string({ produce: () => 'action' })); + statement2.addResources(Lazy.stringValue({ produce: () => 'resource' })); + statement2.addActions(Lazy.stringValue({ produce: () => 'action' })); // WHEN p.addStatements(statement1); diff --git a/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts b/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts index afe6fb576f298..a5044fa6722d2 100644 --- a/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts +++ b/packages/@aws-cdk/aws-iam/test/role.from-role-arn.test.ts @@ -305,7 +305,7 @@ describe('IAM Role.fromRoleArn', () => { }); describe('imported with a dynamic ARN', () => { - const dynamicValue = Lazy.string({ produce: () => 'role-arn' }); + const dynamicValue = Lazy.stringValue({ produce: () => 'role-arn' }); const roleName: any = { 'Fn::Select': [1, { diff --git a/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts b/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts index 76e437de0ae34..b8791c99017ec 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts +++ b/packages/@aws-cdk/aws-lambda-event-sources/test/test.kinesis.ts @@ -144,7 +144,7 @@ export = { // WHEN fn.addEventSource(new sources.KinesisEventSource(stream, { - batchSize: cdk.Lazy.number({ produce: () => 10 }), + batchSize: cdk.Lazy.numberValue({ produce: () => 10 }), startingPosition: lambda.StartingPosition.LATEST, })); diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile b/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile index a92d2fd2092cc..1ae008af898bb 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/Dockerfile @@ -16,11 +16,6 @@ RUN mkdir /tmp/npm-cache && \ chmod -R 777 /tmp/npm-cache && \ npm config --global set cache /tmp/npm-cache -# Ensure all users can write to yarn cache -RUN mkdir /tmp/yarn-cache && \ - chmod -R 777 /tmp/yarn-cache && \ - yarn config set cache-folder /tmp/yarn-cache - # Disable npm update notifications RUN npm config --global set update-notifier false diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts index afc370fcb200c..0ee96aa53f74c 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/util.ts @@ -92,10 +92,7 @@ export function exec(cmd: string, args: string[], options?: SpawnSyncOptions) { } /** - * Extract versions for a list of modules. - * - * First lookup the version in the package.json and then fallback to requiring - * the module's package.json. The fallback is needed for transitive dependencies. + * Extract dependencies from a package.json */ export function extractDependencies(pkgPath: string, modules: string[]): { [key: string]: string } { const dependencies: { [key: string]: string } = {}; @@ -110,13 +107,10 @@ export function extractDependencies(pkgPath: string, modules: string[]): { [key: }; for (const mod of modules) { - try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const version = pkgDependencies[mod] ?? require(`${mod}/package.json`).version; - dependencies[mod] = version; - } catch (err) { - throw new Error(`Cannot extract version for module '${mod}'. Check that it's referenced in your package.json or installed.`); + if (!pkgDependencies[mod]) { + throw new Error(`Cannot extract version for module '${mod}' in package.json`); } + dependencies[mod] = pkgDependencies[mod]; } return dependencies; diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts index efdbd8b8aa4cc..8dc9177cffd44 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/docker.test.ts @@ -5,7 +5,7 @@ beforeAll(() => { spawnSync('docker', ['build', '-t', 'esbuild', path.join(__dirname, '../lib')]); }); -test('esbuild is available', () => { +test('esbuild is available', async () => { const proc = spawnSync('docker', [ 'run', 'esbuild', 'esbuild', '--version', @@ -13,7 +13,7 @@ test('esbuild is available', () => { expect(proc.status).toEqual(0); }); -test('can npm install with non root user', () => { +test('can npm install with non root user', async () => { const proc = spawnSync('docker', [ 'run', '-u', '1000:1000', 'esbuild', @@ -26,7 +26,7 @@ test('can npm install with non root user', () => { expect(proc.status).toEqual(0); }); -test('can yarn install with non root user', () => { +test('can yarn install with non root user', async () => { const proc = spawnSync('docker', [ 'run', '-u', '500:500', 'esbuild', @@ -38,14 +38,3 @@ test('can yarn install with non root user', () => { ]); expect(proc.status).toEqual(0); }); - -test('cache folders have the right permissions', () => { - const proc = spawnSync('docker', [ - 'run', 'esbuild', - 'bash', '-c', [ - 'stat -c \'%a\' /tmp/npm-cache', - 'stat -c \'%a\' /tmp/yarn-cache', - ].join(' && '), - ]); - expect(proc.stdout.toString()).toMatch('777\n777'); -}); diff --git a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts index 6319008d9f2ec..dc81c331239a0 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/test/util.test.ts @@ -89,7 +89,7 @@ describe('exec', () => { }); describe('extractDependencies', () => { - test('with dependencies referenced in package.json', () => { + test('with depencies referenced in package.json', () => { const deps = extractDependencies( path.join(__dirname, '../package.json'), ['@aws-cdk/aws-lambda', '@aws-cdk/core'], @@ -100,21 +100,11 @@ describe('extractDependencies', () => { ]); }); - test('with transitive dependencies', () => { - expect(extractDependencies( - path.join(__dirname, '../package.json'), - ['typescript'], - )).toEqual({ - // eslint-disable-next-line @typescript-eslint/no-require-imports, import/no-extraneous-dependencies - typescript: require('typescript/package.json').version, - }); - }); - test('with unknown dependency', () => { expect(() => extractDependencies( path.join(__dirname, '../package.json'), ['unknown'], - )).toThrow(/Cannot extract version for module 'unknown'/); + )).toThrow(/Cannot extract version for module 'unknown' in package.json/); }); }); diff --git a/packages/@aws-cdk/aws-lambda/lib/function-base.ts b/packages/@aws-cdk/aws-lambda/lib/function-base.ts index 8b8dd585c21c2..d02f355f0c5f3 100644 --- a/packages/@aws-cdk/aws-lambda/lib/function-base.ts +++ b/packages/@aws-cdk/aws-lambda/lib/function-base.ts @@ -106,17 +106,6 @@ export interface IFunction extends IResource, ec2.IConnectable, iam.IGrantable { */ metricThrottles(props?: cloudwatch.MetricOptions): cloudwatch.Metric; - /** - * Adds an event source to this function. - * - * Event sources are implemented in the @aws-cdk/aws-lambda-event-sources module. - * - * The following example adds an SQS Queue as an event source: - * ``` - * import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources'; - * myFunction.addEventSource(new SqsEventSource(myQueue)); - * ``` - */ addEventSource(source: IEventSource): void; /** @@ -340,6 +329,18 @@ export abstract class FunctionBase extends Resource implements IFunction { return grant; } + /** + * Adds an event source to this function. + * + * Event sources are implemented in the @aws-cdk/aws-lambda-event-sources module. + * + * The following example adds an SQS Queue as an event source: + * + * import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources'; + * myFunction.addEventSource(new SqsEventSource(myQueue)); + * + * @param source The event source to bind to this function + */ public addEventSource(source: IEventSource) { source.bind(this); } diff --git a/packages/@aws-cdk/aws-lambda/lib/function.ts b/packages/@aws-cdk/aws-lambda/lib/function.ts index d2000fd32d342..e2d81c064c894 100644 --- a/packages/@aws-cdk/aws-lambda/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda/lib/function.ts @@ -348,8 +348,8 @@ export class Function extends FunctionBase { const cfn = this._currentVersion.node.defaultChild as CfnResource; const originalLogicalId = this.stack.resolve(cfn.logicalId) as string; - cfn.overrideLogicalId(Lazy.uncachedString({ - produce: () => { + cfn.overrideLogicalId(Lazy.stringValue({ + produce: _ => { const hash = calculateFunctionHash(this); const logicalId = trimFromStart(originalLogicalId, 255 - 32); return `${logicalId}${hash}`; @@ -599,14 +599,12 @@ export class Function extends FunctionBase { s3ObjectVersion: code.s3Location && code.s3Location.objectVersion, zipFile: code.inlineCode, }, - layers: Lazy.list({ produce: () => this.layers.map(layer => layer.layerVersionArn) }, { omitEmpty: true }), + layers: Lazy.listValue({ produce: () => this.layers.map(layer => layer.layerVersionArn) }, { omitEmpty: true }), handler: props.handler, timeout: props.timeout && props.timeout.toSeconds(), runtime: props.runtime.name, role: this.role.roleArn, - // Uncached because calling '_checkEdgeCompatibility', which gets called in the resolve of another - // Token, actually *modifies* the 'environment' map. - environment: Lazy.uncachedAny({ produce: () => this.renderEnvironment() }), + environment: Lazy.anyValue({ produce: () => this.renderEnvironment() }), memorySize: props.memorySize, vpcConfig: this.configureVpc(props), deadLetterConfig: this.buildDeadLetterConfig(this.deadLetterQueue), diff --git a/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts b/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts index b51d866ac815d..2156b2d87cfb5 100644 --- a/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts +++ b/packages/@aws-cdk/aws-lambda/lib/lambda-version.ts @@ -251,7 +251,7 @@ export class Version extends QualifiedFunctionBase implements IVersion { // Check compatibility at synthesis. It could be that the version was associated // with a CloudFront distribution first and made incompatible afterwards. - return Lazy.string({ + return Lazy.stringValue({ produce: () => { // Validate that the underlying function can be used for Lambda@Edge if (this.lambda instanceof Function) { diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index 9aa9de96783bf..b7fcd7738285f 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -165,6 +165,7 @@ "docs-public-apis:@aws-cdk/aws-lambda.FunctionProps", "docs-public-apis:@aws-cdk/aws-lambda.IAlias", "docs-public-apis:@aws-cdk/aws-lambda.IFunction", + "docs-public-apis:@aws-cdk/aws-lambda.IFunction.addEventSource", "docs-public-apis:@aws-cdk/aws-lambda.ILayerVersion", "docs-public-apis:@aws-cdk/aws-lambda.IVersion", "docs-public-apis:@aws-cdk/aws-lambda.LambdaRuntimeProps", diff --git a/packages/@aws-cdk/aws-lambda/test/alias.test.ts b/packages/@aws-cdk/aws-lambda/test/alias.test.ts index 1f25aa1a6a823..334e40607ed5c 100644 --- a/packages/@aws-cdk/aws-lambda/test/alias.test.ts +++ b/packages/@aws-cdk/aws-lambda/test/alias.test.ts @@ -499,7 +499,7 @@ describe('alias', () => { // WHEN const target = alias.addAutoScaling({ maxCapacity: 5 }); - target.scaleOnUtilization({ utilizationTarget: Lazy.number({ produce: () => 0.95 }) }); + target.scaleOnUtilization({ utilizationTarget: Lazy.numberValue({ produce: () => 0.95 }) }); // THEN: no exception expect(stack).toHaveResource('AWS::ApplicationAutoScaling::ScalingPolicy', { diff --git a/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts b/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts index be42067f263f1..78c11922bf183 100644 --- a/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts +++ b/packages/@aws-cdk/aws-lambda/test/event-source-mapping.test.ts @@ -89,7 +89,7 @@ describe('event source mapping', () => { new EventSourceMapping(stack, 'test', { target: fn, eventSourceArn: '', - retryAttempts: cdk.Lazy.number({ produce: () => 100 }), + retryAttempts: cdk.Lazy.numberValue({ produce: () => 100 }), }); }); @@ -134,7 +134,7 @@ describe('event source mapping', () => { new EventSourceMapping(stack, 'test', { target: fn, eventSourceArn: '', - parallelizationFactor: cdk.Lazy.number({ produce: () => 20 }), + parallelizationFactor: cdk.Lazy.numberValue({ produce: () => 20 }), }); }); diff --git a/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts b/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts index f9dfefdfed9f6..0f428fb03bc77 100644 --- a/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts +++ b/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts @@ -69,7 +69,7 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri super(scope, id, { physicalName: props.destinationName || // In the underlying model, the name is not optional, but we make it so anyway. - cdk.Lazy.string({ produce: () => this.generateUniqueName() }), + cdk.Lazy.stringValue({ produce: () => this.generateUniqueName() }), }); this.resource = new CfnDestination(this, 'Resource', { @@ -109,7 +109,7 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri * Return a stringified JSON version of the PolicyDocument */ private lazyStringifiedPolicyDocument(): string { - return cdk.Lazy.string({ + return cdk.Lazy.stringValue({ produce: () => this.policyDocument.isEmpty ? '' : cdk.Stack.of(this).toJsonString(this.policyDocument), }); diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index cb94b643c34c2..08a4607f990b3 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/aws-networkfirewall/.eslintrc.js b/packages/@aws-cdk/aws-networkfirewall/.eslintrc.js deleted file mode 100644 index 61dd8dd001f63..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-networkfirewall/.gitignore b/packages/@aws-cdk/aws-networkfirewall/.gitignore deleted file mode 100644 index 62ebc95d75ce6..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*.js -*.js.map -*.d.ts -tsconfig.json -node_modules -*.generated.ts -dist -.jsii - -.LAST_BUILD -.nyc_output -coverage -.nycrc -.LAST_PACKAGE -*.snk -nyc.config.js -!.eslintrc.js -!jest.config.js -junit.xml diff --git a/packages/@aws-cdk/aws-networkfirewall/.npmignore b/packages/@aws-cdk/aws-networkfirewall/.npmignore deleted file mode 100644 index e4486030fcb17..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Don't include original .ts files when doing `npm pack` -*.ts -!*.d.ts -coverage -.nyc_output -*.tgz - -dist -.LAST_PACKAGE -.LAST_BUILD -!*.js - -# Include .jsii -!.jsii - -*.snk - -*.tsbuildinfo - -tsconfig.json - -.eslintrc.js -jest.config.js - -# exclude cdk artifacts -**/cdk.out -junit.xml -test/ diff --git a/packages/@aws-cdk/aws-networkfirewall/LICENSE b/packages/@aws-cdk/aws-networkfirewall/LICENSE deleted file mode 100644 index b71ec1688783a..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/@aws-cdk/aws-networkfirewall/NOTICE b/packages/@aws-cdk/aws-networkfirewall/NOTICE deleted file mode 100644 index bfccac9a7f69c..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AWS Cloud Development Kit (AWS CDK) -Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-networkfirewall/README.md b/packages/@aws-cdk/aws-networkfirewall/README.md deleted file mode 100644 index 8593ffd675be5..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/README.md +++ /dev/null @@ -1,16 +0,0 @@ -## AWS::NetworkFirewall Construct Library - ---- - -![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) - -> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use. - ---- - - -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -```ts -import networkfirewall = require('@aws-cdk/aws-networkfirewall'); -``` diff --git a/packages/@aws-cdk/aws-networkfirewall/jest.config.js b/packages/@aws-cdk/aws-networkfirewall/jest.config.js deleted file mode 100644 index 54e28beb9798b..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/jest.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/jest.config'); -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-networkfirewall/lib/index.ts b/packages/@aws-cdk/aws-networkfirewall/lib/index.ts deleted file mode 100644 index 1aa22b2582738..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// AWS::NetworkFirewall CloudFormation Resources: -export * from './networkfirewall.generated'; diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json deleted file mode 100644 index bed643d933830..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "@aws-cdk/aws-networkfirewall", - "version": "0.0.0", - "description": "The CDK Construct Library for AWS::NetworkFirewall", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "jsii": { - "outdir": "dist", - "projectReferences": true, - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.NetworkFirewall", - "packageId": "Amazon.CDK.AWS.NetworkFirewall", - "signAssembly": true, - "assemblyOriginatorKeyFile": "../../key.snk", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" - }, - "java": { - "package": "software.amazon.awscdk.services.networkfirewall", - "maven": { - "groupId": "software.amazon.awscdk", - "artifactId": "networkfirewall" - } - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 1" - ], - "distName": "aws-cdk.aws-networkfirewall", - "module": "aws_cdk.aws_networkfirewall" - } - } - }, - "repository": { - "type": "git", - "url": "https://github.com/aws/aws-cdk.git", - "directory": "packages/@aws-cdk/aws-networkfirewall" - }, - "homepage": "https://github.com/aws/aws-cdk", - "scripts": { - "build": "cdk-build", - "watch": "cdk-watch", - "lint": "cdk-lint", - "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f", - "package": "cdk-package", - "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", - "build+test+package": "npm run build+test && npm run package", - "build+test": "npm run build && npm test", - "compat": "cdk-compat", - "gen": "cfn2ts" - }, - "cdk-build": { - "cloudformation": "AWS::NetworkFirewall", - "jest": true, - "env": { - "AWSLINT_BASE_CONSTRUCT": "true" - } - }, - "keywords": [ - "aws", - "cdk", - "constructs", - "AWS::NetworkFirewall", - "aws-networkfirewall" - ], - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com", - "organization": true - }, - "license": "Apache-2.0", - "devDependencies": { - "@aws-cdk/assert": "0.0.0", - "cdk-build-tools": "0.0.0", - "cfn2ts": "0.0.0", - "pkglint": "0.0.0" - }, - "dependencies": { - "@aws-cdk/core": "0.0.0" - }, - "peerDependencies": { - "@aws-cdk/core": "0.0.0" - }, - "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" - }, - "stability": "experimental", - "maturity": "cfn-only", - "awscdkio": { - "announce": false - }, - "private": true -} diff --git a/packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts b/packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts deleted file mode 100644 index e394ef336bfb4..0000000000000 --- a/packages/@aws-cdk/aws-networkfirewall/test/networkfirewall.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@aws-cdk/assert/jest'; -import {} from '../lib'; - -test('No tests are specified for this package', () => { - expect(true).toBe(true); -}); diff --git a/packages/@aws-cdk/aws-rds/lib/instance.ts b/packages/@aws-cdk/aws-rds/lib/instance.ts index feb44facab4d2..392c75ef3564c 100644 --- a/packages/@aws-cdk/aws-rds/lib/instance.ts +++ b/packages/@aws-cdk/aws-rds/lib/instance.ts @@ -643,7 +643,7 @@ abstract class DatabaseInstanceNew extends DatabaseInstanceBase implements IData this.connections = new ec2.Connections({ securityGroups, - defaultPort: ec2.Port.tcp(Lazy.number({ produce: () => this.instanceEndpoint.port })), + defaultPort: ec2.Port.tcp(Lazy.numberValue({ produce: () => this.instanceEndpoint.port })), }); let monitoringRole; @@ -683,13 +683,13 @@ abstract class DatabaseInstanceNew extends DatabaseInstanceBase implements IData availabilityZone: props.multiAz ? undefined : props.availabilityZone, backupRetentionPeriod: props.backupRetention ? props.backupRetention.toDays() : undefined, copyTagsToSnapshot: props.copyTagsToSnapshot !== undefined ? props.copyTagsToSnapshot : true, - dbInstanceClass: Lazy.string({ produce: () => `db.${this.instanceType}` }), + dbInstanceClass: Lazy.stringValue({ produce: () => `db.${this.instanceType}` }), dbInstanceIdentifier: props.instanceIdentifier, dbSubnetGroupName: subnetGroup.subnetGroupName, deleteAutomatedBackups: props.deleteAutomatedBackups, deletionProtection: defaultDeletionProtection(props.deletionProtection, props.removalPolicy), enableCloudwatchLogsExports: this.cloudwatchLogsExports, - enableIamDatabaseAuthentication: Lazy.any({ produce: () => this.enableIamAuthentication }), + enableIamDatabaseAuthentication: Lazy.anyValue({ produce: () => this.enableIamAuthentication }), enablePerformanceInsights: enablePerformanceInsights || props.enablePerformanceInsights, // fall back to undefined if not set, iops, monitoringInterval: props.monitoringInterval && props.monitoringInterval.toSeconds(), diff --git a/packages/@aws-cdk/aws-rds/lib/option-group.ts b/packages/@aws-cdk/aws-rds/lib/option-group.ts index 91dad4f8caffa..7e29fe7495e3a 100644 --- a/packages/@aws-cdk/aws-rds/lib/option-group.ts +++ b/packages/@aws-cdk/aws-rds/lib/option-group.ts @@ -135,7 +135,7 @@ export class OptionGroup extends Resource implements IOptionGroup { engineName: props.engine.engineType, majorEngineVersion, optionGroupDescription: props.description || `Option group for ${props.engine.engineType} ${majorEngineVersion}`, - optionConfigurations: Lazy.any({ produce: () => this.renderConfigurations(this.configurations) }), + optionConfigurations: Lazy.anyValue({ produce: () => this.renderConfigurations(this.configurations) }), }); this.optionGroupName = optionGroup.ref; diff --git a/packages/@aws-cdk/aws-rds/lib/parameter-group.ts b/packages/@aws-cdk/aws-rds/lib/parameter-group.ts index 0a1971c3ac843..23647b921efd8 100644 --- a/packages/@aws-cdk/aws-rds/lib/parameter-group.ts +++ b/packages/@aws-cdk/aws-rds/lib/parameter-group.ts @@ -139,7 +139,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { this.clusterCfnGroup = new CfnDBClusterParameterGroup(this, id, { description: this.description || `Cluster parameter group for ${this.family}`, family: this.family, - parameters: Lazy.any({ produce: () => this.parameters }), + parameters: Lazy.anyValue({ produce: () => this.parameters }), }); } return { @@ -153,7 +153,7 @@ export class ParameterGroup extends Resource implements IParameterGroup { this.instanceCfnGroup = new CfnDBParameterGroup(this, id, { description: this.description || `Parameter group for ${this.family}`, family: this.family, - parameters: Lazy.any({ produce: () => this.parameters }), + parameters: Lazy.anyValue({ produce: () => this.parameters }), }); } return { diff --git a/packages/@aws-cdk/aws-redshift/lib/cluster.ts b/packages/@aws-cdk/aws-redshift/lib/cluster.ts index 9126ef4fda737..098055ada1042 100644 --- a/packages/@aws-cdk/aws-redshift/lib/cluster.ts +++ b/packages/@aws-cdk/aws-redshift/lib/cluster.ts @@ -553,9 +553,6 @@ export class Cluster extends ClusterBase { } return undefined; } else { - if (Token.isUnresolved(numberOfNodes)) { - return numberOfNodes; - } const nodeCount = numberOfNodes ?? 2; if (nodeCount < 2 || nodeCount > 100) { throw new Error('Number of nodes for cluster type multi-node must be at least 2 and no more than 100'); diff --git a/packages/@aws-cdk/aws-redshift/test/cluster.test.ts b/packages/@aws-cdk/aws-redshift/test/cluster.test.ts index bb6c966fed284..e8c38692dcb45 100644 --- a/packages/@aws-cdk/aws-redshift/test/cluster.test.ts +++ b/packages/@aws-cdk/aws-redshift/test/cluster.test.ts @@ -210,30 +210,6 @@ describe('node count', () => { }); }).toThrow(/Number of nodes for cluster type multi-node must be at least 2 and no more than 100/); }); - - test('Multi-Node Clusters should allow input parameter for number of nodes', () => { - // WHEN - const numberOfNodesParam = new cdk.CfnParameter(stack, 'numberOfNodes', { - type: 'Number', - }); - - new Cluster(stack, 'Redshift', { - masterUser: { - masterUsername: 'admin', - }, - vpc, - clusterType: ClusterType.MULTI_NODE, - numberOfNodes: numberOfNodesParam.valueAsNumber, - }); - - // THEN - cdkExpect(stack).to(haveResource('AWS::Redshift::Cluster', { - ClusterType: 'multi-node', - NumberOfNodes: { - Ref: 'numberOfNodes', - }, - })); - }); }); test('create an encrypted cluster with custom KMS key', () => { diff --git a/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts b/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts index f11e9ae180e7f..b489ffdcb3584 100644 --- a/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts +++ b/packages/@aws-cdk/aws-route53/lib/hosted-zone.ts @@ -157,7 +157,7 @@ export class HostedZone extends Resource implements IHostedZone { name: props.zoneName + '.', hostedZoneConfig: props.comment ? { comment: props.comment } : undefined, queryLoggingConfig: props.queryLogsLogGroupArn ? { cloudWatchLogsLogGroupArn: props.queryLogsLogGroupArn } : undefined, - vpcs: Lazy.any({ produce: () => this.vpcs.length === 0 ? undefined : this.vpcs }), + vpcs: Lazy.anyValue({ produce: () => this.vpcs.length === 0 ? undefined : this.vpcs }), }); this.hostedZoneId = resource.ref; diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index 27891b7b7981a..650accdcf2fd9 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-s3/lib/bucket.ts b/packages/@aws-cdk/aws-s3/lib/bucket.ts index 305674a847a15..f1752cc402b5e 100644 --- a/packages/@aws-cdk/aws-s3/lib/bucket.ts +++ b/packages/@aws-cdk/aws-s3/lib/bucket.ts @@ -1246,14 +1246,14 @@ export class Bucket extends BucketBase { bucketName: this.physicalName, bucketEncryption, versioningConfiguration: props.versioned ? { status: 'Enabled' } : undefined, - lifecycleConfiguration: Lazy.any({ produce: () => this.parseLifecycleConfiguration() }), + lifecycleConfiguration: Lazy.anyValue({ produce: () => this.parseLifecycleConfiguration() }), websiteConfiguration, publicAccessBlockConfiguration: props.blockPublicAccess, - metricsConfigurations: Lazy.any({ produce: () => this.parseMetricConfiguration() }), - corsConfiguration: Lazy.any({ produce: () => this.parseCorsConfiguration() }), - accessControl: Lazy.string({ produce: () => this.accessControl }), + metricsConfigurations: Lazy.anyValue({ produce: () => this.parseMetricConfiguration() }), + corsConfiguration: Lazy.anyValue({ produce: () => this.parseCorsConfiguration() }), + accessControl: Lazy.stringValue({ produce: () => this.accessControl }), loggingConfiguration: this.parseServerAccessLogs(props), - inventoryConfigurations: Lazy.any({ produce: () => this.parseInventoryConfiguration() }), + inventoryConfigurations: Lazy.anyValue({ produce: () => this.parseInventoryConfiguration() }), }); resource.applyRemovalPolicy(props.removalPolicy); diff --git a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts index 91bb688b28857..e1cf34982a3c9 100644 --- a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts +++ b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts @@ -107,7 +107,7 @@ export class BucketNotifications extends cdk.Construct { properties: { ServiceToken: handlerArn, BucketName: this.bucket.bucketName, - NotificationConfiguration: cdk.Lazy.any({ produce: () => this.renderNotificationConfiguration() }), + NotificationConfiguration: cdk.Lazy.anyValue({ produce: () => this.renderNotificationConfiguration() }), }, }); } diff --git a/packages/@aws-cdk/aws-s3/test/bucket.test.ts b/packages/@aws-cdk/aws-s3/test/bucket.test.ts index 900a33852beef..275f4bc6aa822 100644 --- a/packages/@aws-cdk/aws-s3/test/bucket.test.ts +++ b/packages/@aws-cdk/aws-s3/test/bucket.test.ts @@ -107,7 +107,7 @@ nodeunitShim({ const stack = new cdk.Stack(); test.doesNotThrow(() => new s3.Bucket(stack, 'MyBucket', { - bucketName: cdk.Lazy.string({ produce: () => '_BUCKET' }), + bucketName: cdk.Lazy.stringValue({ produce: () => '_BUCKET' }), })); test.done(); diff --git a/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts b/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts index 72c056d913693..714411640e83c 100644 --- a/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts +++ b/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts @@ -126,7 +126,7 @@ export class ReceiptRule extends Resource implements IReceiptRule { const resource = new CfnReceiptRule(this, 'Resource', { after: props.after ? props.after.receiptRuleName : undefined, rule: { - actions: Lazy.any({ produce: () => this.renderActions() }), + actions: Lazy.anyValue({ produce: () => this.renderActions() }), enabled: props.enabled === undefined ? true : props.enabled, name: this.physicalName, recipients: props.recipients, diff --git a/packages/@aws-cdk/aws-signer/.eslintrc.js b/packages/@aws-cdk/aws-signer/.eslintrc.js deleted file mode 100644 index 61dd8dd001f63..0000000000000 --- a/packages/@aws-cdk/aws-signer/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-signer/.gitignore b/packages/@aws-cdk/aws-signer/.gitignore deleted file mode 100644 index 62ebc95d75ce6..0000000000000 --- a/packages/@aws-cdk/aws-signer/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*.js -*.js.map -*.d.ts -tsconfig.json -node_modules -*.generated.ts -dist -.jsii - -.LAST_BUILD -.nyc_output -coverage -.nycrc -.LAST_PACKAGE -*.snk -nyc.config.js -!.eslintrc.js -!jest.config.js -junit.xml diff --git a/packages/@aws-cdk/aws-signer/.npmignore b/packages/@aws-cdk/aws-signer/.npmignore deleted file mode 100644 index e4486030fcb17..0000000000000 --- a/packages/@aws-cdk/aws-signer/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Don't include original .ts files when doing `npm pack` -*.ts -!*.d.ts -coverage -.nyc_output -*.tgz - -dist -.LAST_PACKAGE -.LAST_BUILD -!*.js - -# Include .jsii -!.jsii - -*.snk - -*.tsbuildinfo - -tsconfig.json - -.eslintrc.js -jest.config.js - -# exclude cdk artifacts -**/cdk.out -junit.xml -test/ diff --git a/packages/@aws-cdk/aws-signer/LICENSE b/packages/@aws-cdk/aws-signer/LICENSE deleted file mode 100644 index b71ec1688783a..0000000000000 --- a/packages/@aws-cdk/aws-signer/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/@aws-cdk/aws-signer/NOTICE b/packages/@aws-cdk/aws-signer/NOTICE deleted file mode 100644 index bfccac9a7f69c..0000000000000 --- a/packages/@aws-cdk/aws-signer/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AWS Cloud Development Kit (AWS CDK) -Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-signer/README.md b/packages/@aws-cdk/aws-signer/README.md deleted file mode 100644 index 8bdebf06d67dd..0000000000000 --- a/packages/@aws-cdk/aws-signer/README.md +++ /dev/null @@ -1,16 +0,0 @@ -## AWS::Signer Construct Library - ---- - -![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) - -> All classes with the `Cfn` prefix in this module ([CFN Resources](https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib)) are always stable and safe to use. - ---- - - -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -```ts -import signer = require('@aws-cdk/aws-signer'); -``` diff --git a/packages/@aws-cdk/aws-signer/jest.config.js b/packages/@aws-cdk/aws-signer/jest.config.js deleted file mode 100644 index 54e28beb9798b..0000000000000 --- a/packages/@aws-cdk/aws-signer/jest.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/jest.config'); -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-signer/lib/index.ts b/packages/@aws-cdk/aws-signer/lib/index.ts deleted file mode 100644 index 9c56379e86c19..0000000000000 --- a/packages/@aws-cdk/aws-signer/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// AWS::Signer CloudFormation Resources: -export * from './signer.generated'; diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json deleted file mode 100644 index 2da1685ac8341..0000000000000 --- a/packages/@aws-cdk/aws-signer/package.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "name": "@aws-cdk/aws-signer", - "version": "0.0.0", - "description": "The CDK Construct Library for AWS::Signer", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "jsii": { - "outdir": "dist", - "projectReferences": true, - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.Signer", - "packageId": "Amazon.CDK.AWS.Signer", - "signAssembly": true, - "assemblyOriginatorKeyFile": "../../key.snk", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" - }, - "java": { - "package": "software.amazon.awscdk.services.signer", - "maven": { - "groupId": "software.amazon.awscdk", - "artifactId": "signer" - } - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 1" - ], - "distName": "aws-cdk.aws-signer", - "module": "aws_cdk.aws_signer" - } - } - }, - "repository": { - "type": "git", - "url": "https://github.com/aws/aws-cdk.git", - "directory": "packages/@aws-cdk/aws-signer" - }, - "homepage": "https://github.com/aws/aws-cdk", - "scripts": { - "build": "cdk-build", - "watch": "cdk-watch", - "lint": "cdk-lint", - "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f", - "package": "cdk-package", - "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", - "build+test+package": "npm run build+test && npm run package", - "build+test": "npm run build && npm test", - "compat": "cdk-compat", - "gen": "cfn2ts" - }, - "cdk-build": { - "cloudformation": "AWS::Signer", - "jest": true, - "env": { - "AWSLINT_BASE_CONSTRUCT": "true" - } - }, - "keywords": [ - "aws", - "cdk", - "constructs", - "AWS::Signer", - "aws-signer" - ], - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com", - "organization": true - }, - "license": "Apache-2.0", - "devDependencies": { - "@aws-cdk/assert": "0.0.0", - "cdk-build-tools": "0.0.0", - "cfn2ts": "0.0.0", - "pkglint": "0.0.0" - }, - "dependencies": { - "@aws-cdk/core": "0.0.0" - }, - "peerDependencies": { - "@aws-cdk/core": "0.0.0" - }, - "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" - }, - "stability": "experimental", - "maturity": "cfn-only", - "awscdkio": { - "announce": false - }, - "private": true -} diff --git a/packages/@aws-cdk/aws-signer/test/signer.test.ts b/packages/@aws-cdk/aws-signer/test/signer.test.ts deleted file mode 100644 index e394ef336bfb4..0000000000000 --- a/packages/@aws-cdk/aws-signer/test/signer.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@aws-cdk/assert/jest'; -import {} from '../lib'; - -test('No tests are specified for this package', () => { - expect(true).toBe(true); -}); diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index fc67604e48d64..eaa413c4a8cb0 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -75,7 +75,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", diff --git a/packages/@aws-cdk/aws-ssm/test/test.parameter.ts b/packages/@aws-cdk/aws-ssm/test/test.parameter.ts index 9734ddb4fdd9a..cf7a43f3f3c2b 100644 --- a/packages/@aws-cdk/aws-ssm/test/test.parameter.ts +++ b/packages/@aws-cdk/aws-ssm/test/test.parameter.ts @@ -69,7 +69,7 @@ export = { test.doesNotThrow(() => { new ssm.StringParameter(stack, 'Parameter', { allowedPattern: '^Bar$', - stringValue: cdk.Lazy.string({ produce: () => 'Foo!' }), + stringValue: cdk.Lazy.stringValue({ produce: () => 'Foo!' }), }); }); test.done(); @@ -239,7 +239,7 @@ export = { // THEN test.doesNotThrow(() => new ssm.StringListParameter(stack, 'Parameter', { allowedPattern: '^(Foo|Bar)$', - stringListValue: ['Foo', cdk.Lazy.string({ produce: () => 'Baz!' })], + stringListValue: ['Foo', cdk.Lazy.stringValue({ produce: () => 'Baz!' })], })); test.done(); }, diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts index d2f280d8d0c1e..12d1c71665577 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-ecs-task-base.ts @@ -136,7 +136,7 @@ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask AwsvpcConfiguration: { AssignPublicIp: assignPublicIp !== undefined ? (assignPublicIp ? 'ENABLED' : 'DISABLED') : undefined, Subnets: vpc.selectSubnets(subnetSelection).subnetIds, - SecurityGroups: cdk.Lazy.list({ produce: () => [this.securityGroup!.securityGroupId] }), + SecurityGroups: cdk.Lazy.listValue({ produce: () => [this.securityGroup!.securityGroupId] }), }, }; } @@ -156,7 +156,7 @@ export class EcsRunTaskBase implements ec2.IConnectable, sfn.IStepFunctionsTask }), new iam.PolicyStatement({ actions: ['iam:PassRole'], - resources: cdk.Lazy.list({ produce: () => this.taskExecutionRoles().map(r => r.roleArn) }), + resources: cdk.Lazy.listValue({ produce: () => this.taskExecutionRoles().map(r => r.roleArn) }), }), ]; diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts index f80252cbb05f8..38f54c2c0c8fe 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/ecs/run-task.ts @@ -294,7 +294,7 @@ export class EcsRunTask extends sfn.TaskStateBase implements ec2.IConnectable { AwsvpcConfiguration: { AssignPublicIp: this.props.assignPublicIp ? (this.props.assignPublicIp ? 'ENABLED' : 'DISABLED') : undefined, Subnets: this.props.cluster.vpc.selectSubnets(subnetSelection).subnetIds, - SecurityGroups: cdk.Lazy.list({ produce: () => this.securityGroups?.map(sg => sg.securityGroupId) }), + SecurityGroups: cdk.Lazy.listValue({ produce: () => this.securityGroups?.map(sg => sg.securityGroupId) }), }, }; diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts index ee82cc6f69818..7b73afd355e3a 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-model.ts @@ -229,7 +229,7 @@ export class SageMakerCreateModel extends sfn.TaskStateBase implements iam.IGran return this.vpc ? { VpcConfig: { - SecurityGroupIds: cdk.Lazy.list({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), + SecurityGroupIds: cdk.Lazy.listValue({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), Subnets: this.subnets, }, } diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts index e063378bf3eb2..a6f925181e38e 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/sagemaker/create-training-job.ts @@ -302,7 +302,7 @@ export class SageMakerCreateTrainingJob extends sfn.TaskStateBase implements iam return config ? { VpcConfig: { - SecurityGroupIds: Lazy.list({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), + SecurityGroupIds: Lazy.listValue({ produce: () => this.securityGroups.map((sg) => sg.securityGroupId) }), Subnets: this.subnets, }, } diff --git a/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts b/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts index 2d5d423a930b7..601479fbed0e4 100644 --- a/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts +++ b/packages/@aws-cdk/aws-stepfunctions/lib/activity.ts @@ -59,7 +59,7 @@ export class Activity extends Resource implements IActivity { constructor(scope: Construct, id: string, props: ActivityProps = {}) { super(scope, id, { physicalName: props.activityName || - Lazy.string({ produce: () => this.generateName() }), + Lazy.stringValue({ produce: () => this.generateName() }), }); const resource = new CfnActivity(this, 'Resource', { diff --git a/packages/@aws-cdk/aws-synthetics/lib/canary.ts b/packages/@aws-cdk/aws-synthetics/lib/canary.ts index bee1d24e8cf11..f2bbb1407d76a 100644 --- a/packages/@aws-cdk/aws-synthetics/lib/canary.ts +++ b/packages/@aws-cdk/aws-synthetics/lib/canary.ts @@ -243,7 +243,7 @@ export class Canary extends cdk.Resource { } super(scope, id, { - physicalName: props.canaryName || cdk.Lazy.string({ + physicalName: props.canaryName || cdk.Lazy.stringValue({ produce: () => this.generateUniqueName(), }), }); diff --git a/packages/@aws-cdk/aws-synthetics/test/canary.test.ts b/packages/@aws-cdk/aws-synthetics/test/canary.test.ts index d4a505e3a492b..8fd9805bb04d4 100644 --- a/packages/@aws-cdk/aws-synthetics/test/canary.test.ts +++ b/packages/@aws-cdk/aws-synthetics/test/canary.test.ts @@ -59,7 +59,7 @@ test('Name validation does not fail when using Tokens', () => { // WHEN new synthetics.Canary(stack, 'Canary', { - canaryName: Lazy.string({ produce: () => 'My Canary' }), + canaryName: Lazy.stringValue({ produce: () => 'My Canary' }), test: synthetics.Test.custom({ handler: 'index.handler', code: synthetics.Code.fromInline('/* Synthetics handler code */'), diff --git a/packages/@aws-cdk/cfnspec/CHANGELOG.md b/packages/@aws-cdk/cfnspec/CHANGELOG.md index b380dcc6a20c0..8a871d71fe7ce 100644 --- a/packages/@aws-cdk/cfnspec/CHANGELOG.md +++ b/packages/@aws-cdk/cfnspec/CHANGELOG.md @@ -1,174 +1,3 @@ -# CloudFormation Resource Specification v21.0.0 - -## New Resource Types - -* AWS::CloudFront::KeyGroup -* AWS::CloudFront::PublicKey -* AWS::Glue::Registry -* AWS::Glue::Schema -* AWS::Glue::SchemaVersion -* AWS::Glue::SchemaVersionMetadata -* AWS::IoT::TopicRuleDestination -* AWS::Lambda::CodeSigningConfig -* AWS::NetworkFirewall::Firewall -* AWS::NetworkFirewall::FirewallPolicy -* AWS::NetworkFirewall::LoggingConfiguration -* AWS::NetworkFirewall::RuleGroup -* AWS::S3::StorageLens -* AWS::Signer::ProfilePermission -* AWS::Signer::SigningProfile - -## Attribute Changes - -* AWS::SageMaker::MonitoringSchedule CreationTime (__added__) -* AWS::SageMaker::MonitoringSchedule LastModifiedTime (__added__) - -## Property Changes - -* AWS::Amplify::App CustomHeaders (__added__) -* AWS::DataBrew::Recipe ProjectName (__deleted__) -* AWS::DataBrew::Recipe Version (__deleted__) -* AWS::Events::EventBusPolicy Statement (__added__) -* AWS::Events::EventBusPolicy Action.Required (__changed__) - * Old: true - * New: false -* AWS::Events::EventBusPolicy Principal.Required (__changed__) - * Old: true - * New: false -* AWS::Glue::MLTransform TransformEncryption (__added__) -* AWS::KMS::Key KeySpec (__added__) -* AWS::Lambda::Function CodeSigningConfigArn (__added__) -* AWS::SageMaker::MonitoringSchedule CreationTime (__deleted__) -* AWS::SageMaker::MonitoringSchedule LastModifiedTime (__deleted__) - -## Property Type Changes - -* AWS::Batch::ComputeEnvironment.Ec2ConfigurationObject (__added__) -* AWS::DLM::LifecyclePolicy.Action (__added__) -* AWS::DLM::LifecyclePolicy.CrossRegionCopyAction (__added__) -* AWS::DLM::LifecyclePolicy.EncryptionConfiguration (__added__) -* AWS::DLM::LifecyclePolicy.EventParameters (__added__) -* AWS::DLM::LifecyclePolicy.EventSource (__added__) -* AWS::DLM::LifecyclePolicy.ShareRule (__added__) -* AWS::EC2::LaunchTemplate.EnclaveOptions (__added__) -* AWS::Glue::Database.DataLakePrincipal (__added__) -* AWS::Glue::Database.DatabaseIdentifier (__added__) -* AWS::Glue::Database.PrincipalPrivileges (__added__) -* AWS::Glue::MLTransform.MLUserDataEncryption (__added__) -* AWS::Glue::MLTransform.TransformEncryption (__added__) -* AWS::Glue::Table.TableIdentifier (__added__) -* AWS::SageMaker::Model.MultiModelConfig (__added__) -* AWS::Batch::ComputeEnvironment.ComputeResources Ec2Configuration (__added__) -* AWS::CloudFront::Distribution.CacheBehavior TrustedKeyGroups (__added__) -* AWS::CloudFront::Distribution.DefaultCacheBehavior TrustedKeyGroups (__added__) -* AWS::DLM::LifecyclePolicy.PolicyDetails Actions (__added__) -* AWS::DLM::LifecyclePolicy.PolicyDetails EventSource (__added__) -* AWS::DLM::LifecyclePolicy.PolicyDetails ResourceTypes.Required (__changed__) - * Old: true - * New: false -* AWS::DLM::LifecyclePolicy.PolicyDetails Schedules.Required (__changed__) - * Old: true - * New: false -* AWS::DLM::LifecyclePolicy.PolicyDetails TargetTags.Required (__changed__) - * Old: true - * New: false -* AWS::DLM::LifecyclePolicy.Schedule ShareRules (__added__) -* AWS::DataBrew::Recipe.RecipeStep Action.PrimitiveType (__deleted__) -* AWS::EC2::LaunchTemplate.LaunchTemplateData EnclaveOptions (__added__) -* AWS::Glue::Connection.ConnectionInput ConnectionProperties.Required (__changed__) - * Old: true - * New: false -* AWS::Glue::Crawler.S3Target ConnectionName (__added__) -* AWS::Glue::Database.DatabaseInput CreateTableDefaultPermissions (__added__) -* AWS::Glue::Database.DatabaseInput TargetDatabase (__added__) -* AWS::Glue::Table.TableInput TargetTable (__added__) -* AWS::SageMaker::Model.ContainerDefinition MultiModelConfig (__added__) -* AWS::Synthetics::Canary.RunConfig EnvironmentVariables (__added__) - - -# CloudFormation Resource Specification v20.3.0 - -## New Resource Types - -* AWS::DataBrew::Dataset -* AWS::DataBrew::Job -* AWS::DataBrew::Project -* AWS::DataBrew::Recipe -* AWS::DataBrew::Schedule - -## Attribute Changes - -* AWS::ElasticLoadBalancingV2::Listener ListenerArn (__added__) - -## Property Changes - -* AWS::CodeStar::GitHubRepository ConnectionArn (__added__) -* AWS::CodeStar::GitHubRepository RepositoryAccessToken.Required (__changed__) - * Old: true - * New: false -* AWS::DMS::ReplicationInstance AvailabilityZone.UpdateType (__changed__) - * Old: Immutable - * New: Mutable -* AWS::EC2::ClientVpnEndpoint ClientConnectOptions (__added__) -* AWS::EC2::VPCEndpointService GatewayLoadBalancerArns (__added__) -* AWS::ElasticLoadBalancingV2::Listener AlpnPolicy.DuplicatesAllowed (__deleted__) -* AWS::Lambda::EventSourceMapping PartialBatchResponse (__added__) -* AWS::Lambda::EventSourceMapping TumblingWindowInSeconds (__added__) - -## Property Type Changes - -* AWS::AppMesh::VirtualGateway.VirtualGatewayConnectionPool (__added__) -* AWS::AppMesh::VirtualGateway.VirtualGatewayGrpcConnectionPool (__added__) -* AWS::AppMesh::VirtualGateway.VirtualGatewayHttp2ConnectionPool (__added__) -* AWS::AppMesh::VirtualGateway.VirtualGatewayHttpConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.OutlierDetection (__added__) -* AWS::AppMesh::VirtualNode.VirtualNodeConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.VirtualNodeGrpcConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.VirtualNodeHttp2ConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.VirtualNodeHttpConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.VirtualNodeTcpConnectionPool (__added__) -* AWS::EC2::ClientVpnEndpoint.ClientConnectOptions (__added__) -* AWS::AppFlow::ConnectorProfile.SalesforceConnectorProfileCredentials ClientCredentialsArn (__added__) -* AWS::AppMesh::VirtualGateway.VirtualGatewayListener ConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.Listener ConnectionPool (__added__) -* AWS::AppMesh::VirtualNode.Listener OutlierDetection (__added__) -* AWS::ElasticLoadBalancingV2::Listener.Action AuthenticateCognitoConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig -* AWS::ElasticLoadBalancingV2::Listener.Action AuthenticateOidcConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig -* AWS::ElasticLoadBalancingV2::Listener.Action FixedResponseConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig -* AWS::ElasticLoadBalancingV2::Listener.Action ForwardConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig -* AWS::ElasticLoadBalancingV2::Listener.Action Order.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-order - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-order -* AWS::ElasticLoadBalancingV2::Listener.Action RedirectConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig -* AWS::ElasticLoadBalancingV2::Listener.Action TargetGroupArn.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-targetgrouparn - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-targetgrouparn -* AWS::ElasticLoadBalancingV2::Listener.Action Type.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-type - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-type -* AWS::ElasticLoadBalancingV2::Listener.AuthenticateCognitoConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) -* AWS::ElasticLoadBalancingV2::Listener.AuthenticateCognitoConfig SessionTimeout.PrimitiveType (__changed__) - * Old: Long - * New: String -* AWS::ElasticLoadBalancingV2::Listener.AuthenticateOidcConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) -* AWS::ElasticLoadBalancingV2::Listener.AuthenticateOidcConfig SessionTimeout.PrimitiveType (__changed__) - * Old: Long - * New: String -* AWS::ElasticLoadBalancingV2::Listener.Certificate CertificateArn.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html#cfn-elasticloadbalancingv2-listener-certificates-certificatearn - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.html#cfn-elasticloadbalancingv2-listener-certificate-certificatearn - - # CloudFormation Resource Specification v20.2.0 ## New Resource Types diff --git a/packages/@aws-cdk/cfnspec/cfn.version b/packages/@aws-cdk/cfnspec/cfn.version index fb5b513039eb7..86d4688d0910a 100644 --- a/packages/@aws-cdk/cfnspec/cfn.version +++ b/packages/@aws-cdk/cfnspec/cfn.version @@ -1 +1 @@ -21.0.0 +20.2.0 diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json index 78b9780cb62c8..e9a8d24f35f4f 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json @@ -2288,12 +2288,6 @@ "Required": false, "UpdateType": "Mutable" }, - "ClientCredentialsArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appflow-connectorprofile-salesforceconnectorprofilecredentials.html#cfn-appflow-connectorprofile-salesforceconnectorprofilecredentials-clientcredentialsarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "ConnectorOAuthRequest": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appflow-connectorprofile-salesforceconnectorprofilecredentials.html#cfn-appflow-connectorprofile-salesforceconnectorprofilecredentials-connectoroauthrequest", "Required": false, @@ -3956,29 +3950,6 @@ } } }, - "AWS::AppMesh::VirtualGateway.VirtualGatewayConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html", - "Properties": { - "GRPC": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-grpc", - "Required": false, - "Type": "VirtualGatewayGrpcConnectionPool", - "UpdateType": "Mutable" - }, - "HTTP": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http", - "Required": false, - "Type": "VirtualGatewayHttpConnectionPool", - "UpdateType": "Mutable" - }, - "HTTP2": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayconnectionpool-http2", - "Required": false, - "Type": "VirtualGatewayHttp2ConnectionPool", - "UpdateType": "Mutable" - } - } - }, "AWS::AppMesh::VirtualGateway.VirtualGatewayFileAccessLog": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayfileaccesslog.html", "Properties": { @@ -3990,17 +3961,6 @@ } } }, - "AWS::AppMesh::VirtualGateway.VirtualGatewayGrpcConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool.html", - "Properties": { - "MaxRequests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewaygrpcconnectionpool-maxrequests", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::AppMesh::VirtualGateway.VirtualGatewayHealthCheckPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhealthcheckpolicy.html", "Properties": { @@ -4048,43 +4008,9 @@ } } }, - "AWS::AppMesh::VirtualGateway.VirtualGatewayHttp2ConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool.html", - "Properties": { - "MaxRequests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttp2connectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayhttp2connectionpool-maxrequests", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::AppMesh::VirtualGateway.VirtualGatewayHttpConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html", - "Properties": { - "MaxConnections": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-maxconnections", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - }, - "MaxPendingRequests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewayhttpconnectionpool.html#cfn-appmesh-virtualgateway-virtualgatewayhttpconnectionpool-maxpendingrequests", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::AppMesh::VirtualGateway.VirtualGatewayListener": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html", "Properties": { - "ConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html#cfn-appmesh-virtualgateway-virtualgatewaylistener-connectionpool", - "Required": false, - "Type": "VirtualGatewayConnectionPool", - "UpdateType": "Mutable" - }, "HealthCheck": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualgateway-virtualgatewaylistener.html#cfn-appmesh-virtualgateway-virtualgatewaylistener-healthcheck", "Required": false, @@ -4502,24 +4428,12 @@ "AWS::AppMesh::VirtualNode.Listener": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html", "Properties": { - "ConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-connectionpool", - "Required": false, - "Type": "VirtualNodeConnectionPool", - "UpdateType": "Mutable" - }, "HealthCheck": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-healthcheck", "Required": false, "Type": "HealthCheck", "UpdateType": "Mutable" }, - "OutlierDetection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-outlierdetection", - "Required": false, - "Type": "OutlierDetection", - "UpdateType": "Mutable" - }, "PortMapping": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-listener.html#cfn-appmesh-virtualnode-listener-portmapping", "Required": true, @@ -4642,35 +4556,6 @@ } } }, - "AWS::AppMesh::VirtualNode.OutlierDetection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html", - "Properties": { - "BaseEjectionDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-baseejectionduration", - "Required": true, - "Type": "Duration", - "UpdateType": "Mutable" - }, - "Interval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-interval", - "Required": true, - "Type": "Duration", - "UpdateType": "Mutable" - }, - "MaxEjectionPercent": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-maxejectionpercent", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - }, - "MaxServerErrors": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-outlierdetection.html#cfn-appmesh-virtualnode-outlierdetection-maxservererrors", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::AppMesh::VirtualNode.PortMapping": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-portmapping.html", "Properties": { @@ -4767,74 +4652,6 @@ } } }, - "AWS::AppMesh::VirtualNode.VirtualNodeConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html", - "Properties": { - "GRPC": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-grpc", - "Required": false, - "Type": "VirtualNodeGrpcConnectionPool", - "UpdateType": "Mutable" - }, - "HTTP": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http", - "Required": false, - "Type": "VirtualNodeHttpConnectionPool", - "UpdateType": "Mutable" - }, - "HTTP2": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-http2", - "Required": false, - "Type": "VirtualNodeHttp2ConnectionPool", - "UpdateType": "Mutable" - }, - "TCP": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodeconnectionpool.html#cfn-appmesh-virtualnode-virtualnodeconnectionpool-tcp", - "Required": false, - "Type": "VirtualNodeTcpConnectionPool", - "UpdateType": "Mutable" - } - } - }, - "AWS::AppMesh::VirtualNode.VirtualNodeGrpcConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool.html", - "Properties": { - "MaxRequests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodegrpcconnectionpool.html#cfn-appmesh-virtualnode-virtualnodegrpcconnectionpool-maxrequests", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::AppMesh::VirtualNode.VirtualNodeHttp2ConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool.html", - "Properties": { - "MaxRequests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttp2connectionpool.html#cfn-appmesh-virtualnode-virtualnodehttp2connectionpool-maxrequests", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::AppMesh::VirtualNode.VirtualNodeHttpConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html", - "Properties": { - "MaxConnections": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxconnections", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - }, - "MaxPendingRequests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodehttpconnectionpool.html#cfn-appmesh-virtualnode-virtualnodehttpconnectionpool-maxpendingrequests", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::AppMesh::VirtualNode.VirtualNodeSpec": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodespec.html", "Properties": { @@ -4872,17 +4689,6 @@ } } }, - "AWS::AppMesh::VirtualNode.VirtualNodeTcpConnectionPool": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool.html", - "Properties": { - "MaxConnections": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualnodetcpconnectionpool.html#cfn-appmesh-virtualnode-virtualnodetcpconnectionpool-maxconnections", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::AppMesh::VirtualNode.VirtualServiceBackend": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appmesh-virtualnode-virtualservicebackend.html", "Properties": { @@ -7273,13 +7079,6 @@ "Required": false, "UpdateType": "Mutable" }, - "Ec2Configuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-ec2configuration", - "ItemType": "Ec2ConfigurationObject", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - }, "Ec2KeyPair": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-computeresources.html#cfn-batch-computeenvironment-computeresources-ec2keypair", "PrimitiveType": "String", @@ -7363,23 +7162,6 @@ } } }, - "AWS::Batch::ComputeEnvironment.Ec2ConfigurationObject": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html", - "Properties": { - "ImageIdOverride": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html#cfn-batch-computeenvironment-ec2configurationobject-imageidoverride", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "ImageType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-ec2configurationobject.html#cfn-batch-computeenvironment-ec2configurationobject-imagetype", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, "AWS::Batch::ComputeEnvironment.LaunchTemplateSpecification": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-batch-computeenvironment-launchtemplatespecification.html", "Properties": { @@ -8567,13 +8349,6 @@ "Required": true, "UpdateType": "Mutable" }, - "TrustedKeyGroups": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-trustedkeygroups", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "TrustedSigners": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-trustedsigners", "PrimitiveItemType": "String", @@ -8768,13 +8543,6 @@ "Required": true, "UpdateType": "Mutable" }, - "TrustedKeyGroups": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-trustedkeygroups", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "TrustedSigners": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-trustedsigners", "PrimitiveItemType": "String", @@ -9240,31 +9008,6 @@ } } }, - "AWS::CloudFront::KeyGroup.KeyGroupConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html", - "Properties": { - "Comment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html#cfn-cloudfront-keygroup-keygroupconfig-comment", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Items": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html#cfn-cloudfront-keygroup-keygroupconfig-items", - "DuplicatesAllowed": true, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-keygroup-keygroupconfig.html#cfn-cloudfront-keygroup-keygroupconfig-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::CloudFront::OriginRequestPolicy.CookiesConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-originrequestpolicy-cookiesconfig.html", "Properties": { @@ -9357,35 +9100,6 @@ } } }, - "AWS::CloudFront::PublicKey.PublicKeyConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html", - "Properties": { - "CallerReference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-callerreference", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Comment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-comment", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "EncodedKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-encodedkey", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-publickey-publickeyconfig.html#cfn-cloudfront-publickey-publickeyconfig-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::CloudFront::RealtimeLogConfig.EndPoint": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-realtimelogconfig-endpoint.html", "Properties": { @@ -12386,24 +12100,6 @@ } } }, - "AWS::DLM::LifecyclePolicy.Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html", - "Properties": { - "CrossRegionCopy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html#cfn-dlm-lifecyclepolicy-action-crossregioncopy", - "ItemType": "CrossRegionCopyAction", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-action.html#cfn-dlm-lifecyclepolicy-action-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::DLM::LifecyclePolicy.CreateRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-createrule.html", "Properties": { @@ -12434,29 +12130,6 @@ } } }, - "AWS::DLM::LifecyclePolicy.CrossRegionCopyAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html", - "Properties": { - "EncryptionConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html#cfn-dlm-lifecyclepolicy-crossregioncopyaction-encryptionconfiguration", - "Required": true, - "Type": "EncryptionConfiguration", - "UpdateType": "Mutable" - }, - "RetainRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html#cfn-dlm-lifecyclepolicy-crossregioncopyaction-retainrule", - "Required": false, - "Type": "CrossRegionCopyRetainRule", - "UpdateType": "Mutable" - }, - "Target": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyaction.html#cfn-dlm-lifecyclepolicy-crossregioncopyaction-target", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::DLM::LifecyclePolicy.CrossRegionCopyRetainRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-crossregioncopyretainrule.html", "Properties": { @@ -12509,64 +12182,6 @@ } } }, - "AWS::DLM::LifecyclePolicy.EncryptionConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html", - "Properties": { - "CmkArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html#cfn-dlm-lifecyclepolicy-encryptionconfiguration-cmkarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Encrypted": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-encryptionconfiguration.html#cfn-dlm-lifecyclepolicy-encryptionconfiguration-encrypted", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DLM::LifecyclePolicy.EventParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html", - "Properties": { - "DescriptionRegex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html#cfn-dlm-lifecyclepolicy-eventparameters-descriptionregex", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "EventType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html#cfn-dlm-lifecyclepolicy-eventparameters-eventtype", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SnapshotOwner": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventparameters.html#cfn-dlm-lifecyclepolicy-eventparameters-snapshotowner", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::DLM::LifecyclePolicy.EventSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html", - "Properties": { - "Parameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html#cfn-dlm-lifecyclepolicy-eventsource-parameters", - "Required": false, - "Type": "EventParameters", - "UpdateType": "Mutable" - }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-eventsource.html#cfn-dlm-lifecyclepolicy-eventsource-type", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::DLM::LifecyclePolicy.FastRestoreRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-fastrestorerule.html", "Properties": { @@ -12617,19 +12232,6 @@ "AWS::DLM::LifecyclePolicy.PolicyDetails": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html", "Properties": { - "Actions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-actions", - "ItemType": "Action", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "EventSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-eventsource", - "Required": false, - "Type": "EventSource", - "UpdateType": "Mutable" - }, "Parameters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-parameters", "Required": false, @@ -12645,21 +12247,21 @@ "ResourceTypes": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-resourcetypes", "PrimitiveItemType": "String", - "Required": false, + "Required": true, "Type": "List", "UpdateType": "Mutable" }, "Schedules": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-schedules", "ItemType": "Schedule", - "Required": false, + "Required": true, "Type": "List", "UpdateType": "Mutable" }, "TargetTags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-policydetails.html#cfn-dlm-lifecyclepolicy-policydetails-targettags", "ItemType": "Tag", - "Required": false, + "Required": true, "Type": "List", "UpdateType": "Mutable" } @@ -12728,13 +12330,6 @@ "Type": "RetainRule", "UpdateType": "Mutable" }, - "ShareRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-sharerules", - "ItemType": "ShareRule", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "TagsToAdd": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-schedule.html#cfn-dlm-lifecyclepolicy-schedule-tagstoadd", "ItemType": "Tag", @@ -12751,30 +12346,6 @@ } } }, - "AWS::DLM::LifecyclePolicy.ShareRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html", - "Properties": { - "TargetAccounts": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html#cfn-dlm-lifecyclepolicy-sharerule-targetaccounts", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "UnshareInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html#cfn-dlm-lifecyclepolicy-sharerule-unshareinterval", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "UnshareIntervalUnit": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dlm-lifecyclepolicy-sharerule.html#cfn-dlm-lifecyclepolicy-sharerule-unshareintervalunit", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::DMS::Endpoint.DynamoDbSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html", "Properties": { @@ -13020,1978 +12591,1172 @@ } } }, - "AWS::DataBrew::Job.Output": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html", + "AWS::DataPipeline::Pipeline.Field": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html", "Properties": { - "CompressionFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-compressionformat", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Format": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-format", + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-key", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Location": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-location", "Required": true, - "Type": "S3Location", "UpdateType": "Mutable" }, - "Overwrite": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-overwrite", - "PrimitiveType": "Boolean", + "RefValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-refvalue", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PartitionColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-output.html#cfn-databrew-job-output-partitioncolumns", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", + "StringValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-stringvalue", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Job.S3Location": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-s3location.html", + "AWS::DataPipeline::Pipeline.ParameterAttribute": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html", "Properties": { - "Bucket": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-s3location.html#cfn-databrew-job-s3location-bucket", + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-key", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-job-s3location.html#cfn-databrew-job-s3location-key", + "StringValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-stringvalue", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-action.html", + "AWS::DataPipeline::Pipeline.ParameterObject": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html", "Properties": { - "Operation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-action.html#cfn-databrew-recipe-action-operation", - "PrimitiveType": "String", + "Attributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-attributes", + "DuplicatesAllowed": true, + "ItemType": "ParameterAttribute", "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "Parameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-action.html#cfn-databrew-recipe-action-parameters", - "Required": false, + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-id", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.ConditionExpression": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html", + "AWS::DataPipeline::Pipeline.ParameterValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html", "Properties": { - "Condition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html#cfn-databrew-recipe-conditionexpression-condition", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-id", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "TargetColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html#cfn-databrew-recipe-conditionexpression-targetcolumn", + "StringValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-stringvalue", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-conditionexpression.html#cfn-databrew-recipe-conditionexpression-value", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.DataCatalogInputDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html", + "AWS::DataPipeline::Pipeline.PipelineObject": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html", "Properties": { - "CatalogId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-catalogid", - "PrimitiveType": "String", - "Required": false, + "Fields": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-fields", + "DuplicatesAllowed": true, + "ItemType": "Field", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "DatabaseName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-databasename", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-id", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "TableName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-tablename", + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-name", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "TempDirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-datacataloginputdefinition.html#cfn-databrew-recipe-datacataloginputdefinition-tempdirectory", - "Required": false, - "Type": "S3Location", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.RecipeParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html", + "AWS::DataPipeline::Pipeline.PipelineTag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html", "Properties": { - "AggregateFunction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-aggregatefunction", + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-key", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "Base": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-base", + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-value", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "CaseStatement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-casestatement", - "PrimitiveType": "String", - "Required": false, + } + } + }, + "AWS::DirectoryService::MicrosoftAD.VpcSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html", + "Properties": { + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-subnetids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "CategoryMap": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-categorymap", + "VpcId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-vpcid", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "CharsToRemove": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-charstoremove", - "PrimitiveType": "String", - "Required": false, + } + } + }, + "AWS::DirectoryService::SimpleAD.VpcSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html", + "Properties": { + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-subnetids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "CollapseConsecutiveWhitespace": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-collapseconsecutivewhitespace", + "VpcId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-vpcid", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "ColumnDataType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-columndatatype", + } + } + }, + "AWS::DynamoDB::Table.AttributeDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html", + "Properties": { + "AttributeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "ColumnRange": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-columnrange", + "AttributeType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename-attributetype", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "Count": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-count", + } + } + }, + "AWS::DynamoDB::Table.GlobalSecondaryIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html", + "Properties": { + "IndexName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "CustomCharacters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-customcharacters", - "PrimitiveType": "String", - "Required": false, + "KeySchema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-keyschema", + "DuplicatesAllowed": false, + "ItemType": "KeySchema", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "CustomStopWords": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-customstopwords", - "PrimitiveType": "String", - "Required": false, + "Projection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-projection", + "Required": true, + "Type": "Projection", "UpdateType": "Mutable" }, - "CustomValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-customvalue", - "PrimitiveType": "String", + "ProvisionedThroughput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-provisionedthroughput", "Required": false, + "Type": "ProvisionedThroughput", "UpdateType": "Mutable" - }, - "DatasetsColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-datasetscolumns", + } + } + }, + "AWS::DynamoDB::Table.KeySchema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html", + "Properties": { + "AttributeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-attributename", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "DateAddValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-dateaddvalue", + "KeyType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-keytype", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "DateTimeFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-datetimeformat", + } + } + }, + "AWS::DynamoDB::Table.LocalSecondaryIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html", + "Properties": { + "IndexName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-indexname", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "DateTimeParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-datetimeparameters", - "PrimitiveType": "String", - "Required": false, + "KeySchema": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-keyschema", + "DuplicatesAllowed": false, + "ItemType": "KeySchema", + "Required": true, + "Type": "List", "UpdateType": "Mutable" }, - "DeleteOtherRows": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-deleteotherrows", - "PrimitiveType": "String", - "Required": false, + "Projection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-projection", + "Required": true, + "Type": "Projection", "UpdateType": "Mutable" - }, - "Delimiter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-delimiter", - "PrimitiveType": "String", + } + } + }, + "AWS::DynamoDB::Table.PointInTimeRecoverySpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html", + "Properties": { + "PointInTimeRecoveryEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html#cfn-dynamodb-table-pointintimerecoveryspecification-pointintimerecoveryenabled", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" - }, - "EndPattern": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-endpattern", - "PrimitiveType": "String", + } + } + }, + "AWS::DynamoDB::Table.Projection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html", + "Properties": { + "NonKeyAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-nonkeyatt", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "EndPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-endposition", + "ProjectionType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-projtype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.ProvisionedThroughput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html", + "Properties": { + "ReadCapacityUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-readcapacityunits", + "PrimitiveType": "Long", + "Required": true, + "UpdateType": "Mutable" }, - "EndValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-endvalue", + "WriteCapacityUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-writecapacityunits", + "PrimitiveType": "Long", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::DynamoDB::Table.SSESpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html", + "Properties": { + "KMSMasterKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-kmsmasterkeyid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ExpandContractions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-expandcontractions", - "PrimitiveType": "String", - "Required": false, + "SSEEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-sseenabled", + "PrimitiveType": "Boolean", + "Required": true, "UpdateType": "Mutable" }, - "Exponent": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-exponent", + "SSEType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-ssetype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "FalseString": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-falsestring", + } + } + }, + "AWS::DynamoDB::Table.StreamSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html", + "Properties": { + "StreamViewType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html#cfn-dynamodb-streamspecification-streamviewtype", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "GroupByAggFunctionOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-groupbyaggfunctionoptions", + } + } + }, + "AWS::DynamoDB::Table.TimeToLiveSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html", + "Properties": { + "AttributeName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-attributename", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "GroupByColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-groupbycolumns", + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-enabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::CapacityReservation.TagSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html", + "Properties": { + "ResourceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-resourcetype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "HiddenColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-hiddencolumns", - "PrimitiveType": "String", + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-tags", + "ItemType": "Tag", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "IgnoreCase": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-ignorecase", - "PrimitiveType": "String", + } + } + }, + "AWS::EC2::CarrierGateway.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html#cfn-ec2-carriergateway-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "IncludeInSplit": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-includeinsplit", + } + } + }, + "AWS::EC2::ClientVpnEndpoint.CertificateAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html", + "Properties": { + "ClientRootCertificateChainArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html#cfn-ec2-clientvpnendpoint-certificateauthenticationrequest-clientrootcertificatechainarn", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "Input": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-input", - "PrimitiveType": "Json", + } + } + }, + "AWS::EC2::ClientVpnEndpoint.ClientAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html", + "Properties": { + "ActiveDirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-activedirectory", "Required": false, + "Type": "DirectoryServiceAuthenticationRequest", "UpdateType": "Mutable" }, - "Interval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-interval", - "PrimitiveType": "String", + "FederatedAuthentication": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-federatedauthentication", "Required": false, + "Type": "FederatedAuthenticationRequest", "UpdateType": "Mutable" }, - "IsText": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-istext", - "PrimitiveType": "String", + "MutualAuthentication": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-mutualauthentication", "Required": false, + "Type": "CertificateAuthenticationRequest", "UpdateType": "Mutable" }, - "JoinKeys": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-joinkeys", + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-type", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "JoinType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-jointype", + } + } + }, + "AWS::EC2::ClientVpnEndpoint.ConnectionLogOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html", + "Properties": { + "CloudwatchLogGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchloggroup", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LeftColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-leftcolumns", + "CloudwatchLogStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchlogstream", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Limit": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-limit", + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-enabled", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::ClientVpnEndpoint.DirectoryServiceAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html", + "Properties": { + "DirectoryId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html#cfn-ec2-clientvpnendpoint-directoryserviceauthenticationrequest-directoryid", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" - }, - "LowerBound": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-lowerbound", + } + } + }, + "AWS::EC2::ClientVpnEndpoint.FederatedAuthenticationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html", + "Properties": { + "SAMLProviderArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-samlproviderarn", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "MapType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-maptype", + "SelfServiceSAMLProviderArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-selfservicesamlproviderarn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "ModeType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-modetype", + } + } + }, + "AWS::EC2::ClientVpnEndpoint.TagSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html", + "Properties": { + "ResourceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-resourcetype", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "MultiLine": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-multiline", - "PrimitiveType": "Boolean", - "Required": false, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-tags", + "ItemType": "Tag", + "Required": true, + "Type": "List", "UpdateType": "Mutable" - }, - "NumRows": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-numrows", + } + } + }, + "AWS::EC2::EC2Fleet.CapacityReservationOptionsRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html", + "Properties": { + "UsageStrategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html#cfn-ec2-ec2fleet-capacityreservationoptionsrequest-usagestrategy", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" - }, - "NumRowsAfter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-numrowsafter", - "PrimitiveType": "String", + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.FleetLaunchTemplateConfigRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html", + "Properties": { + "LaunchTemplateSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-launchtemplatespecification", "Required": false, - "UpdateType": "Mutable" + "Type": "FleetLaunchTemplateSpecificationRequest", + "UpdateType": "Immutable" }, - "NumRowsBefore": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-numrowsbefore", - "PrimitiveType": "String", + "Overrides": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-overrides", + "ItemType": "FleetLaunchTemplateOverridesRequest", "Required": false, - "UpdateType": "Mutable" - }, - "OrderByColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-orderbycolumn", + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.FleetLaunchTemplateOverridesRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html", + "Properties": { + "AvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzone", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "OrderByColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-orderbycolumns", + "InstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancetype", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Other": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-other", + "MaxPrice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-maxprice", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Pattern": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-pattern", - "PrimitiveType": "String", + "Placement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-placement", "Required": false, - "UpdateType": "Mutable" + "Type": "Placement", + "UpdateType": "Immutable" }, - "PatternOption1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-patternoption1", - "PrimitiveType": "String", + "Priority": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-priority", + "PrimitiveType": "Double", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "PatternOption2": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-patternoption2", + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-subnetid", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "PatternOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-patternoptions", + "WeightedCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-weightedcapacity", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.FleetLaunchTemplateSpecificationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html", + "Properties": { + "LaunchTemplateId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplateid", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Period": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-period", + "LaunchTemplateName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatename", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Position": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-position", + "Version": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-version", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" - }, - "RemoveAllPunctuation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeallpunctuation", + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.OnDemandOptionsRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html", + "Properties": { + "AllocationStrategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-allocationstrategy", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveAllQuotes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeallquotes", - "PrimitiveType": "String", + "CapacityReservationOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-capacityreservationoptions", "Required": false, - "UpdateType": "Mutable" + "Type": "CapacityReservationOptionsRequest", + "UpdateType": "Immutable" }, - "RemoveAllWhitespace": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeallwhitespace", + "MaxTotalPrice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-maxtotalprice", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveCustomCharacters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removecustomcharacters", - "PrimitiveType": "String", + "MinTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-mintargetcapacity", + "PrimitiveType": "Integer", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveCustomValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removecustomvalue", - "PrimitiveType": "String", + "SingleAvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleavailabilityzone", + "PrimitiveType": "Boolean", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveLeadingAndTrailingPunctuation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeleadingandtrailingpunctuation", + "SingleInstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleinstancetype", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.Placement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html", + "Properties": { + "Affinity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-affinity", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveLeadingAndTrailingQuotes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeleadingandtrailingquotes", + "AvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-availabilityzone", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveLeadingAndTrailingWhitespace": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeleadingandtrailingwhitespace", + "GroupName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-groupname", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveLetters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removeletters", + "HostId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostid", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveNumbers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removenumbers", + "HostResourceGroupArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostresourcegrouparn", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveSourceColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removesourcecolumn", - "PrimitiveType": "String", + "PartitionNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-partitionnumber", + "PrimitiveType": "Integer", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RemoveSpecialCharacters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-removespecialcharacters", + "SpreadDomain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-spreaddomain", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "RightColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-rightcolumns", + "Tenancy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-tenancy", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.SpotOptionsRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html", + "Properties": { + "AllocationStrategy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-allocationstrategy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" }, - "SampleSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-samplesize", + "InstanceInterruptionBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instanceinterruptionbehavior", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "SampleType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sampletype", + "InstancePoolsToUseCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instancepoolstousecount", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "MaxTotalPrice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-maxtotalprice", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" + }, + "MinTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-mintargetcapacity", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" }, - "SecondInput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-secondinput", + "SingleAvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleavailabilityzone", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "SingleInstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleinstancetype", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.TagSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html", + "Properties": { + "ResourceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-resourcetype", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "SecondaryInputs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-secondaryinputs", - "DuplicatesAllowed": true, - "ItemType": "SecondaryInput", + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-tags", + "ItemType": "Tag", "Required": false, "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::EC2Fleet.TargetCapacitySpecificationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html", + "Properties": { + "DefaultTargetCapacityType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-defaulttargetcapacitytype", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "SheetIndexes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sheetindexes", - "PrimitiveItemType": "Integer", + "OnDemandTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-ondemandtargetcapacity", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "SheetNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sheetnames", - "PrimitiveItemType": "String", + "SpotTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-spottargetcapacity", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "SourceColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumn", + "TotalTargetCapacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-totaltargetcapacity", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.AssociationParameter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-key", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "SourceColumn1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumn1", + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-value", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.BlockDeviceMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html", + "Properties": { + "DeviceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-devicename", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "SourceColumn2": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumn2", - "PrimitiveType": "String", + "Ebs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-ebs", "Required": false, + "Type": "Ebs", "UpdateType": "Mutable" }, - "SourceColumns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-sourcecolumns", - "PrimitiveType": "String", + "NoDevice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-nodevice", "Required": false, + "Type": "NoDevice", "UpdateType": "Mutable" }, - "StartColumnIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startcolumnindex", + "VirtualName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-virtualname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "StartPattern": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startpattern", - "PrimitiveType": "String", + } + } + }, + "AWS::EC2::Instance.CpuOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html", + "Properties": { + "CoreCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-corecount", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "StartPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startposition", - "PrimitiveType": "String", + "ThreadsPerCore": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-threadspercore", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "StartValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-startvalue", + } + } + }, + "AWS::EC2::Instance.CreditSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html", + "Properties": { + "CPUCredits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html#cfn-ec2-instance-creditspecification-cpucredits", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "StemmingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stemmingmode", - "PrimitiveType": "String", + } + } + }, + "AWS::EC2::Instance.Ebs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html", + "Properties": { + "DeleteOnTermination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-deleteontermination", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "StepCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stepcount", - "PrimitiveType": "String", + "Encrypted": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-encrypted", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "StepIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stepindex", - "PrimitiveType": "String", + "Iops": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-iops", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "StopWordsMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-stopwordsmode", + "KmsKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-instance-ebs-kmskeyid", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Strategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-strategy", + "SnapshotId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-snapshotid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TargetColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetcolumn", - "PrimitiveType": "String", + "VolumeSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumesize", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "TargetColumnNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetcolumnnames", + "VolumeType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumetype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "TargetDateFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetdateformat", + } + } + }, + "AWS::EC2::Instance.ElasticGpuSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html", + "Properties": { + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html#cfn-ec2-instance-elasticgpuspecification-type", "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.ElasticInferenceAccelerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html", + "Properties": { + "Count": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-count", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "TargetIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-targetindex", + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-type", "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.HibernationOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html", + "Properties": { + "Configured": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html#cfn-ec2-instance-hibernationoptions-configured", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" - }, - "TimeZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-timezone", + } + } + }, + "AWS::EC2::Instance.InstanceIpv6Address": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html", + "Properties": { + "Ipv6Address": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html#cfn-ec2-instance-instanceipv6address-ipv6address", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.LaunchTemplateSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html", + "Properties": { + "LaunchTemplateId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplateid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TokenizerPattern": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-tokenizerpattern", + "LaunchTemplateName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplatename", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TrueString": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-truestring", + "Version": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-version", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.LicenseSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html", + "Properties": { + "LicenseConfigurationArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html#cfn-ec2-instance-licensespecification-licenseconfigurationarn", "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::EC2::Instance.NetworkInterface": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html", + "Properties": { + "AssociatePublicIpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-associatepubip", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "UdfLang": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-udflang", - "PrimitiveType": "String", + "DeleteOnTermination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-delete", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "Units": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-units", + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-description", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "UnpivotColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-unpivotcolumn", + "DeviceIndex": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-deviceindex", "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "GroupSet": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-groupset", + "DuplicatesAllowed": true, + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "UpperBound": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-upperbound", - "PrimitiveType": "String", + "Ipv6AddressCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresscount", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "UseNewDataFrame": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-usenewdataframe", - "PrimitiveType": "String", + "Ipv6Addresses": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresses", + "DuplicatesAllowed": true, + "ItemType": "InstanceIpv6Address", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-value", + "NetworkInterfaceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-network-iface", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Value1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-value1", + "PrivateIpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddress", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Value2": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-value2", - "PrimitiveType": "String", + "PrivateIpAddresses": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddresses", + "DuplicatesAllowed": true, + "ItemType": "PrivateIpAddressSpecification", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "ValueColumn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-valuecolumn", - "PrimitiveType": "String", + "SecondaryPrivateIpAddressCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-secondprivateip", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ViewFrame": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipeparameters.html#cfn-databrew-recipe-recipeparameters-viewframe", + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-subnetid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.RecipeStep": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipestep.html", + "AWS::EC2::Instance.NoDevice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html", + "Properties": {} + }, + "AWS::EC2::Instance.PrivateIpAddressSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html", "Properties": { - "Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipestep.html#cfn-databrew-recipe-recipestep-action", + "Primary": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary", + "PrimitiveType": "Boolean", "Required": true, - "Type": "Action", "UpdateType": "Mutable" }, - "ConditionExpressions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-recipestep.html#cfn-databrew-recipe-recipestep-conditionexpressions", - "ItemType": "ConditionExpression", - "Required": false, - "Type": "List", + "PrivateIpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.S3Location": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-s3location.html", + "AWS::EC2::Instance.SsmAssociation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html", "Properties": { - "Bucket": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-s3location.html#cfn-databrew-recipe-s3location-bucket", - "PrimitiveType": "String", - "Required": true, + "AssociationParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-associationparameters", + "DuplicatesAllowed": true, + "ItemType": "AssociationParameter", + "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-s3location.html#cfn-databrew-recipe-s3location-key", + "DocumentName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-documentname", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::DataBrew::Recipe.SecondaryInput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-secondaryinput.html", + "AWS::EC2::Instance.Volume": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html", "Properties": { - "DataCatalogInputDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-secondaryinput.html#cfn-databrew-recipe-secondaryinput-datacataloginputdefinition", - "Required": false, - "Type": "DataCatalogInputDefinition", + "Device": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-device", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" }, - "S3InputDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-databrew-recipe-secondaryinput.html#cfn-databrew-recipe-secondaryinput-s3inputdefinition", - "Required": false, - "Type": "S3Location", + "VolumeId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-volumeid", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.Field": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html", + "AWS::EC2::LaunchTemplate.BlockDeviceMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html", "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-key", + "DeviceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-devicename", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "RefValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-refvalue", + "Ebs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs", + "Required": false, + "Type": "Ebs", + "UpdateType": "Mutable" + }, + "NoDevice": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-nodevice", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StringValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects-fields.html#cfn-datapipeline-pipeline-pipelineobjects-fields-stringvalue", + "VirtualName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-virtualname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.ParameterAttribute": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html", + "AWS::EC2::LaunchTemplate.CapacityReservationSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html", "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-key", + "CapacityReservationPreference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationpreference", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "StringValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects-attributes.html#cfn-datapipeline-pipeline-parameterobjects-attribtues-stringvalue", - "PrimitiveType": "String", - "Required": true, + "CapacityReservationTarget": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationtarget", + "Required": false, + "Type": "CapacityReservationTarget", "UpdateType": "Mutable" } } }, - "AWS::DataPipeline::Pipeline.ParameterObject": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html", - "Properties": { - "Attributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-attributes", - "DuplicatesAllowed": true, - "ItemType": "ParameterAttribute", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parameterobjects.html#cfn-datapipeline-pipeline-parameterobjects-id", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DataPipeline::Pipeline.ParameterValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html", - "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-id", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "StringValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-parametervalues.html#cfn-datapipeline-pipeline-parametervalues-stringvalue", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DataPipeline::Pipeline.PipelineObject": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html", - "Properties": { - "Fields": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-fields", - "DuplicatesAllowed": true, - "ItemType": "Field", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-id", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelineobjects.html#cfn-datapipeline-pipeline-pipelineobjects-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DataPipeline::Pipeline.PipelineTag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html", - "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-key", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datapipeline-pipeline-pipelinetags.html#cfn-datapipeline-pipeline-pipelinetags-value", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DirectoryService::MicrosoftAD.VpcSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html", - "Properties": { - "SubnetIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-subnetids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "VpcId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-microsoftad-vpcsettings.html#cfn-directoryservice-microsoftad-vpcsettings-vpcid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DirectoryService::SimpleAD.VpcSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html", - "Properties": { - "SubnetIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-subnetids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "VpcId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-directoryservice-simplead-vpcsettings.html#cfn-directoryservice-simplead-vpcsettings-vpcid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.AttributeDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html", - "Properties": { - "AttributeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "AttributeType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-attributedef.html#cfn-dynamodb-attributedef-attributename-attributetype", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.GlobalSecondaryIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html", - "Properties": { - "IndexName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-indexname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "KeySchema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-keyschema", - "DuplicatesAllowed": false, - "ItemType": "KeySchema", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Projection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-projection", - "Required": true, - "Type": "Projection", - "UpdateType": "Mutable" - }, - "ProvisionedThroughput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-gsi.html#cfn-dynamodb-gsi-provisionedthroughput", - "Required": false, - "Type": "ProvisionedThroughput", - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.KeySchema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html", - "Properties": { - "AttributeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-attributename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "KeyType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-keyschema.html#aws-properties-dynamodb-keyschema-keytype", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.LocalSecondaryIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html", - "Properties": { - "IndexName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-indexname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "KeySchema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-keyschema", - "DuplicatesAllowed": false, - "ItemType": "KeySchema", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Projection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-lsi.html#cfn-dynamodb-lsi-projection", - "Required": true, - "Type": "Projection", - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.PointInTimeRecoverySpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html", - "Properties": { - "PointInTimeRecoveryEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-pointintimerecoveryspecification.html#cfn-dynamodb-table-pointintimerecoveryspecification-pointintimerecoveryenabled", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.Projection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html", - "Properties": { - "NonKeyAttributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-nonkeyatt", - "DuplicatesAllowed": true, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "ProjectionType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-projectionobject.html#cfn-dynamodb-projectionobj-projtype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.ProvisionedThroughput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html", - "Properties": { - "ReadCapacityUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-readcapacityunits", - "PrimitiveType": "Long", - "Required": true, - "UpdateType": "Mutable" - }, - "WriteCapacityUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-provisionedthroughput.html#cfn-dynamodb-provisionedthroughput-writecapacityunits", - "PrimitiveType": "Long", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.SSESpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html", - "Properties": { - "KMSMasterKeyId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-kmsmasterkeyid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SSEEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-sseenabled", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - }, - "SSEType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-table-ssespecification.html#cfn-dynamodb-table-ssespecification-ssetype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.StreamSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html", - "Properties": { - "StreamViewType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-streamspecification.html#cfn-dynamodb-streamspecification-streamviewtype", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::DynamoDB::Table.TimeToLiveSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html", - "Properties": { - "AttributeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-attributename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Enabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dynamodb-timetolivespecification.html#cfn-dynamodb-timetolivespecification-enabled", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::CapacityReservation.TagSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html", - "Properties": { - "ResourceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-resourcetype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-capacityreservation-tagspecification.html#cfn-ec2-capacityreservation-tagspecification-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::CarrierGateway.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html#cfn-ec2-carriergateway-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.CertificateAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html", - "Properties": { - "ClientRootCertificateChainArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html#cfn-ec2-clientvpnendpoint-certificateauthenticationrequest-clientrootcertificatechainarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.ClientAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html", - "Properties": { - "ActiveDirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-activedirectory", - "Required": false, - "Type": "DirectoryServiceAuthenticationRequest", - "UpdateType": "Mutable" - }, - "FederatedAuthentication": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-federatedauthentication", - "Required": false, - "Type": "FederatedAuthenticationRequest", - "UpdateType": "Mutable" - }, - "MutualAuthentication": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-mutualauthentication", - "Required": false, - "Type": "CertificateAuthenticationRequest", - "UpdateType": "Mutable" - }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientauthenticationrequest.html#cfn-ec2-clientvpnendpoint-clientauthenticationrequest-type", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.ClientConnectOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html", - "Properties": { - "Enabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html#cfn-ec2-clientvpnendpoint-clientconnectoptions-enabled", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - }, - "LambdaFunctionArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-clientconnectoptions.html#cfn-ec2-clientvpnendpoint-clientconnectoptions-lambdafunctionarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.ConnectionLogOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html", - "Properties": { - "CloudwatchLogGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchloggroup", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "CloudwatchLogStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-cloudwatchlogstream", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Enabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-connectionlogoptions.html#cfn-ec2-clientvpnendpoint-connectionlogoptions-enabled", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.DirectoryServiceAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html", - "Properties": { - "DirectoryId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-directoryserviceauthenticationrequest.html#cfn-ec2-clientvpnendpoint-directoryserviceauthenticationrequest-directoryid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.FederatedAuthenticationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html", - "Properties": { - "SAMLProviderArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-samlproviderarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SelfServiceSAMLProviderArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-federatedauthenticationrequest.html#cfn-ec2-clientvpnendpoint-federatedauthenticationrequest-selfservicesamlproviderarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::ClientVpnEndpoint.TagSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html", - "Properties": { - "ResourceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-resourcetype", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-tagspecification.html#cfn-ec2-clientvpnendpoint-tagspecification-tags", - "ItemType": "Tag", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::EC2Fleet.CapacityReservationOptionsRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html", - "Properties": { - "UsageStrategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-capacityreservationoptionsrequest.html#cfn-ec2-ec2fleet-capacityreservationoptionsrequest-usagestrategy", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.FleetLaunchTemplateConfigRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html", - "Properties": { - "LaunchTemplateSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-launchtemplatespecification", - "Required": false, - "Type": "FleetLaunchTemplateSpecificationRequest", - "UpdateType": "Immutable" - }, - "Overrides": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateconfigrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateconfigrequest-overrides", - "ItemType": "FleetLaunchTemplateOverridesRequest", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.FleetLaunchTemplateOverridesRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html", - "Properties": { - "AvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-availabilityzone", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "InstanceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-instancetype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "MaxPrice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-maxprice", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Placement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-placement", - "Required": false, - "Type": "Placement", - "UpdateType": "Immutable" - }, - "Priority": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-priority", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Immutable" - }, - "SubnetId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-subnetid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "WeightedCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplateoverridesrequest-weightedcapacity", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.FleetLaunchTemplateSpecificationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html", - "Properties": { - "LaunchTemplateId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplateid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "LaunchTemplateName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-launchtemplatename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Version": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest.html#cfn-ec2-ec2fleet-fleetlaunchtemplatespecificationrequest-version", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.OnDemandOptionsRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html", - "Properties": { - "AllocationStrategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-allocationstrategy", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "CapacityReservationOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-capacityreservationoptions", - "Required": false, - "Type": "CapacityReservationOptionsRequest", - "UpdateType": "Immutable" - }, - "MaxTotalPrice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-maxtotalprice", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "MinTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-mintargetcapacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "SingleAvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleavailabilityzone", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "SingleInstanceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-ondemandoptionsrequest.html#cfn-ec2-ec2fleet-ondemandoptionsrequest-singleinstancetype", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.Placement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html", - "Properties": { - "Affinity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-affinity", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "AvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-availabilityzone", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "GroupName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-groupname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "HostId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "HostResourceGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-hostresourcegrouparn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "PartitionNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-partitionnumber", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "SpreadDomain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-spreaddomain", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Tenancy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-placement.html#cfn-ec2-ec2fleet-placement-tenancy", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.SpotOptionsRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html", - "Properties": { - "AllocationStrategy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-allocationstrategy", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "InstanceInterruptionBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instanceinterruptionbehavior", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "InstancePoolsToUseCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-instancepoolstousecount", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "MaxTotalPrice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-maxtotalprice", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "MinTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-mintargetcapacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "SingleAvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleavailabilityzone", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "SingleInstanceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-spotoptionsrequest.html#cfn-ec2-ec2fleet-spotoptionsrequest-singleinstancetype", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.TagSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html", - "Properties": { - "ResourceType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-resourcetype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-tagspecification.html#cfn-ec2-ec2fleet-tagspecification-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::EC2::EC2Fleet.TargetCapacitySpecificationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html", - "Properties": { - "DefaultTargetCapacityType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-defaulttargetcapacitytype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "OnDemandTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-ondemandtargetcapacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "SpotTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-spottargetcapacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "TotalTargetCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ec2fleet-targetcapacityspecificationrequest.html#cfn-ec2-ec2fleet-targetcapacityspecificationrequest-totaltargetcapacity", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.AssociationParameter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html", - "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-key", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations-associationparameters.html#cfn-ec2-instance-ssmassociations-associationparameters-value", - "DuplicatesAllowed": true, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.BlockDeviceMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html", - "Properties": { - "DeviceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-devicename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Ebs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-ebs", - "Required": false, - "Type": "Ebs", - "UpdateType": "Mutable" - }, - "NoDevice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-nodevice", - "Required": false, - "Type": "NoDevice", - "UpdateType": "Mutable" - }, - "VirtualName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-mapping.html#cfn-ec2-blockdev-mapping-virtualname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.CpuOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html", - "Properties": { - "CoreCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-corecount", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "ThreadsPerCore": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-cpuoptions.html#cfn-ec2-instance-cpuoptions-threadspercore", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.CreditSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html", - "Properties": { - "CPUCredits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-creditspecification.html#cfn-ec2-instance-creditspecification-cpucredits", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.Ebs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html", - "Properties": { - "DeleteOnTermination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-deleteontermination", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "Encrypted": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-encrypted", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "Iops": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-iops", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "KmsKeyId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-instance-ebs-kmskeyid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "SnapshotId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-snapshotid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "VolumeSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumesize", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "VolumeType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-blockdev-template.html#cfn-ec2-blockdev-template-volumetype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.ElasticGpuSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html", - "Properties": { - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticgpuspecification.html#cfn-ec2-instance-elasticgpuspecification-type", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.ElasticInferenceAccelerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html", - "Properties": { - "Count": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-count", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-elasticinferenceaccelerator.html#cfn-ec2-instance-elasticinferenceaccelerator-type", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.HibernationOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html", - "Properties": { - "Configured": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-hibernationoptions.html#cfn-ec2-instance-hibernationoptions-configured", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.InstanceIpv6Address": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html", - "Properties": { - "Ipv6Address": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-instanceipv6address.html#cfn-ec2-instance-instanceipv6address-ipv6address", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.LaunchTemplateSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html", - "Properties": { - "LaunchTemplateId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplateid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LaunchTemplateName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-launchtemplatename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Version": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-launchtemplatespecification.html#cfn-ec2-instance-launchtemplatespecification-version", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.LicenseSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html", - "Properties": { - "LicenseConfigurationArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-licensespecification.html#cfn-ec2-instance-licensespecification-licenseconfigurationarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.NetworkInterface": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html", - "Properties": { - "AssociatePublicIpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-associatepubip", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "DeleteOnTermination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-delete", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DeviceIndex": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-deviceindex", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "GroupSet": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-groupset", - "DuplicatesAllowed": true, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Ipv6AddressCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresscount", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Ipv6Addresses": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#cfn-ec2-instance-networkinterface-ipv6addresses", - "DuplicatesAllowed": true, - "ItemType": "InstanceIpv6Address", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "NetworkInterfaceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-network-iface", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PrivateIpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddress", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PrivateIpAddresses": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-privateipaddresses", - "DuplicatesAllowed": true, - "ItemType": "PrivateIpAddressSpecification", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "SecondaryPrivateIpAddressCount": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-secondprivateip", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "SubnetId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-iface-embedded.html#aws-properties-ec2-network-iface-embedded-subnetid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.NoDevice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-nodevice.html", - "Properties": {} - }, - "AWS::EC2::Instance.PrivateIpAddressSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html", - "Properties": { - "Primary": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-primary", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - }, - "PrivateIpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-network-interface-privateipspec.html#cfn-ec2-networkinterface-privateipspecification-privateipaddress", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.SsmAssociation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html", - "Properties": { - "AssociationParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-associationparameters", - "DuplicatesAllowed": true, - "ItemType": "AssociationParameter", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "DocumentName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance-ssmassociations.html#cfn-ec2-instance-ssmassociations-documentname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::Instance.Volume": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html", - "Properties": { - "Device": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-device", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "VolumeId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-mount-point.html#cfn-ec2-mountpoint-volumeid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::LaunchTemplate.BlockDeviceMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html", - "Properties": { - "DeviceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-devicename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Ebs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs", - "Required": false, - "Type": "Ebs", - "UpdateType": "Mutable" - }, - "NoDevice": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-nodevice", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "VirtualName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping.html#cfn-ec2-launchtemplate-blockdevicemapping-virtualname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::LaunchTemplate.CapacityReservationSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html", - "Properties": { - "CapacityReservationPreference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationpreference", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "CapacityReservationTarget": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification.html#cfn-ec2-launchtemplate-launchtemplatedata-capacityreservationspecification-capacityreservationtarget", - "Required": false, - "Type": "CapacityReservationTarget", - "UpdateType": "Mutable" - } - } - }, - "AWS::EC2::LaunchTemplate.CapacityReservationTarget": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html", + "AWS::EC2::LaunchTemplate.CapacityReservationTarget": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html", "Properties": { "CapacityReservationId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-capacityreservationtarget.html#cfn-ec2-launchtemplate-capacityreservationtarget-capacityreservationid", @@ -15093,17 +13858,6 @@ } } }, - "AWS::EC2::LaunchTemplate.EnclaveOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-enclaveoptions.html", - "Properties": { - "Enabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-enclaveoptions.html#cfn-ec2-launchtemplate-launchtemplatedata-enclaveoptions-enabled", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::EC2::LaunchTemplate.HibernationOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-hibernationoptions.html", "Properties": { @@ -15214,12 +13968,6 @@ "Type": "List", "UpdateType": "Mutable" }, - "EnclaveOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-enclaveoptions", - "Required": false, - "Type": "EnclaveOptions", - "UpdateType": "Mutable" - }, "HibernationOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata.html#cfn-ec2-launchtemplate-launchtemplatedata-hibernationoptions", "Required": false, @@ -19774,52 +18522,52 @@ } }, "AWS::ElasticLoadBalancingV2::Listener.Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html", "Properties": { "AuthenticateCognitoConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticatecognitoconfig", "Required": false, "Type": "AuthenticateCognitoConfig", "UpdateType": "Mutable" }, "AuthenticateOidcConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-authenticateoidcconfig", "Required": false, "Type": "AuthenticateOidcConfig", "UpdateType": "Mutable" }, "FixedResponseConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-fixedresponseconfig", "Required": false, "Type": "FixedResponseConfig", "UpdateType": "Mutable" }, "ForwardConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-forwardconfig", "Required": false, "Type": "ForwardConfig", "UpdateType": "Mutable" }, "Order": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-order", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-order", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "RedirectConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-action-redirectconfig", "Required": false, "Type": "RedirectConfig", "UpdateType": "Mutable" }, "TargetGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-targetgrouparn", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-targetgrouparn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-action.html#cfn-elasticloadbalancingv2-listener-action-type", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-defaultactions.html#cfn-elasticloadbalancingv2-listener-defaultactions-type", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" @@ -19831,6 +18579,7 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-authenticationrequestextraparams", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -19856,7 +18605,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listener-authenticatecognitoconfig-sessiontimeout", - "PrimitiveType": "String", + "PrimitiveType": "Long", "Required": false, "UpdateType": "Mutable" }, @@ -19885,6 +18634,7 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-authenticationrequestextraparams", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -19934,7 +18684,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listener-authenticateoidcconfig-sessiontimeout", - "PrimitiveType": "String", + "PrimitiveType": "Long", "Required": false, "UpdateType": "Mutable" }, @@ -19953,10 +18703,10 @@ } }, "AWS::ElasticLoadBalancingV2::Listener.Certificate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html", "Properties": { "CertificateArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificate.html#cfn-elasticloadbalancingv2-listener-certificate-certificatearn", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listener-certificates.html#cfn-elasticloadbalancingv2-listener-certificates-certificatearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" @@ -22126,7 +20876,7 @@ "ConnectionProperties": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html#cfn-glue-connection-connectioninput-connectionproperties", "PrimitiveType": "Json", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "ConnectionType": { @@ -22242,12 +20992,6 @@ "AWS::Glue::Crawler.S3Target": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html", "Properties": { - "ConnectionName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html#cfn-glue-crawler-s3target-connectionname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "Exclusions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-crawler-s3target.html#cfn-glue-crawler-s3target-exclusions", "PrimitiveItemType": "String", @@ -22375,44 +21119,9 @@ } } }, - "AWS::Glue::Database.DataLakePrincipal": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-datalakeprincipal.html", - "Properties": { - "DataLakePrincipalIdentifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-datalakeprincipal.html#cfn-glue-database-datalakeprincipal-datalakeprincipalidentifier", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::Glue::Database.DatabaseIdentifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseidentifier.html", - "Properties": { - "CatalogId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseidentifier.html#cfn-glue-database-databaseidentifier-catalogid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DatabaseName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseidentifier.html#cfn-glue-database-databaseidentifier-databasename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::Glue::Database.DatabaseInput": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html", "Properties": { - "CreateTableDefaultPermissions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-createtabledefaultpermissions", - "ItemType": "PrincipalPrivileges", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "Description": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-description", "PrimitiveType": "String", @@ -22436,30 +21145,6 @@ "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" - }, - "TargetDatabase": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-databaseinput.html#cfn-glue-database-databaseinput-targetdatabase", - "Required": false, - "Type": "DatabaseIdentifier", - "UpdateType": "Mutable" - } - } - }, - "AWS::Glue::Database.PrincipalPrivileges": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-principalprivileges.html", - "Properties": { - "Permissions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-principalprivileges.html#cfn-glue-database-principalprivileges-permissions", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Principal": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-database-principalprivileges.html#cfn-glue-database-principalprivileges-principal", - "Required": false, - "Type": "DataLakePrincipal", - "UpdateType": "Mutable" } } }, @@ -22590,40 +21275,6 @@ } } }, - "AWS::Glue::MLTransform.MLUserDataEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption-mluserdataencryption.html", - "Properties": { - "KmsKeyId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption-mluserdataencryption.html#cfn-glue-mltransform-transformencryption-mluserdataencryption-kmskeyid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "MLUserDataEncryptionMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption-mluserdataencryption.html#cfn-glue-mltransform-transformencryption-mluserdataencryption-mluserdataencryptionmode", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::Glue::MLTransform.TransformEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption.html", - "Properties": { - "MLUserDataEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption.html#cfn-glue-mltransform-transformencryption-mluserdataencryption", - "Required": false, - "Type": "MLUserDataEncryption", - "UpdateType": "Mutable" - }, - "TaskRunSecurityConfigurationName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformencryption.html#cfn-glue-mltransform-transformencryption-taskrunsecurityconfigurationname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::Glue::MLTransform.TransformParameters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-mltransform-transformparameters.html", "Properties": { @@ -22833,63 +21484,6 @@ } } }, - "AWS::Glue::Schema.Registry": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-registry.html", - "Properties": { - "Arn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-registry.html#cfn-glue-schema-registry-arn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-registry.html#cfn-glue-schema-registry-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::Glue::Schema.SchemaVersion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-schemaversion.html", - "Properties": { - "IsLatest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-schemaversion.html#cfn-glue-schema-schemaversion-islatest", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "VersionNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schema-schemaversion.html#cfn-glue-schema-schemaversion-versionnumber", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::Glue::SchemaVersion.Schema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html", - "Properties": { - "RegistryName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html#cfn-glue-schemaversion-schema-registryname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "SchemaArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html#cfn-glue-schemaversion-schema-schemaarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "SchemaName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-schemaversion-schema.html#cfn-glue-schemaversion-schema-schemaname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::Glue::SecurityConfiguration.CloudWatchEncryption": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-securityconfiguration-cloudwatchencryption.html", "Properties": { @@ -23139,29 +21733,6 @@ } } }, - "AWS::Glue::Table.TableIdentifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html", - "Properties": { - "CatalogId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html#cfn-glue-table-tableidentifier-catalogid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DatabaseName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html#cfn-glue-table-tableidentifier-databasename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableidentifier.html#cfn-glue-table-tableidentifier-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::Glue::Table.TableInput": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html", "Properties": { @@ -23214,12 +21785,6 @@ "Required": false, "UpdateType": "Mutable" }, - "TargetTable": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-targettable", - "Required": false, - "Type": "TableIdentifier", - "UpdateType": "Mutable" - }, "ViewExpandedText": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-table-tableinput.html#cfn-glue-table-tableinput-viewexpandedtext", "PrimitiveType": "String", @@ -25720,17 +24285,6 @@ } } }, - "AWS::IoT::TopicRuleDestination.HttpUrlDestinationSummary": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicruledestination-httpurldestinationsummary.html", - "Properties": { - "ConfirmationUrl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-topicruledestination-httpurldestinationsummary.html#cfn-iot-topicruledestination-httpurldestinationsummary-confirmationurl", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::IoTAnalytics::Channel.ChannelStorage": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotanalytics-channel-channelstorage.html", "Properties": { @@ -30905,29 +29459,6 @@ } } }, - "AWS::Lambda::CodeSigningConfig.AllowedPublishers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-allowedpublishers.html", - "Properties": { - "SigningProfileVersionArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-allowedpublishers.html#cfn-lambda-codesigningconfig-allowedpublishers-signingprofileversionarns", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::Lambda::CodeSigningConfig.CodeSigningPolicies": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-codesigningpolicies.html", - "Properties": { - "UntrustedArtifactOnDeployment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-codesigningconfig-codesigningpolicies.html#cfn-lambda-codesigningconfig-codesigningpolicies-untrustedartifactondeployment", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::Lambda::EventInvokeConfig.DestinationConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-eventinvokeconfig-destinationconfig.html", "Properties": { @@ -32192,5371 +30723,4556 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35spliceinsert", "Required": false, "Type": "Scte35SpliceInsert", - "UpdateType": "Mutable" - }, - "Scte35TimeSignalApos": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35timesignalapos", - "Required": false, - "Type": "Scte35TimeSignalApos", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.BlackoutSlate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html", - "Properties": { - "BlackoutSlateImage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-blackoutslateimage", - "Required": false, - "Type": "InputLocation", - "UpdateType": "Mutable" - }, - "NetworkEndBlackout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackout", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "NetworkEndBlackoutImage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackoutimage", - "Required": false, - "Type": "InputLocation", - "UpdateType": "Mutable" - }, - "NetworkId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "State": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-state", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.BurnInDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html", - "Properties": { - "Alignment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-alignment", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "BackgroundColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundcolor", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "BackgroundOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundopacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Font": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-font", - "Required": false, - "Type": "InputLocation", - "UpdateType": "Mutable" - }, - "FontColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontcolor", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FontOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontopacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FontResolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontresolution", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FontSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontsize", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "OutlineColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinecolor", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "OutlineSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinesize", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "ShadowColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowcolor", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ShadowOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowopacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "ShadowXOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowxoffset", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "ShadowYOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowyoffset", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "TeletextGridControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-teletextgridcontrol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "XPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-xposition", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "YPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-yposition", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.CaptionDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html", - "Properties": { - "CaptionSelectorName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-captionselectorname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-destinationsettings", - "Required": false, - "Type": "CaptionDestinationSettings", - "UpdateType": "Mutable" - }, - "LanguageCode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagecode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LanguageDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagedescription", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.CaptionDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html", - "Properties": { - "AribDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-aribdestinationsettings", - "Required": false, - "Type": "AribDestinationSettings", - "UpdateType": "Mutable" - }, - "BurnInDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-burnindestinationsettings", - "Required": false, - "Type": "BurnInDestinationSettings", - "UpdateType": "Mutable" - }, - "DvbSubDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-dvbsubdestinationsettings", - "Required": false, - "Type": "DvbSubDestinationSettings", - "UpdateType": "Mutable" - }, - "EbuTtDDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ebuttddestinationsettings", - "Required": false, - "Type": "EbuTtDDestinationSettings", - "UpdateType": "Mutable" - }, - "EmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddeddestinationsettings", - "Required": false, - "Type": "EmbeddedDestinationSettings", - "UpdateType": "Mutable" - }, - "EmbeddedPlusScte20DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddedplusscte20destinationsettings", - "Required": false, - "Type": "EmbeddedPlusScte20DestinationSettings", - "UpdateType": "Mutable" - }, - "RtmpCaptionInfoDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-rtmpcaptioninfodestinationsettings", - "Required": false, - "Type": "RtmpCaptionInfoDestinationSettings", - "UpdateType": "Mutable" - }, - "Scte20PlusEmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte20plusembeddeddestinationsettings", - "Required": false, - "Type": "Scte20PlusEmbeddedDestinationSettings", - "UpdateType": "Mutable" - }, - "Scte27DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte27destinationsettings", - "Required": false, - "Type": "Scte27DestinationSettings", - "UpdateType": "Mutable" - }, - "SmpteTtDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-smptettdestinationsettings", - "Required": false, - "Type": "SmpteTtDestinationSettings", - "UpdateType": "Mutable" - }, - "TeletextDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-teletextdestinationsettings", - "Required": false, - "Type": "TeletextDestinationSettings", - "UpdateType": "Mutable" - }, - "TtmlDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ttmldestinationsettings", - "Required": false, - "Type": "TtmlDestinationSettings", - "UpdateType": "Mutable" - }, - "WebvttDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-webvttdestinationsettings", - "Required": false, - "Type": "WebvttDestinationSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.CaptionLanguageMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html", - "Properties": { - "CaptionChannel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-captionchannel", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "LanguageCode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagecode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LanguageDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagedescription", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.CaptionSelector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html", - "Properties": { - "LanguageCode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-languagecode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-selectorsettings", - "Required": false, - "Type": "CaptionSelectorSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.CaptionSelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html", - "Properties": { - "AribSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-aribsourcesettings", - "Required": false, - "Type": "AribSourceSettings", - "UpdateType": "Mutable" - }, - "DvbSubSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-dvbsubsourcesettings", - "Required": false, - "Type": "DvbSubSourceSettings", - "UpdateType": "Mutable" - }, - "EmbeddedSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-embeddedsourcesettings", - "Required": false, - "Type": "EmbeddedSourceSettings", - "UpdateType": "Mutable" - }, - "Scte20SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte20sourcesettings", - "Required": false, - "Type": "Scte20SourceSettings", - "UpdateType": "Mutable" - }, - "Scte27SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte27sourcesettings", - "Required": false, - "Type": "Scte27SourceSettings", - "UpdateType": "Mutable" - }, - "TeletextSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-teletextsourcesettings", - "Required": false, - "Type": "TeletextSourceSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.ColorSpacePassthroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-colorspacepassthroughsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.DvbNitSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html", - "Properties": { - "NetworkId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkid", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "NetworkName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RepInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-repinterval", - "PrimitiveType": "Integer", + "UpdateType": "Mutable" + }, + "Scte35TimeSignalApos": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-availsettings.html#cfn-medialive-channel-availsettings-scte35timesignalapos", "Required": false, + "Type": "Scte35TimeSignalApos", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.DvbSdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html", + "AWS::MediaLive::Channel.BlackoutSlate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html", "Properties": { - "OutputSdt": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-outputsdt", + "BlackoutSlateImage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-blackoutslateimage", + "Required": false, + "Type": "InputLocation", + "UpdateType": "Mutable" + }, + "NetworkEndBlackout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackout", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RepInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-repinterval", - "PrimitiveType": "Integer", + "NetworkEndBlackoutImage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkendblackoutimage", "Required": false, + "Type": "InputLocation", "UpdateType": "Mutable" }, - "ServiceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-servicename", + "NetworkId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-networkid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ServiceProviderName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-serviceprovidername", + "State": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-blackoutslate.html#cfn-medialive-channel-blackoutslate-state", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.DvbSubDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html", + "AWS::MediaLive::Channel.BurnInDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html", "Properties": { "Alignment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-alignment", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-alignment", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "BackgroundColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundcolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "BackgroundOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundopacity", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-backgroundopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "Font": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-font", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-font", "Required": false, "Type": "InputLocation", "UpdateType": "Mutable" }, "FontColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontcolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "FontOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontopacity", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "FontResolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontresolution", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontresolution", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "FontSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontsize", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-fontsize", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "OutlineColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinecolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinecolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "OutlineSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinesize", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-outlinesize", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "ShadowColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowcolor", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "ShadowOpacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowopacity", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "ShadowXOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowxoffset", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowxoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "ShadowYOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowyoffset", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-shadowyoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "TeletextGridControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-teletextgridcontrol", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-teletextgridcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "XPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-xposition", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-xposition", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "YPosition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-yposition", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.DvbSubSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html", - "Properties": { - "Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html#cfn-medialive-channel-dvbsubsourcesettings-pid", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.DvbTdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html", - "Properties": { - "RepInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html#cfn-medialive-channel-dvbtdtsettings-repinterval", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-burnindestinationsettings.html#cfn-medialive-channel-burnindestinationsettings-yposition", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.Eac3Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html", + "AWS::MediaLive::Channel.CaptionDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html", "Properties": { - "AttenuationControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-attenuationcontrol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitrate", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "BitstreamMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitstreammode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "CodingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-codingmode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DcFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dcfilter", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Dialnorm": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dialnorm", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "DrcLine": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcline", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DrcRf": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcrf", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LfeControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfecontrol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LfeFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfefilter", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LoRoCenterMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorocentermixlevel", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "LoRoSurroundMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorosurroundmixlevel", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "LtRtCenterMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtcentermixlevel", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "LtRtSurroundMixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtsurroundmixlevel", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "MetadataControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-metadatacontrol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PassthroughControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-passthroughcontrol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PhaseControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-phasecontrol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "StereoDownmix": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-stereodownmix", + "CaptionSelectorName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-captionselectorname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SurroundExMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundexmode", - "PrimitiveType": "String", + "DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-destinationsettings", "Required": false, + "Type": "CaptionDestinationSettings", "UpdateType": "Mutable" }, - "SurroundMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundmode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.EbuTtDDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html", - "Properties": { - "FillLineGap": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-filllinegap", + "LanguageCode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagecode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FontFamily": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-fontfamily", + "LanguageDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-languagedescription", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StyleControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-stylecontrol", + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondescription.html#cfn-medialive-channel-captiondescription-name", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.EmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddeddestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.EmbeddedPlusScte20DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedplusscte20destinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.EmbeddedSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html", + "AWS::MediaLive::Channel.CaptionDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html", "Properties": { - "Convert608To708": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-convert608to708", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Scte20Detection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-scte20detection", - "PrimitiveType": "String", + "AribDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-aribdestinationsettings", "Required": false, + "Type": "AribDestinationSettings", "UpdateType": "Mutable" }, - "Source608ChannelNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608channelnumber", - "PrimitiveType": "Integer", + "BurnInDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-burnindestinationsettings", "Required": false, + "Type": "BurnInDestinationSettings", "UpdateType": "Mutable" }, - "Source608TrackNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608tracknumber", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.EncoderSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html", - "Properties": { - "AudioDescriptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-audiodescriptions", - "ItemType": "AudioDescription", + "DvbSubDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-dvbsubdestinationsettings", "Required": false, - "Type": "List", + "Type": "DvbSubDestinationSettings", "UpdateType": "Mutable" }, - "AvailBlanking": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availblanking", + "EbuTtDDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ebuttddestinationsettings", "Required": false, - "Type": "AvailBlanking", + "Type": "EbuTtDDestinationSettings", "UpdateType": "Mutable" }, - "AvailConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availconfiguration", + "EmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddeddestinationsettings", "Required": false, - "Type": "AvailConfiguration", + "Type": "EmbeddedDestinationSettings", "UpdateType": "Mutable" }, - "BlackoutSlate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-blackoutslate", + "EmbeddedPlusScte20DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-embeddedplusscte20destinationsettings", "Required": false, - "Type": "BlackoutSlate", + "Type": "EmbeddedPlusScte20DestinationSettings", "UpdateType": "Mutable" }, - "CaptionDescriptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-captiondescriptions", - "ItemType": "CaptionDescription", + "RtmpCaptionInfoDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-rtmpcaptioninfodestinationsettings", "Required": false, - "Type": "List", + "Type": "RtmpCaptionInfoDestinationSettings", "UpdateType": "Mutable" }, - "FeatureActivations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-featureactivations", + "Scte20PlusEmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte20plusembeddeddestinationsettings", "Required": false, - "Type": "FeatureActivations", + "Type": "Scte20PlusEmbeddedDestinationSettings", "UpdateType": "Mutable" }, - "GlobalConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-globalconfiguration", + "Scte27DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-scte27destinationsettings", "Required": false, - "Type": "GlobalConfiguration", + "Type": "Scte27DestinationSettings", "UpdateType": "Mutable" }, - "NielsenConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-nielsenconfiguration", + "SmpteTtDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-smptettdestinationsettings", "Required": false, - "Type": "NielsenConfiguration", + "Type": "SmpteTtDestinationSettings", "UpdateType": "Mutable" }, - "OutputGroups": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-outputgroups", - "ItemType": "OutputGroup", + "TeletextDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-teletextdestinationsettings", "Required": false, - "Type": "List", + "Type": "TeletextDestinationSettings", "UpdateType": "Mutable" }, - "TimecodeConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-timecodeconfig", + "TtmlDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-ttmldestinationsettings", "Required": false, - "Type": "TimecodeConfig", + "Type": "TtmlDestinationSettings", "UpdateType": "Mutable" }, - "VideoDescriptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-videodescriptions", - "ItemType": "VideoDescription", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FeatureActivations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html", - "Properties": { - "InputPrepareScheduleActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html#cfn-medialive-channel-featureactivations-inputpreparescheduleactions", - "PrimitiveType": "String", + "WebvttDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captiondestinationsettings.html#cfn-medialive-channel-captiondestinationsettings-webvttdestinationsettings", "Required": false, + "Type": "WebvttDestinationSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.FecOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html", + "AWS::MediaLive::Channel.CaptionLanguageMapping": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html", "Properties": { - "ColumnDepth": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-columndepth", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "IncludeFec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-includefec", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RowLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-rowlength", + "CaptionChannel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-captionchannel", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Fmp4HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html", - "Properties": { - "AudioRenditionSets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-audiorenditionsets", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "NielsenId3Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-nielsenid3behavior", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" }, - "TimedMetadataBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-timedmetadatabehavior", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FrameCaptureGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html", - "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html#cfn-medialive-channel-framecapturegroupsettings-destination", - "Required": false, - "Type": "OutputLocationRef", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FrameCaptureOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html", - "Properties": { - "NameModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html#cfn-medialive-channel-framecaptureoutputsettings-namemodifier", + "LanguageCode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagecode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FrameCaptureSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html", - "Properties": { - "CaptureInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureinterval", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" }, - "CaptureIntervalUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureintervalunits", + "LanguageDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionlanguagemapping.html#cfn-medialive-channel-captionlanguagemapping-languagedescription", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.GlobalConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html", + "AWS::MediaLive::Channel.CaptionSelector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html", "Properties": { - "InitialAudioGain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-initialaudiogain", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "InputEndAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputendaction", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "InputLossBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputlossbehavior", - "Required": false, - "Type": "InputLossBehavior", - "UpdateType": "Mutable" - }, - "OutputLockingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputlockingmode", + "LanguageCode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-languagecode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OutputTimingSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputtimingsource", + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-name", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SupportLowFramerateInputs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-supportlowframerateinputs", - "PrimitiveType": "String", + "SelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselector.html#cfn-medialive-channel-captionselector-selectorsettings", "Required": false, + "Type": "CaptionSelectorSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.H264ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html", + "AWS::MediaLive::Channel.CaptionSelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html", "Properties": { - "ColorSpacePassthroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-colorspacepassthroughsettings", - "Required": false, - "Type": "ColorSpacePassthroughSettings", - "UpdateType": "Mutable" - }, - "Rec601Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec601settings", + "AribSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-aribsourcesettings", "Required": false, - "Type": "Rec601Settings", + "Type": "AribSourceSettings", "UpdateType": "Mutable" }, - "Rec709Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec709settings", - "Required": false, - "Type": "Rec709Settings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H264FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html", - "Properties": { - "TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html#cfn-medialive-channel-h264filtersettings-temporalfiltersettings", - "Required": false, - "Type": "TemporalFilterSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H264Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html", - "Properties": { - "AdaptiveQuantization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-adaptivequantization", - "PrimitiveType": "String", + "DvbSubSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-dvbsubsourcesettings", "Required": false, + "Type": "DvbSubSourceSettings", "UpdateType": "Mutable" }, - "AfdSignaling": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-afdsignaling", - "PrimitiveType": "String", + "EmbeddedSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-embeddedsourcesettings", "Required": false, + "Type": "EmbeddedSourceSettings", "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bitrate", - "PrimitiveType": "Integer", + "Scte20SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte20sourcesettings", "Required": false, + "Type": "Scte20SourceSettings", "UpdateType": "Mutable" }, - "BufFillPct": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-buffillpct", - "PrimitiveType": "Integer", + "Scte27SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-scte27sourcesettings", "Required": false, + "Type": "Scte27SourceSettings", "UpdateType": "Mutable" }, - "BufSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bufsize", + "TeletextSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-teletextsourcesettings", + "Required": false, + "Type": "TeletextSourceSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.ColorSpacePassthroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-colorspacepassthroughsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.DvbNitSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html", + "Properties": { + "NetworkId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkid", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ColorMetadata": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colormetadata", + "NetworkName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-networkname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colorspacesettings", + "RepInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbnitsettings.html#cfn-medialive-channel-dvbnitsettings-repinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "H264ColorSpaceSettings", "UpdateType": "Mutable" - }, - "EntropyEncoding": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-entropyencoding", + } + } + }, + "AWS::MediaLive::Channel.DvbSdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html", + "Properties": { + "OutputSdt": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-outputsdt", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-filtersettings", + "RepInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-repinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "H264FilterSettings", "UpdateType": "Mutable" }, - "FixedAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-fixedafd", + "ServiceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-servicename", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FlickerAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-flickeraq", + "ServiceProviderName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsdtsettings.html#cfn-medialive-channel-dvbsdtsettings-serviceprovidername", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "ForceFieldPictures": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-forcefieldpictures", + } + } + }, + "AWS::MediaLive::Channel.DvbSubDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html", + "Properties": { + "Alignment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-alignment", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FramerateControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratecontrol", + "BackgroundColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FramerateDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratedenominator", + "BackgroundOpacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-backgroundopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FramerateNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratenumerator", - "PrimitiveType": "Integer", + "Font": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-font", "Required": false, + "Type": "InputLocation", "UpdateType": "Mutable" }, - "GopBReference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopbreference", + "FontColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "GopClosedCadence": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopclosedcadence", + "FontOpacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "GopNumBFrames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopnumbframes", + "FontResolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontresolution", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "GopSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsize", - "PrimitiveType": "Double", + "FontSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-fontsize", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "GopSizeUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsizeunits", + "OutlineColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinecolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Level": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-level", - "PrimitiveType": "String", + "OutlineSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-outlinesize", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "LookAheadRateControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-lookaheadratecontrol", + "ShadowColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowcolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MaxBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-maxbitrate", + "ShadowOpacity": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowopacity", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "MinIInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-miniinterval", + "ShadowXOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowxoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "NumRefFrames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-numrefframes", + "ShadowYOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-shadowyoffset", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ParControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parcontrol", + "TeletextGridControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-teletextgridcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ParDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-pardenominator", + "XPosition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-xposition", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ParNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parnumerator", + "YPosition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubdestinationsettings.html#cfn-medialive-channel-dvbsubdestinationsettings-yposition", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-profile", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.DvbSubSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html", + "Properties": { + "Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbsubsourcesettings.html#cfn-medialive-channel-dvbsubsourcesettings-pid", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "QualityLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qualitylevel", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.DvbTdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html", + "Properties": { + "RepInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-dvbtdtsettings.html#cfn-medialive-channel-dvbtdtsettings-repinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "QvbrQualityLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qvbrqualitylevel", - "PrimitiveType": "Integer", + } + } + }, + "AWS::MediaLive::Channel.Eac3Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html", + "Properties": { + "AttenuationControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-attenuationcontrol", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RateControlMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-ratecontrolmode", - "PrimitiveType": "String", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitrate", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "ScanType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scantype", + "BitstreamMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-bitstreammode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SceneChangeDetect": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scenechangedetect", + "CodingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-codingmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Slices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-slices", - "PrimitiveType": "Integer", + "DcFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dcfilter", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Softness": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-softness", + "Dialnorm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-dialnorm", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SpatialAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-spatialaq", + "DrcLine": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcline", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SubgopLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-subgoplength", + "DrcRf": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-drcrf", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Syntax": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-syntax", + "LfeControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TemporalAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-temporalaq", + "LfeFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lfefilter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimecodeInsertion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-timecodeinsertion", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H265ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html", - "Properties": { - "ColorSpacePassthroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-colorspacepassthroughsettings", + "LoRoCenterMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorocentermixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "Hdr10Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-hdr10settings", + "LoRoSurroundMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-lorosurroundmixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "Hdr10Settings", "UpdateType": "Mutable" }, - "Rec601Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec601settings", + "LtRtCenterMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtcentermixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "Rec601Settings", "UpdateType": "Mutable" }, - "Rec709Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec709settings", + "LtRtSurroundMixLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-ltrtsurroundmixlevel", + "PrimitiveType": "Double", "Required": false, - "Type": "Rec709Settings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H265FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html", - "Properties": { - "TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html#cfn-medialive-channel-h265filtersettings-temporalfiltersettings", + }, + "MetadataControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-metadatacontrol", + "PrimitiveType": "String", "Required": false, - "Type": "TemporalFilterSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.H265Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html", - "Properties": { - "AdaptiveQuantization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-adaptivequantization", + }, + "PassthroughControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-passthroughcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AfdSignaling": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-afdsignaling", + "PhaseControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-phasecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AlternativeTransferFunction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-alternativetransferfunction", + "StereoDownmix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-stereodownmix", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bitrate", - "PrimitiveType": "Integer", + "SurroundExMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundexmode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BufSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bufsize", - "PrimitiveType": "Integer", + "SurroundMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-eac3settings.html#cfn-medialive-channel-eac3settings-surroundmode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "ColorMetadata": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colormetadata", + } + } + }, + "AWS::MediaLive::Channel.EbuTtDDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html", + "Properties": { + "FillLineGap": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-filllinegap", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ColorSpaceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colorspacesettings", + "FontFamily": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-fontfamily", + "PrimitiveType": "String", "Required": false, - "Type": "H265ColorSpaceSettings", "UpdateType": "Mutable" }, - "FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-filtersettings", + "StyleControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ebuttddestinationsettings.html#cfn-medialive-channel-ebuttddestinationsettings-stylecontrol", + "PrimitiveType": "String", "Required": false, - "Type": "H265FilterSettings", "UpdateType": "Mutable" - }, - "FixedAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-fixedafd", + } + } + }, + "AWS::MediaLive::Channel.EmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddeddestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.EmbeddedPlusScte20DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedplusscte20destinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.EmbeddedSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html", + "Properties": { + "Convert608To708": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-convert608to708", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FlickerAq": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-flickeraq", + "Scte20Detection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-scte20detection", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FramerateDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratedenominator", + "Source608ChannelNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608channelnumber", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FramerateNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratenumerator", + "Source608TrackNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-embeddedsourcesettings.html#cfn-medialive-channel-embeddedsourcesettings-source608tracknumber", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.EncoderSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html", + "Properties": { + "AudioDescriptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-audiodescriptions", + "ItemType": "AudioDescription", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" }, - "GopClosedCadence": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopclosedcadence", - "PrimitiveType": "Integer", + "AvailBlanking": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availblanking", "Required": false, + "Type": "AvailBlanking", "UpdateType": "Mutable" }, - "GopSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsize", - "PrimitiveType": "Double", + "AvailConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-availconfiguration", "Required": false, + "Type": "AvailConfiguration", "UpdateType": "Mutable" }, - "GopSizeUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsizeunits", - "PrimitiveType": "String", + "BlackoutSlate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-blackoutslate", "Required": false, + "Type": "BlackoutSlate", "UpdateType": "Mutable" }, - "Level": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-level", - "PrimitiveType": "String", + "CaptionDescriptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-captiondescriptions", + "ItemType": "CaptionDescription", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "LookAheadRateControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-lookaheadratecontrol", - "PrimitiveType": "String", + "FeatureActivations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-featureactivations", "Required": false, + "Type": "FeatureActivations", "UpdateType": "Mutable" }, - "MaxBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-maxbitrate", - "PrimitiveType": "Integer", + "GlobalConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-globalconfiguration", "Required": false, + "Type": "GlobalConfiguration", "UpdateType": "Mutable" }, - "MinIInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-miniinterval", - "PrimitiveType": "Integer", + "NielsenConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-nielsenconfiguration", "Required": false, + "Type": "NielsenConfiguration", "UpdateType": "Mutable" }, - "ParDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-pardenominator", - "PrimitiveType": "Integer", + "OutputGroups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-outputgroups", + "ItemType": "OutputGroup", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "ParNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-parnumerator", - "PrimitiveType": "Integer", + "TimecodeConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-timecodeconfig", "Required": false, + "Type": "TimecodeConfig", "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-profile", + "VideoDescriptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-encodersettings.html#cfn-medialive-channel-encodersettings-videodescriptions", + "ItemType": "VideoDescription", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.FeatureActivations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html", + "Properties": { + "InputPrepareScheduleActions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html#cfn-medialive-channel-featureactivations-inputpreparescheduleactions", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "QvbrQualityLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-qvbrqualitylevel", + } + } + }, + "AWS::MediaLive::Channel.FecOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html", + "Properties": { + "ColumnDepth": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-columndepth", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RateControlMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-ratecontrolmode", + "IncludeFec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-includefec", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ScanType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scantype", - "PrimitiveType": "String", + "RowLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fecoutputsettings.html#cfn-medialive-channel-fecoutputsettings-rowlength", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "SceneChangeDetect": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scenechangedetect", + } + } + }, + "AWS::MediaLive::Channel.Fmp4HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html", + "Properties": { + "AudioRenditionSets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-audiorenditionsets", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Slices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-slices", - "PrimitiveType": "Integer", + "NielsenId3Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-nielsenid3behavior", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Tier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-tier", + "TimedMetadataBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-fmp4hlssettings.html#cfn-medialive-channel-fmp4hlssettings-timedmetadatabehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "TimecodeInsertion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-timecodeinsertion", + } + } + }, + "AWS::MediaLive::Channel.FrameCaptureGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html", + "Properties": { + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturegroupsettings.html#cfn-medialive-channel-framecapturegroupsettings-destination", + "Required": false, + "Type": "OutputLocationRef", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.FrameCaptureOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html", + "Properties": { + "NameModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecaptureoutputsettings.html#cfn-medialive-channel-framecaptureoutputsettings-namemodifier", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.Hdr10Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html", + "AWS::MediaLive::Channel.FrameCaptureSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html", "Properties": { - "MaxCll": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxcll", + "CaptureInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "MaxFall": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxfall", - "PrimitiveType": "Integer", + "CaptureIntervalUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-framecapturesettings.html#cfn-medialive-channel-framecapturesettings-captureintervalunits", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsAkamaiSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html", + "AWS::MediaLive::Channel.GlobalConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html", "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-connectionretryinterval", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-filecacheduration", + "InitialAudioGain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-initialaudiogain", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "HttpTransferMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-httptransfermode", + "InputEndAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputendaction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-numretries", - "PrimitiveType": "Integer", + "InputLossBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-inputlossbehavior", "Required": false, + "Type": "InputLossBehavior", "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-restartdelay", - "PrimitiveType": "Integer", + "OutputLockingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputlockingmode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Salt": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-salt", + "OutputTimingSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-outputtimingsource", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Token": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-token", + "SupportLowFramerateInputs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-globalconfiguration.html#cfn-medialive-channel-globalconfiguration-supportlowframerateinputs", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsBasicPutSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html", + "AWS::MediaLive::Channel.H264ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html", "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-connectionretryinterval", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-filecacheduration", - "PrimitiveType": "Integer", + "ColorSpacePassthroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-colorspacepassthroughsettings", "Required": false, + "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-numretries", - "PrimitiveType": "Integer", + "Rec601Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec601settings", "Required": false, + "Type": "Rec601Settings", "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-restartdelay", - "PrimitiveType": "Integer", + "Rec709Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264colorspacesettings.html#cfn-medialive-channel-h264colorspacesettings-rec709settings", "Required": false, + "Type": "Rec709Settings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsCdnSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html", + "AWS::MediaLive::Channel.H264FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html", "Properties": { - "HlsAkamaiSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsakamaisettings", - "Required": false, - "Type": "HlsAkamaiSettings", - "UpdateType": "Mutable" - }, - "HlsBasicPutSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsbasicputsettings", - "Required": false, - "Type": "HlsBasicPutSettings", - "UpdateType": "Mutable" - }, - "HlsMediaStoreSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsmediastoresettings", - "Required": false, - "Type": "HlsMediaStoreSettings", - "UpdateType": "Mutable" - }, - "HlsWebdavSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlswebdavsettings", + "TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264filtersettings.html#cfn-medialive-channel-h264filtersettings-temporalfiltersettings", "Required": false, - "Type": "HlsWebdavSettings", + "Type": "TemporalFilterSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html", + "AWS::MediaLive::Channel.H264Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-admarkers", - "PrimitiveItemType": "String", + "AdaptiveQuantization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-adaptivequantization", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "BaseUrlContent": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent", + "AfdSignaling": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-afdsignaling", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "BaseUrlContent1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent1", - "PrimitiveType": "String", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bitrate", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "BaseUrlManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest", - "PrimitiveType": "String", + "BufFillPct": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-buffillpct", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "BaseUrlManifest1": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest1", - "PrimitiveType": "String", + "BufSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-bufsize", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "CaptionLanguageMappings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagemappings", - "ItemType": "CaptionLanguageMapping", + "ColorMetadata": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colormetadata", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "CaptionLanguageSetting": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagesetting", - "PrimitiveType": "String", + "ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-colorspacesettings", "Required": false, + "Type": "H264ColorSpaceSettings", "UpdateType": "Mutable" }, - "ClientCache": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-clientcache", + "EntropyEncoding": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-entropyencoding", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CodecSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-codecspecification", - "PrimitiveType": "String", + "FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-filtersettings", "Required": false, + "Type": "H264FilterSettings", "UpdateType": "Mutable" }, - "ConstantIv": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-constantiv", + "FixedAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-fixedafd", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-destination", + "FlickerAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-flickeraq", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "DirectoryStructure": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-directorystructure", + "ForceFieldPictures": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-forcefieldpictures", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EncryptionType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-encryptiontype", + "FramerateControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "HlsCdnSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlscdnsettings", + "FramerateDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratedenominator", + "PrimitiveType": "Integer", "Required": false, - "Type": "HlsCdnSettings", "UpdateType": "Mutable" }, - "HlsId3SegmentTagging": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlsid3segmenttagging", - "PrimitiveType": "String", + "FramerateNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-frameratenumerator", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "IFrameOnlyPlaylists": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-iframeonlyplaylists", + "GopBReference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopbreference", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "IndexNSegments": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-indexnsegments", + "GopClosedCadence": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopclosedcadence", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-inputlossaction", - "PrimitiveType": "String", + "GopNumBFrames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopnumbframes", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "IvInManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivinmanifest", - "PrimitiveType": "String", + "GopSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsize", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "IvSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivsource", + "GopSizeUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-gopsizeunits", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeepSegments": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keepsegments", - "PrimitiveType": "Integer", + "Level": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-level", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeyFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformat", + "LookAheadRateControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-lookaheadratecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeyFormatVersions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformatversions", - "PrimitiveType": "String", + "MaxBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-maxbitrate", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "KeyProviderSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyprovidersettings", + "MinIInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-miniinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "KeyProviderSettings", "UpdateType": "Mutable" }, - "ManifestCompression": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestcompression", - "PrimitiveType": "String", + "NumRefFrames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-numrefframes", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ManifestDurationFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestdurationformat", + "ParControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MinSegmentLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-minsegmentlength", + "ParDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-pardenominator", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Mode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-mode", - "PrimitiveType": "String", + "ParNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-parnumerator", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "OutputSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-outputselection", + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-profile", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramDateTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetime", + "QualityLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qualitylevel", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramDateTimePeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetimeperiod", + "QvbrQualityLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-qvbrqualitylevel", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RedundantManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-redundantmanifest", + "RateControlMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-ratecontrolmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentlength", - "PrimitiveType": "Integer", + "ScanType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scantype", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentationMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentationmode", + "SceneChangeDetect": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-scenechangedetect", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentsPerSubdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentspersubdirectory", + "Slices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-slices", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "StreamInfResolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-streaminfresolution", + "Softness": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-softness", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "SpatialAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-spatialaq", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Frame": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3frame", + "SubgopLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-subgoplength", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Period": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3period", - "PrimitiveType": "Integer", + "Syntax": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-syntax", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimestampDeltaMilliseconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timestampdeltamilliseconds", - "PrimitiveType": "Integer", + "TemporalAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-temporalaq", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TsFileMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-tsfilemode", + "TimecodeInsertion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h264settings.html#cfn-medialive-channel-h264settings-timecodeinsertion", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html", + "AWS::MediaLive::Channel.H265ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html", "Properties": { - "Bandwidth": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-bandwidth", - "PrimitiveType": "Integer", + "ColorSpacePassthroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-colorspacepassthroughsettings", "Required": false, + "Type": "ColorSpacePassthroughSettings", "UpdateType": "Mutable" }, - "BufferSegments": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-buffersegments", - "PrimitiveType": "Integer", + "Hdr10Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-hdr10settings", "Required": false, + "Type": "Hdr10Settings", "UpdateType": "Mutable" }, - "Retries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retries", - "PrimitiveType": "Integer", + "Rec601Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec601settings", "Required": false, + "Type": "Rec601Settings", "UpdateType": "Mutable" }, - "RetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retryinterval", - "PrimitiveType": "Integer", + "Rec709Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265colorspacesettings.html#cfn-medialive-channel-h265colorspacesettings-rec709settings", "Required": false, + "Type": "Rec709Settings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.HlsMediaStoreSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html", + "AWS::MediaLive::Channel.H265FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html", "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-connectionretryinterval", - "PrimitiveType": "Integer", + "TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265filtersettings.html#cfn-medialive-channel-h265filtersettings-temporalfiltersettings", + "Required": false, + "Type": "TemporalFilterSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.H265Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html", + "Properties": { + "AdaptiveQuantization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-adaptivequantization", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-filecacheduration", - "PrimitiveType": "Integer", + "AfdSignaling": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-afdsignaling", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MediaStoreStorageClass": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-mediastorestorageclass", + "AlternativeTransferFunction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-alternativetransferfunction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-numretries", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bitrate", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-restartdelay", + "BufSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-bufsize", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html", - "Properties": { - "H265PackagingType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-h265packagingtype", + }, + "ColorMetadata": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colormetadata", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-hlssettings", + "ColorSpaceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-colorspacesettings", "Required": false, - "Type": "HlsSettings", + "Type": "H265ColorSpaceSettings", "UpdateType": "Mutable" }, - "NameModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-namemodifier", - "PrimitiveType": "String", + "FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-filtersettings", "Required": false, + "Type": "H265FilterSettings", "UpdateType": "Mutable" }, - "SegmentModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-segmentmodifier", + "FixedAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-fixedafd", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html", - "Properties": { - "AudioOnlyHlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-audioonlyhlssettings", - "Required": false, - "Type": "AudioOnlyHlsSettings", - "UpdateType": "Mutable" }, - "Fmp4HlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-fmp4hlssettings", + "FlickerAq": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-flickeraq", + "PrimitiveType": "String", "Required": false, - "Type": "Fmp4HlsSettings", "UpdateType": "Mutable" }, - "StandardHlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-standardhlssettings", + "FramerateDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratedenominator", + "PrimitiveType": "Integer", "Required": false, - "Type": "StandardHlsSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.HlsWebdavSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html", - "Properties": { - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-connectionretryinterval", + }, + "FramerateNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-frameratenumerator", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-filecacheduration", + "GopClosedCadence": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopclosedcadence", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "HttpTransferMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-httptransfermode", - "PrimitiveType": "String", + "GopSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsize", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-numretries", - "PrimitiveType": "Integer", + "GopSizeUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-gopsizeunits", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-restartdelay", - "PrimitiveType": "Integer", + "Level": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-level", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.InputAttachment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html", - "Properties": { - "AutomaticInputFailoverSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-automaticinputfailoversettings", + }, + "LookAheadRateControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-lookaheadratecontrol", + "PrimitiveType": "String", "Required": false, - "Type": "AutomaticInputFailoverSettings", "UpdateType": "Mutable" }, - "InputAttachmentName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputattachmentname", - "PrimitiveType": "String", + "MaxBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-maxbitrate", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputid", - "PrimitiveType": "String", + "MinIInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-miniinterval", + "PrimitiveType": "Integer", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "InputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputsettings", + "ParDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-pardenominator", + "PrimitiveType": "Integer", "Required": false, - "Type": "InputSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.InputChannelLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html", - "Properties": { - "Gain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-gain", + }, + "ParNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-parnumerator", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputChannel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-inputchannel", + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-profile", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "QvbrQualityLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-qvbrqualitylevel", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.InputLocation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html", - "Properties": { - "PasswordParam": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-passwordparam", + }, + "RateControlMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-ratecontrolmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Uri": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-uri", + "ScanType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scantype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-username", + "SceneChangeDetect": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-scenechangedetect", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.InputLossBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html", - "Properties": { - "BlackFrameMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-blackframemsec", + }, + "Slices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-slices", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputLossImageColor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagecolor", + "Tier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-tier", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "InputLossImageSlate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimageslate", + "TimecodeInsertion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-h265settings.html#cfn-medialive-channel-h265settings-timecodeinsertion", + "PrimitiveType": "String", "Required": false, - "Type": "InputLocation", "UpdateType": "Mutable" - }, - "InputLossImageType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagetype", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.Hdr10Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html", + "Properties": { + "MaxCll": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxcll", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RepeatFrameMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-repeatframemsec", + "MaxFall": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hdr10settings.html#cfn-medialive-channel-hdr10settings-maxfall", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.InputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html", + "AWS::MediaLive::Channel.HlsAkamaiSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html", "Properties": { - "AudioSelectors": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-audioselectors", - "ItemType": "AudioSelector", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "CaptionSelectors": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-captionselectors", - "ItemType": "CaptionSelector", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "DeblockFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-deblockfilter", + "HttpTransferMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-httptransfermode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DenoiseFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-denoisefilter", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "FilterStrength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-filterstrength", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-restartdelay", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "InputFilter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-inputfilter", + "Salt": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-salt", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NetworkInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-networkinputsettings", + "Token": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsakamaisettings.html#cfn-medialive-channel-hlsakamaisettings-token", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.HlsBasicPutSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html", + "Properties": { + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "NetworkInputSettings", "UpdateType": "Mutable" }, - "Smpte2038DataPreference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-smpte2038datapreference", - "PrimitiveType": "String", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SourceEndBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-sourceendbehavior", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "VideoSelector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-videoselector", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsbasicputsettings.html#cfn-medialive-channel-hlsbasicputsettings-restartdelay", + "PrimitiveType": "Integer", "Required": false, - "Type": "VideoSelector", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.InputSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html", + "AWS::MediaLive::Channel.HlsCdnSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html", "Properties": { - "Codec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-codec", - "PrimitiveType": "String", + "HlsAkamaiSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsakamaisettings", "Required": false, + "Type": "HlsAkamaiSettings", "UpdateType": "Mutable" }, - "MaximumBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-maximumbitrate", - "PrimitiveType": "String", + "HlsBasicPutSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsbasicputsettings", "Required": false, + "Type": "HlsBasicPutSettings", "UpdateType": "Mutable" }, - "Resolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-resolution", - "PrimitiveType": "String", + "HlsMediaStoreSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlsmediastoresettings", "Required": false, + "Type": "HlsMediaStoreSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.KeyProviderSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html", - "Properties": { - "StaticKeySettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html#cfn-medialive-channel-keyprovidersettings-statickeysettings", + }, + "HlsWebdavSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlscdnsettings.html#cfn-medialive-channel-hlscdnsettings-hlswebdavsettings", "Required": false, - "Type": "StaticKeySettings", + "Type": "HlsWebdavSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.M2tsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html", + "AWS::MediaLive::Channel.HlsGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html", "Properties": { - "AbsentInputAudioBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-absentinputaudiobehavior", - "PrimitiveType": "String", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-admarkers", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "Arib": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-arib", + "BaseUrlContent": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AribCaptionsPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspid", + "BaseUrlContent1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlcontent1", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AribCaptionsPidControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspidcontrol", + "BaseUrlManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AudioBufferModel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiobuffermodel", + "BaseUrlManifest1": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-baseurlmanifest1", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AudioFramesPerPes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audioframesperpes", - "PrimitiveType": "Integer", + "CaptionLanguageMappings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagemappings", + "ItemType": "CaptionLanguageMapping", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "AudioPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiopids", + "CaptionLanguageSetting": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-captionlanguagesetting", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AudioStreamType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiostreamtype", + "ClientCache": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-clientcache", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-bitrate", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "BufferModel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-buffermodel", + "CodecSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-codecspecification", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CcDescriptor": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ccdescriptor", + "ConstantIv": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-constantiv", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DvbNitSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbnitsettings", - "Required": false, - "Type": "DvbNitSettings", - "UpdateType": "Mutable" - }, - "DvbSdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsdtsettings", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-destination", "Required": false, - "Type": "DvbSdtSettings", + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "DvbSubPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsubpids", + "DirectoryStructure": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-directorystructure", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DvbTdtSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbtdtsettings", + "EncryptionType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-encryptiontype", + "PrimitiveType": "String", "Required": false, - "Type": "DvbTdtSettings", "UpdateType": "Mutable" }, - "DvbTeletextPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbteletextpid", - "PrimitiveType": "String", + "HlsCdnSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlscdnsettings", "Required": false, + "Type": "HlsCdnSettings", "UpdateType": "Mutable" }, - "Ebif": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebif", + "HlsId3SegmentTagging": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-hlsid3segmenttagging", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EbpAudioInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpaudiointerval", + "IFrameOnlyPlaylists": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-iframeonlyplaylists", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EbpLookaheadMs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebplookaheadms", + "IndexNSegments": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-indexnsegments", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "EbpPlacement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpplacement", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-inputlossaction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EcmPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ecmpid", + "IvInManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivinmanifest", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EsRateInPes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-esrateinpes", + "IvSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-ivsource", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EtvPlatformPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvplatformpid", - "PrimitiveType": "String", + "KeepSegments": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keepsegments", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "EtvSignalPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvsignalpid", + "KeyFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FragmentTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-fragmenttime", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "Klv": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klv", + "KeyFormatVersions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyformatversions", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KlvDataPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klvdatapids", - "PrimitiveType": "String", + "KeyProviderSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-keyprovidersettings", "Required": false, + "Type": "KeyProviderSettings", "UpdateType": "Mutable" }, - "NielsenId3Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nielsenid3behavior", + "ManifestCompression": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestcompression", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NullPacketBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nullpacketbitrate", - "PrimitiveType": "Double", + "ManifestDurationFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-manifestdurationformat", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PatInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-patinterval", + "MinSegmentLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-minsegmentlength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "PcrControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrcontrol", + "Mode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-mode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PcrPeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrperiod", - "PrimitiveType": "Integer", + "OutputSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-outputselection", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PcrPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrpid", + "ProgramDateTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetime", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PmtInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtinterval", + "ProgramDateTimePeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-programdatetimeperiod", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "PmtPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtpid", + "RedundantManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-redundantmanifest", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramNum": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-programnum", + "SegmentLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentlength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RateMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ratemode", + "SegmentationMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentationmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Scte27Pids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte27pids", - "PrimitiveType": "String", + "SegmentsPerSubdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-segmentspersubdirectory", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Scte35Control": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35control", + "StreamInfResolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-streaminfresolution", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Scte35Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35pid", + "TimedMetadataId3Frame": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3frame", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentationMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationmarkers", - "PrimitiveType": "String", + "TimedMetadataId3Period": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timedmetadataid3period", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentationStyle": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationstyle", - "PrimitiveType": "String", + "TimestampDeltaMilliseconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-timestampdeltamilliseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentationTime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationtime", - "PrimitiveType": "Double", + "TsFileMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-tsfilemode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "TimedMetadataBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatabehavior", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.HlsInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html", + "Properties": { + "Bandwidth": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-bandwidth", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatapid", - "PrimitiveType": "String", + "BufferSegments": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-buffersegments", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "TransportStreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-transportstreamid", + "Retries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retries", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "VideoPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-videopid", - "PrimitiveType": "String", + "RetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsinputsettings.html#cfn-medialive-channel-hlsinputsettings-retryinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.M3u8Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html", + "AWS::MediaLive::Channel.HlsMediaStoreSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html", "Properties": { - "AudioFramesPerPes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audioframesperpes", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-connectionretryinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "AudioPids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audiopids", - "PrimitiveType": "String", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "EcmPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-ecmpid", + "MediaStoreStorageClass": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-mediastorestorageclass", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NielsenId3Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-nielsenid3behavior", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "PatInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-patinterval", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsmediastoresettings.html#cfn-medialive-channel-hlsmediastoresettings-restartdelay", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "PcrControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrcontrol", + } + } + }, + "AWS::MediaLive::Channel.HlsOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html", + "Properties": { + "H265PackagingType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-h265packagingtype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PcrPeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrperiod", - "PrimitiveType": "Integer", + "HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-hlssettings", "Required": false, + "Type": "HlsSettings", "UpdateType": "Mutable" }, - "PcrPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrpid", + "NameModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-namemodifier", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PmtInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtinterval", - "PrimitiveType": "Integer", + "SegmentModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsoutputsettings.html#cfn-medialive-channel-hlsoutputsettings-segmentmodifier", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "PmtPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtpid", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html", + "Properties": { + "AudioOnlyHlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-audioonlyhlssettings", "Required": false, + "Type": "AudioOnlyHlsSettings", "UpdateType": "Mutable" }, - "ProgramNum": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-programnum", - "PrimitiveType": "Integer", + "Fmp4HlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-fmp4hlssettings", "Required": false, + "Type": "Fmp4HlsSettings", "UpdateType": "Mutable" }, - "Scte35Behavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35behavior", - "PrimitiveType": "String", + "StandardHlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlssettings.html#cfn-medialive-channel-hlssettings-standardhlssettings", "Required": false, + "Type": "StandardHlsSettings", "UpdateType": "Mutable" - }, - "Scte35Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35pid", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.HlsWebdavSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html", + "Properties": { + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "TimedMetadataBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatabehavior", - "PrimitiveType": "String", + }, + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-filecacheduration", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatapid", + "HttpTransferMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-httptransfermode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TransportStreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-transportstreamid", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-numretries", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "VideoPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-videopid", - "PrimitiveType": "String", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlswebdavsettings.html#cfn-medialive-channel-hlswebdavsettings-restartdelay", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MediaPackageGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html", + "AWS::MediaLive::Channel.InputAttachment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html", "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html#cfn-medialive-channel-mediapackagegroupsettings-destination", + "AutomaticInputFailoverSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-automaticinputfailoversettings", "Required": false, - "Type": "OutputLocationRef", + "Type": "AutomaticInputFailoverSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.MediaPackageOutputDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html", - "Properties": { - "ChannelId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html#cfn-medialive-channel-mediapackageoutputdestinationsettings-channelid", + }, + "InputAttachmentName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputattachmentname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "InputId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputid", "PrimitiveType": "String", "Required": false, + "UpdateType": "Immutable" + }, + "InputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputattachment.html#cfn-medialive-channel-inputattachment-inputsettings", + "Required": false, + "Type": "InputSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MediaPackageOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Mp2Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html", + "AWS::MediaLive::Channel.InputChannelLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html", "Properties": { - "Bitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-bitrate", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "CodingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-codingmode", - "PrimitiveType": "String", + "Gain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-gain", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SampleRate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-samplerate", - "PrimitiveType": "Double", + "InputChannel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputchannellevel.html#cfn-medialive-channel-inputchannellevel-inputchannel", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MsSmoothGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html", + "AWS::MediaLive::Channel.InputLocation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html", "Properties": { - "AcquisitionPointId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-acquisitionpointid", + "PasswordParam": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-passwordparam", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AudioOnlyTimecodeControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-audioonlytimecodecontrol", + "Uri": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-uri", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CertificateMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-certificatemode", + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlocation.html#cfn-medialive-channel-inputlocation-username", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-connectionretryinterval", + } + } + }, + "AWS::MediaLive::Channel.InputLossBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html", + "Properties": { + "BlackFrameMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-blackframemsec", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-destination", - "Required": false, - "Type": "OutputLocationRef", - "UpdateType": "Mutable" - }, - "EventId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventid", + "InputLossImageColor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagecolor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "EventIdMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventidmode", - "PrimitiveType": "String", + "InputLossImageSlate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimageslate", "Required": false, + "Type": "InputLocation", "UpdateType": "Mutable" }, - "EventStopBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventstopbehavior", + "InputLossImageType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-inputlossimagetype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FilecacheDuration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-filecacheduration", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FragmentLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-fragmentlength", + "RepeatFrameMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossbehavior.html#cfn-medialive-channel-inputlossbehavior-repeatframemsec", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-inputlossaction", - "PrimitiveType": "String", + } + } + }, + "AWS::MediaLive::Channel.InputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html", + "Properties": { + "AudioSelectors": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-audioselectors", + "ItemType": "AudioSelector", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-numretries", - "PrimitiveType": "Integer", + "CaptionSelectors": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-captionselectors", + "ItemType": "CaptionSelector", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-restartdelay", - "PrimitiveType": "Integer", + "DeblockFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-deblockfilter", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentationMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-segmentationmode", + "DenoiseFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-denoisefilter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SendDelayMs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-senddelayms", + "FilterStrength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-filterstrength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SparseTrackType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-sparsetracktype", + "InputFilter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-inputfilter", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamManifestBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-streammanifestbehavior", - "PrimitiveType": "String", + "NetworkInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-networkinputsettings", "Required": false, + "Type": "NetworkInputSettings", "UpdateType": "Mutable" }, - "TimestampOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffset", + "Smpte2038DataPreference": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-smpte2038datapreference", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimestampOffsetMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffsetmode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.MsSmoothOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html", - "Properties": { - "H265PackagingType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-h265packagingtype", + "SourceEndBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-sourceendbehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NameModifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-namemodifier", - "PrimitiveType": "String", + "VideoSelector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html#cfn-medialive-channel-inputsettings-videoselector", "Required": false, + "Type": "VideoSelector", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.MultiplexGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexgroupsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.MultiplexOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html", + "AWS::MediaLive::Channel.InputSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html", "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html#cfn-medialive-channel-multiplexoutputsettings-destination", + "Codec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-codec", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html", - "Properties": { - "MultiplexId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-multiplexid", + }, + "MaximumBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-maximumbitrate", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-programname", + "Resolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputspecification.html#cfn-medialive-channel-inputspecification-resolution", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.NetworkInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html", + "AWS::MediaLive::Channel.KeyProviderSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html", "Properties": { - "HlsInputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-hlsinputsettings", - "Required": false, - "Type": "HlsInputSettings", - "UpdateType": "Mutable" - }, - "ServerValidation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-servervalidation", - "PrimitiveType": "String", + "StaticKeySettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-keyprovidersettings.html#cfn-medialive-channel-keyprovidersettings-statickeysettings", "Required": false, + "Type": "StaticKeySettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.NielsenConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html", + "AWS::MediaLive::Channel.M2tsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html", "Properties": { - "DistributorId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-distributorid", + "AbsentInputAudioBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-absentinputaudiobehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "NielsenPcmToId3Tagging": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-nielsenpcmtoid3tagging", + "Arib": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-arib", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Output": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html", - "Properties": { - "AudioDescriptionNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-audiodescriptionnames", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" }, - "CaptionDescriptionNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-captiondescriptionnames", - "PrimitiveItemType": "String", + "AribCaptionsPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspid", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "OutputName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputname", + "AribCaptionsPidControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-aribcaptionspidcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputsettings", + "AudioBufferModel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiobuffermodel", + "PrimitiveType": "String", "Required": false, - "Type": "OutputSettings", "UpdateType": "Mutable" }, - "VideoDescriptionName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-videodescriptionname", - "PrimitiveType": "String", + "AudioFramesPerPes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audioframesperpes", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.OutputDestination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html", - "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-id", + }, + "AudioPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiopids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MediaPackageSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-mediapackagesettings", - "ItemType": "MediaPackageOutputDestinationSettings", + "AudioStreamType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-audiostreamtype", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "MultiplexSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-multiplexsettings", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-bitrate", + "PrimitiveType": "Integer", "Required": false, - "Type": "MultiplexProgramChannelDestinationSettings", "UpdateType": "Mutable" }, - "Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-settings", - "ItemType": "OutputDestinationSettings", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.OutputDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html", - "Properties": { - "PasswordParam": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-passwordparam", + "BufferModel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-buffermodel", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-streamname", + "CcDescriptor": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ccdescriptor", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-url", - "PrimitiveType": "String", + "DvbNitSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbnitsettings", "Required": false, + "Type": "DvbNitSettings", "UpdateType": "Mutable" }, - "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-username", - "PrimitiveType": "String", + "DvbSdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsdtsettings", "Required": false, + "Type": "DvbSdtSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.OutputGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html", - "Properties": { - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-name", + }, + "DvbSubPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbsubpids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "OutputGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputgroupsettings", + "DvbTdtSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbtdtsettings", "Required": false, - "Type": "OutputGroupSettings", + "Type": "DvbTdtSettings", "UpdateType": "Mutable" }, - "Outputs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputs", - "ItemType": "Output", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.OutputGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html", - "Properties": { - "ArchiveGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-archivegroupsettings", + "DvbTeletextPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-dvbteletextpid", + "PrimitiveType": "String", "Required": false, - "Type": "ArchiveGroupSettings", "UpdateType": "Mutable" }, - "FrameCaptureGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-framecapturegroupsettings", + "Ebif": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebif", + "PrimitiveType": "String", "Required": false, - "Type": "FrameCaptureGroupSettings", "UpdateType": "Mutable" }, - "HlsGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-hlsgroupsettings", + "EbpAudioInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpaudiointerval", + "PrimitiveType": "String", "Required": false, - "Type": "HlsGroupSettings", "UpdateType": "Mutable" }, - "MediaPackageGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mediapackagegroupsettings", + "EbpLookaheadMs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebplookaheadms", + "PrimitiveType": "Integer", "Required": false, - "Type": "MediaPackageGroupSettings", "UpdateType": "Mutable" }, - "MsSmoothGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mssmoothgroupsettings", + "EbpPlacement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ebpplacement", + "PrimitiveType": "String", "Required": false, - "Type": "MsSmoothGroupSettings", "UpdateType": "Mutable" }, - "MultiplexGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-multiplexgroupsettings", + "EcmPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ecmpid", + "PrimitiveType": "String", "Required": false, - "Type": "MultiplexGroupSettings", "UpdateType": "Mutable" }, - "RtmpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-rtmpgroupsettings", + "EsRateInPes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-esrateinpes", + "PrimitiveType": "String", "Required": false, - "Type": "RtmpGroupSettings", "UpdateType": "Mutable" }, - "UdpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-udpgroupsettings", - "Required": false, - "Type": "UdpGroupSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.OutputLocationRef": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html", - "Properties": { - "DestinationRefId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html#cfn-medialive-channel-outputlocationref-destinationrefid", + "EtvPlatformPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvplatformpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.OutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html", - "Properties": { - "ArchiveOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-archiveoutputsettings", - "Required": false, - "Type": "ArchiveOutputSettings", - "UpdateType": "Mutable" }, - "FrameCaptureOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-framecaptureoutputsettings", + "EtvSignalPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-etvsignalpid", + "PrimitiveType": "String", "Required": false, - "Type": "FrameCaptureOutputSettings", "UpdateType": "Mutable" }, - "HlsOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-hlsoutputsettings", + "FragmentTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-fragmenttime", + "PrimitiveType": "Double", "Required": false, - "Type": "HlsOutputSettings", "UpdateType": "Mutable" }, - "MediaPackageOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mediapackageoutputsettings", + "Klv": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klv", + "PrimitiveType": "String", "Required": false, - "Type": "MediaPackageOutputSettings", "UpdateType": "Mutable" }, - "MsSmoothOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mssmoothoutputsettings", + "KlvDataPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-klvdatapids", + "PrimitiveType": "String", "Required": false, - "Type": "MsSmoothOutputSettings", "UpdateType": "Mutable" }, - "MultiplexOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-multiplexoutputsettings", + "NielsenId3Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nielsenid3behavior", + "PrimitiveType": "String", "Required": false, - "Type": "MultiplexOutputSettings", "UpdateType": "Mutable" }, - "RtmpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-rtmpoutputsettings", + "NullPacketBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-nullpacketbitrate", + "PrimitiveType": "Double", "Required": false, - "Type": "RtmpOutputSettings", "UpdateType": "Mutable" }, - "UdpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-udpoutputsettings", - "Required": false, - "Type": "UdpOutputSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.PassThroughSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-passthroughsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Rec601Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec601settings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Rec709Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec709settings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.RemixSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html", - "Properties": { - "ChannelMappings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelmappings", - "ItemType": "AudioChannelMapping", + "PatInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-patinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "ChannelsIn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsin", - "PrimitiveType": "Integer", + "PcrControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrcontrol", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ChannelsOut": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsout", + "PcrPeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrperiod", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.RtmpCaptionInfoDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpcaptioninfodestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.RtmpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html", - "Properties": { - "AuthenticationScheme": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-authenticationscheme", + }, + "PcrPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pcrpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CacheFullBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachefullbehavior", + "PmtInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtinterval", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "PmtPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-pmtpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CacheLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachelength", + "ProgramNum": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-programnum", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "CaptionData": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-captiondata", + "RateMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-ratemode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-inputlossaction", + "Scte27Pids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte27pids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RestartDelay": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-restartdelay", - "PrimitiveType": "Integer", + "Scte35Control": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35control", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.RtmpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html", - "Properties": { - "CertificateMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-certificatemode", + }, + "Scte35Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-scte35pid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ConnectionRetryInterval": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-connectionretryinterval", - "PrimitiveType": "Integer", + "SegmentationMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationmarkers", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-destination", + "SegmentationStyle": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationstyle", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "NumRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-numretries", - "PrimitiveType": "Integer", + "SegmentationTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-segmentationtime", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Scte20PlusEmbeddedDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20plusembeddeddestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Scte20SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html", - "Properties": { - "Convert608To708": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-convert608to708", + }, + "TimedMetadataBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatabehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Source608ChannelNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-source608channelnumber", - "PrimitiveType": "Integer", + "TimedMetadataPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-timedmetadatapid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Scte27DestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27destinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.Scte27SourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html", - "Properties": { - "Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html#cfn-medialive-channel-scte27sourcesettings-pid", + }, + "TransportStreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-transportstreamid", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" + }, + "VideoPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m2tssettings.html#cfn-medialive-channel-m2tssettings-videopid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.Scte35SpliceInsert": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html", + "AWS::MediaLive::Channel.M3u8Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html", "Properties": { - "AdAvailOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-adavailoffset", + "AudioFramesPerPes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audioframesperpes", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "NoRegionalBlackoutFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-noregionalblackoutflag", + "AudioPids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-audiopids", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "WebDeliveryAllowedFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-webdeliveryallowedflag", + "EcmPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-ecmpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Scte35TimeSignalApos": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html", - "Properties": { - "AdAvailOffset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-adavailoffset", + }, + "NielsenId3Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-nielsenid3behavior", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "PatInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-patinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "NoRegionalBlackoutFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-noregionalblackoutflag", + "PcrControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrcontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "WebDeliveryAllowedFlag": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-webdeliveryallowedflag", - "PrimitiveType": "String", + "PcrPeriod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrperiod", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.SmpteTtDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-smptettdestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.StandardHlsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html", - "Properties": { - "AudioRenditionSets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-audiorenditionsets", + }, + "PcrPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pcrpid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "M3u8Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-m3u8settings", + "PmtInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "M3u8Settings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.StaticKeySettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html", - "Properties": { - "KeyProviderServer": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-keyproviderserver", + }, + "PmtPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-pmtpid", + "PrimitiveType": "String", "Required": false, - "Type": "InputLocation", "UpdateType": "Mutable" }, - "StaticKeyValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-statickeyvalue", - "PrimitiveType": "String", + "ProgramNum": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-programnum", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.TeletextDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextdestinationsettings.html", - "Properties": {} - }, - "AWS::MediaLive::Channel.TeletextSourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html", - "Properties": { - "PageNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html#cfn-medialive-channel-teletextsourcesettings-pagenumber", + }, + "Scte35Behavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35behavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html", - "Properties": { - "PostFilterSharpening": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-postfiltersharpening", + }, + "Scte35Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-scte35pid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Strength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-strength", + "TimedMetadataBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatabehavior", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.TimecodeConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html", - "Properties": { - "Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-source", + }, + "TimedMetadataPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-timedmetadatapid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SyncThreshold": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-syncthreshold", + "TransportStreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-transportstreamid", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" + }, + "VideoPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-m3u8settings.html#cfn-medialive-channel-m3u8settings-videopid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.TtmlDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html", + "AWS::MediaLive::Channel.MediaPackageGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html", "Properties": { - "StyleControl": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html#cfn-medialive-channel-ttmldestinationsettings-stylecontrol", - "PrimitiveType": "String", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackagegroupsettings.html#cfn-medialive-channel-mediapackagegroupsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.UdpContainerSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html", + "AWS::MediaLive::Channel.MediaPackageOutputDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html", "Properties": { - "M2tsSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html#cfn-medialive-channel-udpcontainersettings-m2tssettings", + "ChannelId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputdestinationsettings.html#cfn-medialive-channel-mediapackageoutputdestinationsettings-channelid", + "PrimitiveType": "String", "Required": false, - "Type": "M2tsSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.UdpGroupSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html", + "AWS::MediaLive::Channel.MediaPackageOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mediapackageoutputsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Mp2Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html", "Properties": { - "InputLossAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-inputlossaction", - "PrimitiveType": "String", + "Bitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-bitrate", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Frame": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3frame", + "CodingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-codingmode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "TimedMetadataId3Period": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3period", - "PrimitiveType": "Integer", + "SampleRate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mp2settings.html#cfn-medialive-channel-mp2settings-samplerate", + "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.UdpOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html", + "AWS::MediaLive::Channel.MsSmoothGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html", "Properties": { - "BufferMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-buffermsec", - "PrimitiveType": "Integer", + "AcquisitionPointId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-acquisitionpointid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ContainerSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-containersettings", + "AudioOnlyTimecodeControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-audioonlytimecodecontrol", + "PrimitiveType": "String", "Required": false, - "Type": "UdpContainerSettings", "UpdateType": "Mutable" }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-destination", + "CertificateMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-certificatemode", + "PrimitiveType": "String", "Required": false, - "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "FecOutputSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-fecoutputsettings", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-connectionretryinterval", + "PrimitiveType": "Integer", "Required": false, - "Type": "FecOutputSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.VideoCodecSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html", - "Properties": { - "FrameCaptureSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-framecapturesettings", + }, + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-destination", "Required": false, - "Type": "FrameCaptureSettings", + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "H264Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h264settings", + "EventId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventid", + "PrimitiveType": "String", "Required": false, - "Type": "H264Settings", "UpdateType": "Mutable" }, - "H265Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h265settings", + "EventIdMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventidmode", + "PrimitiveType": "String", "Required": false, - "Type": "H265Settings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.VideoDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html", - "Properties": { - "CodecSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-codecsettings", + }, + "EventStopBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-eventstopbehavior", + "PrimitiveType": "String", "Required": false, - "Type": "VideoCodecSettings", "UpdateType": "Mutable" }, - "Height": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-height", + "FilecacheDuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-filecacheduration", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-name", - "PrimitiveType": "String", + "FragmentLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-fragmentlength", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RespondToAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-respondtoafd", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-inputlossaction", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ScalingBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-scalingbehavior", - "PrimitiveType": "String", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-numretries", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Sharpness": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-sharpness", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-restartdelay", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "Width": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-width", - "PrimitiveType": "Integer", + "SegmentationMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-segmentationmode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.VideoSelector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html", - "Properties": { - "ColorSpace": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspace", - "PrimitiveType": "String", + }, + "SendDelayMs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-senddelayms", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ColorSpaceUsage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspaceusage", + "SparseTrackType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-sparsetracktype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-selectorsettings", + "StreamManifestBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-streammanifestbehavior", + "PrimitiveType": "String", "Required": false, - "Type": "VideoSelectorSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.VideoSelectorPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html", - "Properties": { - "Pid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html#cfn-medialive-channel-videoselectorpid-pid", - "PrimitiveType": "Integer", + }, + "TimestampOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffset", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.VideoSelectorProgramId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html", - "Properties": { - "ProgramId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html#cfn-medialive-channel-videoselectorprogramid-programid", - "PrimitiveType": "Integer", + }, + "TimestampOffsetMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html#cfn-medialive-channel-mssmoothgroupsettings-timestampoffsetmode", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.VideoSelectorSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html", + "AWS::MediaLive::Channel.MsSmoothOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html", "Properties": { - "VideoSelectorPid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorpid", + "H265PackagingType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-h265packagingtype", + "PrimitiveType": "String", "Required": false, - "Type": "VideoSelectorPid", "UpdateType": "Mutable" }, - "VideoSelectorProgramId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorprogramid", + "NameModifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothoutputsettings.html#cfn-medialive-channel-mssmoothoutputsettings-namemodifier", + "PrimitiveType": "String", "Required": false, - "Type": "VideoSelectorProgramId", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Channel.WebvttDestinationSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-webvttdestinationsettings.html", + "AWS::MediaLive::Channel.MultiplexGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexgroupsettings.html", "Properties": {} }, - "AWS::MediaLive::Input.InputDestinationRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html", + "AWS::MediaLive::Channel.MultiplexOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html", "Properties": { - "StreamName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html#cfn-medialive-input-inputdestinationrequest-streamname", - "PrimitiveType": "String", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexoutputsettings.html#cfn-medialive-channel-multiplexoutputsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Input.InputDeviceRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html", + "AWS::MediaLive::Channel.MultiplexProgramChannelDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html#cfn-medialive-input-inputdevicerequest-id", + "MultiplexId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-multiplexid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ProgramName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-multiplexprogramchanneldestinationsettings.html#cfn-medialive-channel-multiplexprogramchanneldestinationsettings-programname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Input.InputDeviceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html", + "AWS::MediaLive::Channel.NetworkInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html#cfn-medialive-input-inputdevicesettings-id", + "HlsInputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-hlsinputsettings", + "Required": false, + "Type": "HlsInputSettings", + "UpdateType": "Mutable" + }, + "ServerValidation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-networkinputsettings.html#cfn-medialive-channel-networkinputsettings-servervalidation", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Input.InputSourceRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html", + "AWS::MediaLive::Channel.NielsenConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html", "Properties": { - "PasswordParam": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-passwordparam", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-url", + "DistributorId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-distributorid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-username", + "NielsenPcmToId3Tagging": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-nielsenconfiguration.html#cfn-medialive-channel-nielsenconfiguration-nielsenpcmtoid3tagging", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaLive::Input.InputVpcRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html", + "AWS::MediaLive::Channel.Output": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html", "Properties": { - "SecurityGroupIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-securitygroupids", + "AudioDescriptionNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-audiodescriptionnames", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" }, - "SubnetIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-subnetids", + "CaptionDescriptionNames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-captiondescriptionnames", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Input.MediaConnectFlowRequest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html", - "Properties": { - "FlowArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html#cfn-medialive-input-mediaconnectflowrequest-flowarn", + }, + "OutputName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::InputSecurityGroup.InputWhitelistRuleCidr": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html", - "Properties": { - "Cidr": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html#cfn-medialive-inputsecuritygroup-inputwhitelistrulecidr-cidr", + }, + "OutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-outputsettings", + "Required": false, + "Type": "OutputSettings", + "UpdateType": "Mutable" + }, + "VideoDescriptionName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-output.html#cfn-medialive-channel-output-videodescriptionname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::Asset.EgressEndpoint": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html", + "AWS::MediaLive::Channel.OutputDestination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html", "Properties": { - "PackagingConfigurationId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-packagingconfigurationid", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-id", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-url", - "PrimitiveType": "String", - "Required": true, + "MediaPackageSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-mediapackagesettings", + "ItemType": "MediaPackageOutputDestinationSettings", + "Required": false, + "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::Channel.HlsIngest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html", - "Properties": { - "ingestEndpoints": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html#cfn-mediapackage-channel-hlsingest-ingestendpoints", - "ItemType": "IngestEndpoint", + }, + "MultiplexSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-multiplexsettings", + "Required": false, + "Type": "MultiplexProgramChannelDestinationSettings", + "UpdateType": "Mutable" + }, + "Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestination.html#cfn-medialive-channel-outputdestination-settings", + "ItemType": "OutputDestinationSettings", "Required": false, "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::Channel.IngestEndpoint": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html", + "AWS::MediaLive::Channel.OutputDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html", "Properties": { - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-id", + "PasswordParam": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-passwordparam", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Password": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-password", + "StreamName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-streamname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-url", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-url", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Username": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-username", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputdestinationsettings.html#cfn-medialive-channel-outputdestinationsettings-username", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.Authorization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html", + "AWS::MediaLive::Channel.OutputGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html", "Properties": { - "CdnIdentifierSecret": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-cdnidentifiersecret", + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-name", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "SecretsRoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-secretsrolearn", - "PrimitiveType": "String", - "Required": true, + "OutputGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputgroupsettings", + "Required": false, + "Type": "OutputGroupSettings", + "UpdateType": "Mutable" + }, + "Outputs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroup.html#cfn-medialive-channel-outputgroup-outputs", + "ItemType": "Output", + "Required": false, + "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.CmafEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html", + "AWS::MediaLive::Channel.OutputGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html", "Properties": { - "KeyRotationIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-keyrotationintervalseconds", - "PrimitiveType": "Integer", + "ArchiveGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-archivegroupsettings", "Required": false, + "Type": "ArchiveGroupSettings", "UpdateType": "Mutable" }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-spekekeyprovider", - "Required": true, - "Type": "SpekeKeyProvider", + "FrameCaptureGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-framecapturegroupsettings", + "Required": false, + "Type": "FrameCaptureGroupSettings", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::OriginEndpoint.CmafPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html", - "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-encryption", + }, + "HlsGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-hlsgroupsettings", "Required": false, - "Type": "CmafEncryption", + "Type": "HlsGroupSettings", "UpdateType": "Mutable" }, - "HlsManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-hlsmanifests", - "ItemType": "HlsManifest", + "MediaPackageGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mediapackagegroupsettings", "Required": false, - "Type": "List", + "Type": "MediaPackageGroupSettings", "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentdurationseconds", - "PrimitiveType": "Integer", + "MsSmoothGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-mssmoothgroupsettings", "Required": false, + "Type": "MsSmoothGroupSettings", "UpdateType": "Mutable" }, - "SegmentPrefix": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentprefix", - "PrimitiveType": "String", + "MultiplexGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-multiplexgroupsettings", "Required": false, + "Type": "MultiplexGroupSettings", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-streamselection", + "RtmpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-rtmpgroupsettings", "Required": false, - "Type": "StreamSelection", + "Type": "RtmpGroupSettings", + "UpdateType": "Mutable" + }, + "UdpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputgroupsettings.html#cfn-medialive-channel-outputgroupsettings-udpgroupsettings", + "Required": false, + "Type": "UdpGroupSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.DashEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html", + "AWS::MediaLive::Channel.OutputLocationRef": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html", "Properties": { - "KeyRotationIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-keyrotationintervalseconds", - "PrimitiveType": "Integer", + "DestinationRefId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputlocationref.html#cfn-medialive-channel-outputlocationref-destinationrefid", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-spekekeyprovider", - "Required": true, - "Type": "SpekeKeyProvider", - "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.DashPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html", + "AWS::MediaLive::Channel.OutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html", "Properties": { - "AdTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adtriggers", - "PrimitiveItemType": "String", + "ArchiveOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-archiveoutputsettings", "Required": false, - "Type": "List", + "Type": "ArchiveOutputSettings", "UpdateType": "Mutable" }, - "AdsOnDeliveryRestrictions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adsondeliveryrestrictions", - "PrimitiveType": "String", + "FrameCaptureOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-framecaptureoutputsettings", "Required": false, + "Type": "FrameCaptureOutputSettings", "UpdateType": "Mutable" }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-encryption", + "HlsOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-hlsoutputsettings", "Required": false, - "Type": "DashEncryption", + "Type": "HlsOutputSettings", "UpdateType": "Mutable" }, - "ManifestLayout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestlayout", - "PrimitiveType": "String", + "MediaPackageOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mediapackageoutputsettings", "Required": false, + "Type": "MediaPackageOutputSettings", "UpdateType": "Mutable" }, - "ManifestWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestwindowseconds", - "PrimitiveType": "Integer", + "MsSmoothOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-mssmoothoutputsettings", "Required": false, + "Type": "MsSmoothOutputSettings", "UpdateType": "Mutable" }, - "MinBufferTimeSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minbuffertimeseconds", - "PrimitiveType": "Integer", + "MultiplexOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-multiplexoutputsettings", "Required": false, + "Type": "MultiplexOutputSettings", "UpdateType": "Mutable" }, - "MinUpdatePeriodSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minupdateperiodseconds", - "PrimitiveType": "Integer", + "RtmpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-rtmpoutputsettings", "Required": false, + "Type": "RtmpOutputSettings", "UpdateType": "Mutable" }, - "PeriodTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-periodtriggers", - "PrimitiveItemType": "String", + "UdpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-outputsettings.html#cfn-medialive-channel-outputsettings-udpoutputsettings", + "Required": false, + "Type": "UdpOutputSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.PassThroughSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-passthroughsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Rec601Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec601settings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Rec709Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec709settings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.RemixSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html", + "Properties": { + "ChannelMappings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelmappings", + "ItemType": "AudioChannelMapping", "Required": false, "Type": "List", "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-profile", + "ChannelsIn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsin", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "ChannelsOut": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-remixsettings.html#cfn-medialive-channel-remixsettings-channelsout", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.RtmpCaptionInfoDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpcaptioninfodestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.RtmpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html", + "Properties": { + "AuthenticationScheme": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-authenticationscheme", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmentdurationseconds", + "CacheFullBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachefullbehavior", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "CacheLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-cachelength", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentTemplateFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmenttemplateformat", + "CaptionData": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-captiondata", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-streamselection", + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-inputlossaction", + "PrimitiveType": "String", "Required": false, - "Type": "StreamSelection", "UpdateType": "Mutable" }, - "SuggestedPresentationDelaySeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-suggestedpresentationdelayseconds", + "RestartDelay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-restartdelay", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.HlsEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html", + "AWS::MediaLive::Channel.RtmpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html", "Properties": { - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-constantinitializationvector", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "EncryptionMethod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-encryptionmethod", + "CertificateMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-certificatemode", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "KeyRotationIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-keyrotationintervalseconds", + "ConnectionRetryInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-connectionretryinterval", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "RepeatExtXKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-repeatextxkey", - "PrimitiveType": "Boolean", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-destination", "Required": false, + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-spekekeyprovider", - "Required": true, - "Type": "SpekeKeyProvider", + "NumRetries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpoutputsettings.html#cfn-medialive-channel-rtmpoutputsettings-numretries", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.HlsManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html", + "AWS::MediaLive::Channel.Scte20PlusEmbeddedDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20plusembeddeddestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Scte20SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-admarkers", + "Convert608To708": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-convert608to708", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AdTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adtriggers", - "PrimitiveItemType": "String", + "Source608ChannelNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte20sourcesettings.html#cfn-medialive-channel-scte20sourcesettings-source608channelnumber", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.Scte27DestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27destinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.Scte27SourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html", + "Properties": { + "Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte27sourcesettings.html#cfn-medialive-channel-scte27sourcesettings-pid", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.Scte35SpliceInsert": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html", + "Properties": { + "AdAvailOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-adavailoffset", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "AdsOnDeliveryRestrictions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adsondeliveryrestrictions", + "NoRegionalBlackoutFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-noregionalblackoutflag", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-id", + "WebDeliveryAllowedFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35spliceinsert.html#cfn-medialive-channel-scte35spliceinsert-webdeliveryallowedflag", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - }, - "IncludeIframeOnlyStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-includeiframeonlystream", - "PrimitiveType": "Boolean", + } + } + }, + "AWS::MediaLive::Channel.Scte35TimeSignalApos": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html", + "Properties": { + "AdAvailOffset": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-adavailoffset", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-manifestname", + "NoRegionalBlackoutFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-noregionalblackoutflag", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PlaylistType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlisttype", + "WebDeliveryAllowedFlag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-scte35timesignalapos.html#cfn-medialive-channel-scte35timesignalapos-webdeliveryallowedflag", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.SmpteTtDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-smptettdestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.StandardHlsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html", + "Properties": { + "AudioRenditionSets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-audiorenditionsets", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PlaylistWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlistwindowseconds", - "PrimitiveType": "Integer", + "M3u8Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-standardhlssettings.html#cfn-medialive-channel-standardhlssettings-m3u8settings", "Required": false, + "Type": "M3u8Settings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.StaticKeySettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html", + "Properties": { + "KeyProviderServer": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-keyproviderserver", + "Required": false, + "Type": "InputLocation", "UpdateType": "Mutable" }, - "ProgramDateTimeIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-programdatetimeintervalseconds", - "PrimitiveType": "Integer", + "StaticKeyValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-statickeysettings.html#cfn-medialive-channel-statickeysettings-statickeyvalue", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.TeletextDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextdestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Channel.TeletextSourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html", + "Properties": { + "PageNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-teletextsourcesettings.html#cfn-medialive-channel-teletextsourcesettings-pagenumber", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html", + "Properties": { + "PostFilterSharpening": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-postfiltersharpening", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-url", + "Strength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-temporalfiltersettings.html#cfn-medialive-channel-temporalfiltersettings-strength", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.HlsPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html", + "AWS::MediaLive::Channel.TimecodeConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-admarkers", + "Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-source", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AdTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adtriggers", - "PrimitiveItemType": "String", + "SyncThreshold": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-timecodeconfig.html#cfn-medialive-channel-timecodeconfig-syncthreshold", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" - }, - "AdsOnDeliveryRestrictions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adsondeliveryrestrictions", + } + } + }, + "AWS::MediaLive::Channel.TtmlDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html", + "Properties": { + "StyleControl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ttmldestinationsettings.html#cfn-medialive-channel-ttmldestinationsettings-stylecontrol", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-encryption", + } + } + }, + "AWS::MediaLive::Channel.UdpContainerSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html", + "Properties": { + "M2tsSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpcontainersettings.html#cfn-medialive-channel-udpcontainersettings-m2tssettings", "Required": false, - "Type": "HlsEncryption", + "Type": "M2tsSettings", "UpdateType": "Mutable" - }, - "IncludeIframeOnlyStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-includeiframeonlystream", - "PrimitiveType": "Boolean", + } + } + }, + "AWS::MediaLive::Channel.UdpGroupSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html", + "Properties": { + "InputLossAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-inputlossaction", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PlaylistType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlisttype", + "TimedMetadataId3Frame": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3frame", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "PlaylistWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlistwindowseconds", + "TimedMetadataId3Period": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpgroupsettings.html#cfn-medialive-channel-udpgroupsettings-timedmetadataid3period", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - }, - "ProgramDateTimeIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-programdatetimeintervalseconds", + } + } + }, + "AWS::MediaLive::Channel.UdpOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html", + "Properties": { + "BufferMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-buffermsec", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-segmentdurationseconds", - "PrimitiveType": "Integer", + "ContainerSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-containersettings", "Required": false, + "Type": "UdpContainerSettings", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-streamselection", + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-destination", "Required": false, - "Type": "StreamSelection", + "Type": "OutputLocationRef", "UpdateType": "Mutable" }, - "UseAudioRenditionGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-useaudiorenditiongroup", - "PrimitiveType": "Boolean", + "FecOutputSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-udpoutputsettings.html#cfn-medialive-channel-udpoutputsettings-fecoutputsettings", "Required": false, + "Type": "FecOutputSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.MssEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html", - "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html#cfn-mediapackage-originendpoint-mssencryption-spekekeyprovider", - "Required": true, - "Type": "SpekeKeyProvider", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::OriginEndpoint.MssPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html", + "AWS::MediaLive::Channel.VideoCodecSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html", "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-encryption", - "Required": false, - "Type": "MssEncryption", - "UpdateType": "Mutable" - }, - "ManifestWindowSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-manifestwindowseconds", - "PrimitiveType": "Integer", + "FrameCaptureSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-framecapturesettings", "Required": false, + "Type": "FrameCaptureSettings", "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-segmentdurationseconds", - "PrimitiveType": "Integer", + "H264Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h264settings", "Required": false, + "Type": "H264Settings", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-streamselection", + "H265Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-h265settings", "Required": false, - "Type": "StreamSelection", + "Type": "H265Settings", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html", + "AWS::MediaLive::Channel.VideoDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html", "Properties": { - "CertificateArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-certificatearn", + "CodecSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-codecsettings", + "Required": false, + "Type": "VideoCodecSettings", + "UpdateType": "Mutable" + }, + "Height": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-height", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-name", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ResourceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-resourceid", + "RespondToAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-respondtoafd", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-rolearn", + "ScalingBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-scalingbehavior", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "SystemIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-systemids", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", + "Sharpness": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-sharpness", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-url", - "PrimitiveType": "String", - "Required": true, + "Width": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videodescription.html#cfn-medialive-channel-videodescription-width", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::OriginEndpoint.StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html", + "AWS::MediaLive::Channel.VideoSelector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html", "Properties": { - "MaxVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-maxvideobitspersecond", - "PrimitiveType": "Integer", + "ColorSpace": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspace", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "MinVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-minvideobitspersecond", - "PrimitiveType": "Integer", + "ColorSpaceUsage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-colorspaceusage", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamOrder": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-streamorder", - "PrimitiveType": "String", + "SelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselector.html#cfn-medialive-channel-videoselector-selectorsettings", "Required": false, + "Type": "VideoSelectorSettings", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.CmafEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html", + "AWS::MediaLive::Channel.VideoSelectorPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html", "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html#cfn-mediapackage-packagingconfiguration-cmafencryption-spekekeyprovider", - "Required": true, + "Pid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorpid.html#cfn-medialive-channel-videoselectorpid-pid", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.CmafPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html", + "AWS::MediaLive::Channel.VideoSelectorProgramId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html", "Properties": { - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-encryption", + "ProgramId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorprogramid.html#cfn-medialive-channel-videoselectorprogramid-programid", + "PrimitiveType": "Integer", "Required": false, - "Type": "CmafEncryption", "UpdateType": "Mutable" - }, - "HlsManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-hlsmanifests", - "ItemType": "HlsManifest", - "Required": true, - "Type": "List", + } + } + }, + "AWS::MediaLive::Channel.VideoSelectorSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html", + "Properties": { + "VideoSelectorPid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorpid", + "Required": false, + "Type": "VideoSelectorPid", "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-segmentdurationseconds", - "PrimitiveType": "Integer", + "VideoSelectorProgramId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoselectorsettings.html#cfn-medialive-channel-videoselectorsettings-videoselectorprogramid", "Required": false, + "Type": "VideoSelectorProgramId", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.DashEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html", + "AWS::MediaLive::Channel.WebvttDestinationSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-webvttdestinationsettings.html", + "Properties": {} + }, + "AWS::MediaLive::Input.InputDestinationRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html", "Properties": { - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html#cfn-mediapackage-packagingconfiguration-dashencryption-spekekeyprovider", - "Required": true, + "StreamName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdestinationrequest.html#cfn-medialive-input-inputdestinationrequest-streamname", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.DashManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html", + "AWS::MediaLive::Input.InputDeviceRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html", "Properties": { - "ManifestLayout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestlayout", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicerequest.html#cfn-medialive-input-inputdevicerequest-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestname", + } + } + }, + "AWS::MediaLive::Input.InputDeviceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html", + "Properties": { + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputdevicesettings.html#cfn-medialive-input-inputdevicesettings-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "MinBufferTimeSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-minbuffertimeseconds", - "PrimitiveType": "Integer", + } + } + }, + "AWS::MediaLive::Input.InputSourceRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html", + "Properties": { + "PasswordParam": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-passwordparam", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Profile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-profile", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-url", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-streamselection", + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputsourcerequest.html#cfn-medialive-input-inputsourcerequest-username", + "PrimitiveType": "String", "Required": false, - "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.DashPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html", + "AWS::MediaLive::Input.InputVpcRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html", "Properties": { - "DashManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-dashmanifests", - "ItemType": "DashManifest", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-encryption", - "Required": false, - "Type": "DashEncryption", - "UpdateType": "Mutable" - }, - "PeriodTriggers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-periodtriggers", + "SecurityGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-securitygroupids", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmentdurationseconds", - "PrimitiveType": "Integer", + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-inputvpcrequest.html#cfn-medialive-input-inputvpcrequest-subnetids", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" - }, - "SegmentTemplateFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmenttemplateformat", + } + } + }, + "AWS::MediaLive::Input.MediaConnectFlowRequest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html", + "Properties": { + "FlowArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-input-mediaconnectflowrequest.html#cfn-medialive-input-mediaconnectflowrequest-flowarn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.HlsEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html", + "AWS::MediaLive::InputSecurityGroup.InputWhitelistRuleCidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html", "Properties": { - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-constantinitializationvector", + "Cidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-inputsecuritygroup-inputwhitelistrulecidr.html#cfn-medialive-inputsecuritygroup-inputwhitelistrulecidr-cidr", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - }, - "EncryptionMethod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-encryptionmethod", + } + } + }, + "AWS::MediaPackage::Asset.EgressEndpoint": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html", + "Properties": { + "PackagingConfigurationId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-packagingconfigurationid", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, - "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-spekekeyprovider", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-asset-egressendpoint.html#cfn-mediapackage-asset-egressendpoint-url", + "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.HlsManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html", + "AWS::MediaPackage::Channel.HlsIngest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-admarkers", + "ingestEndpoints": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-hlsingest.html#cfn-mediapackage-channel-hlsingest-ingestendpoints", + "ItemType": "IngestEndpoint", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaPackage::Channel.IngestEndpoint": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html", + "Properties": { + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "IncludeIframeOnlyStream": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-includeiframeonlystream", - "PrimitiveType": "Boolean", + "Password": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-password", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-manifestname", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-url", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ProgramDateTimeIntervalSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-programdatetimeintervalseconds", - "PrimitiveType": "Integer", + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-channel-ingestendpoint.html#cfn-mediapackage-channel-ingestendpoint-username", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" + } + } + }, + "AWS::MediaPackage::OriginEndpoint.Authorization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html", + "Properties": { + "CdnIdentifierSecret": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-cdnidentifiersecret", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" }, - "RepeatExtXKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-repeatextxkey", - "PrimitiveType": "Boolean", + "SecretsRoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-authorization.html#cfn-mediapackage-originendpoint-authorization-secretsrolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaPackage::OriginEndpoint.CmafEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html", + "Properties": { + "KeyRotationIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-keyrotationintervalseconds", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-streamselection", - "Required": false, - "Type": "StreamSelection", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafencryption.html#cfn-mediapackage-originendpoint-cmafencryption-spekekeyprovider", + "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.HlsPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html", + "AWS::MediaPackage::OriginEndpoint.CmafPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html", "Properties": { "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-encryption", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-encryption", "Required": false, - "Type": "HlsEncryption", + "Type": "CmafEncryption", "UpdateType": "Mutable" }, "HlsManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-hlsmanifests", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-hlsmanifests", "ItemType": "HlsManifest", - "Required": true, + "Required": false, "Type": "List", "UpdateType": "Mutable" }, "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-segmentdurationseconds", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentdurationseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "UseAudioRenditionGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-useaudiorenditiongroup", - "PrimitiveType": "Boolean", + "SegmentPrefix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-segmentprefix", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" + }, + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-cmafpackage.html#cfn-mediapackage-originendpoint-cmafpackage-streamselection", + "Required": false, + "Type": "StreamSelection", + "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.MssEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html", + "AWS::MediaPackage::OriginEndpoint.DashEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html", "Properties": { + "KeyRotationIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-keyrotationintervalseconds", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, "SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html#cfn-mediapackage-packagingconfiguration-mssencryption-spekekeyprovider", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashencryption.html#cfn-mediapackage-originendpoint-dashencryption-spekekeyprovider", "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaPackage::PackagingConfiguration.MssManifest": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html", + "AWS::MediaPackage::OriginEndpoint.DashPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html", "Properties": { - "ManifestName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-manifestname", - "PrimitiveType": "String", + "AdTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adtriggers", + "PrimitiveItemType": "String", "Required": false, + "Type": "List", "UpdateType": "Mutable" }, - "StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-streamselection", + "AdsOnDeliveryRestrictions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-adsondeliveryrestrictions", + "PrimitiveType": "String", "Required": false, - "Type": "StreamSelection", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::PackagingConfiguration.MssPackage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html", - "Properties": { + }, "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-encryption", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-encryption", + "Required": false, + "Type": "DashEncryption", + "UpdateType": "Mutable" + }, + "ManifestLayout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestlayout", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ManifestWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-manifestwindowseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "MssEncryption", "UpdateType": "Mutable" }, - "MssManifests": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-mssmanifests", - "ItemType": "MssManifest", - "Required": true, - "Type": "List", + "MinBufferTimeSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minbuffertimeseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" }, - "SegmentDurationSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-segmentdurationseconds", + "MinUpdatePeriodSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-minupdateperiodseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::PackagingConfiguration.SpekeKeyProvider": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html", - "Properties": { - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" }, - "SystemIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-systemids", + "PeriodTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-periodtriggers", "PrimitiveItemType": "String", - "Required": true, + "Required": false, "Type": "List", "UpdateType": "Mutable" }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-url", + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-profile", "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::PackagingConfiguration.StreamSelection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html", - "Properties": { - "MaxVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-maxvideobitspersecond", - "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "MinVideoBitsPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-minvideobitspersecond", + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmentdurationseconds", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "StreamOrder": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-streamorder", + "SegmentTemplateFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-segmenttemplateformat", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::MediaPackage::PackagingGroup.Authorization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html", - "Properties": { - "CdnIdentifierSecret": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-cdnidentifiersecret", - "PrimitiveType": "String", - "Required": true, + }, + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-streamselection", + "Required": false, + "Type": "StreamSelection", "UpdateType": "Mutable" }, - "SecretsRoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-secretsrolearn", - "PrimitiveType": "String", - "Required": true, + "SuggestedPresentationDelaySeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-dashpackage.html#cfn-mediapackage-originendpoint-dashpackage-suggestedpresentationdelayseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::MediaStore::Container.CorsRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html", + "AWS::MediaPackage::OriginEndpoint.HlsEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html", "Properties": { - "AllowedHeaders": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders", - "PrimitiveItemType": "String", + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-constantinitializationvector", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "AllowedMethods": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods", - "PrimitiveItemType": "String", + "EncryptionMethod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-encryptionmethod", + "PrimitiveType": "String", "Required": false, - "Type": "List", - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, - "AllowedOrigins": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins", - "PrimitiveItemType": "String", + "KeyRotationIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-keyrotationintervalseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "ExposeHeaders": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders", - "PrimitiveItemType": "String", + "RepeatExtXKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-repeatextxkey", + "PrimitiveType": "Boolean", "Required": false, - "Type": "List", "UpdateType": "Mutable" }, - "MaxAgeSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds", - "PrimitiveType": "Integer", - "Required": false, + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsencryption.html#cfn-mediapackage-originendpoint-hlsencryption-spekekeyprovider", + "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::MediaStore::Container.MetricPolicy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html", + "AWS::MediaPackage::OriginEndpoint.HlsManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html", "Properties": { - "ContainerLevelMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-containerlevelmetrics", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-admarkers", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "MetricPolicyRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-metricpolicyrules", - "ItemType": "MetricPolicyRule", + "AdTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adtriggers", + "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::MediaStore::Container.MetricPolicyRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html", - "Properties": { - "ObjectGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroup", + }, + "AdsOnDeliveryRestrictions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-adsondeliveryrestrictions", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "ObjectGroupName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroupname", + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-id", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" - } - } - }, - "AWS::Neptune::DBCluster.DBClusterRole": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html", - "Properties": { - "FeatureName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-featurename", - "PrimitiveType": "String", + }, + "IncludeIframeOnlyStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-includeiframeonlystream", + "PrimitiveType": "Boolean", "Required": false, "UpdateType": "Mutable" }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-rolearn", + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-manifestname", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::Firewall.SubnetMapping": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-subnetmapping.html", - "Properties": { - "SubnetId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-subnetmapping.html#cfn-networkfirewall-firewall-subnetmapping-subnetid", + }, + "PlaylistType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlisttype", "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::Firewall.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewall-tags.html#cfn-networkfirewall-firewall-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.ActionDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-actiondefinition.html", - "Properties": { - "PublishMetricAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-actiondefinition.html#cfn-networkfirewall-firewallpolicy-actiondefinition-publishmetricaction", + }, + "PlaylistWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-playlistwindowseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "PublishMetricAction", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.CustomAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html", - "Properties": { - "ActionDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html#cfn-networkfirewall-firewallpolicy-customaction-actiondefinition", - "Required": true, - "Type": "ActionDefinition", + }, + "ProgramDateTimeIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-programdatetimeintervalseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" }, - "ActionName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customaction.html#cfn-networkfirewall-firewallpolicy-customaction-actionname", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlsmanifest.html#cfn-mediapackage-originendpoint-hlsmanifest-url", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::FirewallPolicy.CustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customactions.html", + "AWS::MediaPackage::OriginEndpoint.HlsPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html", "Properties": { - "CustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-customactions.html#cfn-networkfirewall-firewallpolicy-customactions-customactions", - "DuplicatesAllowed": false, - "ItemType": "CustomAction", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-admarkers", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "AdTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adtriggers", + "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.Dimension": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimension.html", - "Properties": { - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimension.html#cfn-networkfirewall-firewallpolicy-dimension-value", + }, + "AdsOnDeliveryRestrictions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-adsondeliveryrestrictions", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.Dimensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimensions.html", - "Properties": { - "Dimensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-dimensions.html#cfn-networkfirewall-firewallpolicy-dimensions-dimensions", - "DuplicatesAllowed": false, - "ItemType": "Dimension", + }, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-encryption", "Required": false, - "Type": "List", + "Type": "HlsEncryption", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.FirewallPolicy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html", - "Properties": { - "StatefulRuleGroupReferences": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statefulrulegroupreferences", + }, + "IncludeIframeOnlyStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-includeiframeonlystream", + "PrimitiveType": "Boolean", "Required": false, - "Type": "StatefulRuleGroupReferences", "UpdateType": "Mutable" }, - "StatelessCustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelesscustomactions", + "PlaylistType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlisttype", + "PrimitiveType": "String", "Required": false, - "Type": "CustomActions", "UpdateType": "Mutable" }, - "StatelessDefaultActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelessdefaultactions", - "Required": true, - "Type": "StatelessActions", + "PlaylistWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-playlistwindowseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" }, - "StatelessFragmentDefaultActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelessfragmentdefaultactions", - "Required": true, - "Type": "StatelessActions", + "ProgramDateTimeIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-programdatetimeintervalseconds", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-segmentdurationseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" }, - "StatelessRuleGroupReferences": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy-statelessrulegroupreferences", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-streamselection", "Required": false, - "Type": "StatelessRuleGroupReferences", + "Type": "StreamSelection", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.PublishMetricAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-publishmetricaction.html", - "Properties": { - "Dimensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-publishmetricaction.html#cfn-networkfirewall-firewallpolicy-publishmetricaction-dimensions", - "Required": true, - "Type": "Dimensions", + }, + "UseAudioRenditionGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-hlspackage.html#cfn-mediapackage-originendpoint-hlspackage-useaudiorenditiongroup", + "PrimitiveType": "Boolean", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::FirewallPolicy.StatefulRuleGroupReference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreference.html", + "AWS::MediaPackage::OriginEndpoint.MssEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html", "Properties": { - "ResourceArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreference.html#cfn-networkfirewall-firewallpolicy-statefulrulegroupreference-resourcearn", - "PrimitiveType": "String", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-mssencryption.html#cfn-mediapackage-originendpoint-mssencryption-spekekeyprovider", "Required": true, + "Type": "SpekeKeyProvider", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::FirewallPolicy.StatefulRuleGroupReferences": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreferences.html", + "AWS::MediaPackage::OriginEndpoint.MssPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html", "Properties": { - "StatefulRuleGroupReferences": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statefulrulegroupreferences.html#cfn-networkfirewall-firewallpolicy-statefulrulegroupreferences-statefulrulegroupreferences", - "DuplicatesAllowed": false, - "ItemType": "StatefulRuleGroupReference", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-encryption", "Required": false, - "Type": "List", + "Type": "MssEncryption", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.StatelessActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessactions.html", - "Properties": { - "StatelessActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessactions.html#cfn-networkfirewall-firewallpolicy-statelessactions-statelessactions", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", + }, + "ManifestWindowSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-manifestwindowseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.StatelessRuleGroupReference": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html", - "Properties": { - "Priority": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html#cfn-networkfirewall-firewallpolicy-statelessrulegroupreference-priority", + }, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-segmentdurationseconds", "PrimitiveType": "Integer", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "ResourceArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreference.html#cfn-networkfirewall-firewallpolicy-statelessrulegroupreference-resourcearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy.StatelessRuleGroupReferences": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreferences.html", - "Properties": { - "StatelessRuleGroupReferences": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-statelessrulegroupreferences.html#cfn-networkfirewall-firewallpolicy-statelessrulegroupreferences-statelessrulegroupreferences", - "DuplicatesAllowed": false, - "ItemType": "StatelessRuleGroupReference", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-msspackage.html#cfn-mediapackage-originendpoint-msspackage-streamselection", "Required": false, - "Type": "List", + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::FirewallPolicy.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-tags.html", + "AWS::MediaPackage::OriginEndpoint.SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html", "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-firewallpolicy-tags.html#cfn-networkfirewall-firewallpolicy-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", + "CertificateArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-certificatearn", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::LoggingConfiguration.LogDestinationConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html", - "Properties": { - "LogDestination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfig-logdestination", - "PrimitiveItemType": "String", + }, + "ResourceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-resourceid", + "PrimitiveType": "String", "Required": true, - "Type": "Map", "UpdateType": "Mutable" }, - "LogDestinationType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfig-logdestinationtype", + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-rolearn", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "LogType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfig.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfig-logtype", + "SystemIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-systemids", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-spekekeyprovider.html#cfn-mediapackage-originendpoint-spekekeyprovider-url", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::LoggingConfiguration.LogDestinationConfigs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfigs.html", + "AWS::MediaPackage::OriginEndpoint.StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html", "Properties": { - "LogDestinationConfigs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-logdestinationconfigs.html#cfn-networkfirewall-loggingconfiguration-logdestinationconfigs-logdestinationconfigs", - "ItemType": "LogDestinationConfig", + "MaxVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-maxvideobitspersecond", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MinVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-minvideobitspersecond", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "StreamOrder": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-originendpoint-streamselection.html#cfn-mediapackage-originendpoint-streamselection-streamorder", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::LoggingConfiguration.LoggingConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-loggingconfiguration.html", + "AWS::MediaPackage::PackagingConfiguration.CmafEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html", "Properties": { - "LogDestinationConfigs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-loggingconfiguration-loggingconfiguration.html#cfn-networkfirewall-loggingconfiguration-loggingconfiguration-logdestinationconfigs", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafencryption.html#cfn-mediapackage-packagingconfiguration-cmafencryption-spekekeyprovider", "Required": true, - "Type": "LogDestinationConfigs", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.ActionDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-actiondefinition.html", + "AWS::MediaPackage::PackagingConfiguration.CmafPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html", "Properties": { - "PublishMetricAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-actiondefinition.html#cfn-networkfirewall-rulegroup-actiondefinition-publishmetricaction", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-encryption", + "Required": false, + "Type": "CmafEncryption", + "UpdateType": "Mutable" + }, + "HlsManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-hlsmanifests", + "ItemType": "HlsManifest", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-cmafpackage.html#cfn-mediapackage-packagingconfiguration-cmafpackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "PublishMetricAction", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.Address": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-address.html", + "AWS::MediaPackage::PackagingConfiguration.DashEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html", "Properties": { - "AddressDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-address.html#cfn-networkfirewall-rulegroup-address-addressdefinition", - "PrimitiveType": "String", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashencryption.html#cfn-mediapackage-packagingconfiguration-dashencryption-spekekeyprovider", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.Addresses": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-addresses.html", + "AWS::MediaPackage::PackagingConfiguration.DashManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html", "Properties": { - "Addresses": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-addresses.html#cfn-networkfirewall-rulegroup-addresses-addresses", - "DuplicatesAllowed": false, - "ItemType": "Address", + "ManifestLayout": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestlayout", + "PrimitiveType": "String", "Required": false, - "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.CustomAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html", - "Properties": { - "ActionDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html#cfn-networkfirewall-rulegroup-customaction-actiondefinition", - "Required": true, - "Type": "ActionDefinition", + }, + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-manifestname", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "ActionName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customaction.html#cfn-networkfirewall-rulegroup-customaction-actionname", + "MinBufferTimeSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-minbuffertimeseconds", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Profile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-profile", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.CustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customactions.html", - "Properties": { - "CustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-customactions.html#cfn-networkfirewall-rulegroup-customactions-customactions", - "DuplicatesAllowed": false, - "ItemType": "CustomAction", + }, + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashmanifest.html#cfn-mediapackage-packagingconfiguration-dashmanifest-streamselection", "Required": false, - "Type": "List", + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.Dimension": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimension.html", + "AWS::MediaPackage::PackagingConfiguration.DashPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html", "Properties": { - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimension.html#cfn-networkfirewall-rulegroup-dimension-value", - "PrimitiveType": "String", + "DashManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-dashmanifests", + "ItemType": "DashManifest", "Required": true, + "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.Dimensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimensions.html", - "Properties": { - "Dimensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-dimensions.html#cfn-networkfirewall-rulegroup-dimensions-dimensions", - "DuplicatesAllowed": false, - "ItemType": "Dimension", + }, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-encryption", "Required": false, - "Type": "List", + "Type": "DashEncryption", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.Flags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-flags.html", - "Properties": { - "Flags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-flags.html#cfn-networkfirewall-rulegroup-flags-flags", - "DuplicatesAllowed": false, + }, + "PeriodTriggers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-periodtriggers", "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.Header": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html", - "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-destination", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" }, - "DestinationPort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-destinationport", - "PrimitiveType": "String", - "Required": true, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmentdurationseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" }, - "Direction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-direction", + "SegmentTemplateFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-dashpackage.html#cfn-mediapackage-packagingconfiguration-dashpackage-segmenttemplateformat", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" - }, - "Protocol": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-protocol", + } + } + }, + "AWS::MediaPackage::PackagingConfiguration.HlsEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html", + "Properties": { + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-constantinitializationvector", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-source", + "EncryptionMethod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-encryptionmethod", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, - "SourcePort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-header.html#cfn-networkfirewall-rulegroup-header-sourceport", - "PrimitiveType": "String", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsencryption.html#cfn-mediapackage-packagingconfiguration-hlsencryption-spekekeyprovider", "Required": true, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.IPSet": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ipset.html", - "Properties": { - "Definition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ipset.html#cfn-networkfirewall-rulegroup-ipset-definition", - "Required": false, - "Type": "VariableDefinitionList", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.MatchAttributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html", + "AWS::MediaPackage::PackagingConfiguration.HlsManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html", "Properties": { - "DestinationPorts": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-destinationports", + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-admarkers", + "PrimitiveType": "String", "Required": false, - "Type": "PortRanges", "UpdateType": "Mutable" }, - "Destinations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-destinations", + "IncludeIframeOnlyStream": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-includeiframeonlystream", + "PrimitiveType": "Boolean", "Required": false, - "Type": "Addresses", "UpdateType": "Mutable" }, - "Protocols": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-protocols", + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-manifestname", + "PrimitiveType": "String", "Required": false, - "Type": "ProtocolNumbers", "UpdateType": "Mutable" }, - "SourcePorts": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-sourceports", + "ProgramDateTimeIntervalSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-programdatetimeintervalseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "PortRanges", "UpdateType": "Mutable" }, - "Sources": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-sources", + "RepeatExtXKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-repeatextxkey", + "PrimitiveType": "Boolean", "Required": false, - "Type": "Addresses", "UpdateType": "Mutable" }, - "TCPFlags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-matchattributes.html#cfn-networkfirewall-rulegroup-matchattributes-tcpflags", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlsmanifest.html#cfn-mediapackage-packagingconfiguration-hlsmanifest-streamselection", "Required": false, - "Type": "TCPFlags", + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.PortRange": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html", + "AWS::MediaPackage::PackagingConfiguration.HlsPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html", "Properties": { - "FromPort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html#cfn-networkfirewall-rulegroup-portrange-fromport", - "PrimitiveType": "Integer", - "Required": true, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-encryption", + "Required": false, + "Type": "HlsEncryption", "UpdateType": "Mutable" }, - "ToPort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portrange.html#cfn-networkfirewall-rulegroup-portrange-toport", - "PrimitiveType": "Integer", + "HlsManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-hlsmanifests", + "ItemType": "HlsManifest", "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.PortRanges": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portranges.html", - "Properties": { - "PortRanges": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portranges.html#cfn-networkfirewall-rulegroup-portranges-portranges", - "DuplicatesAllowed": false, - "ItemType": "PortRange", - "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.PortSet": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portset.html", - "Properties": { - "Definition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-portset.html#cfn-networkfirewall-rulegroup-portset-definition", + }, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-segmentdurationseconds", + "PrimitiveType": "Integer", "Required": false, - "Type": "VariableDefinitionList", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.ProtocolNumbers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-protocolnumbers.html", - "Properties": { - "ProtocolNumbers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-protocolnumbers.html#cfn-networkfirewall-rulegroup-protocolnumbers-protocolnumbers", - "DuplicatesAllowed": false, - "PrimitiveItemType": "Integer", + }, + "UseAudioRenditionGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-hlspackage.html#cfn-mediapackage-packagingconfiguration-hlspackage-useaudiorenditiongroup", + "PrimitiveType": "Boolean", "Required": false, - "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.PublishMetricAction": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-publishmetricaction.html", + "AWS::MediaPackage::PackagingConfiguration.MssEncryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html", "Properties": { - "Dimensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-publishmetricaction.html#cfn-networkfirewall-rulegroup-publishmetricaction-dimensions", + "SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssencryption.html#cfn-mediapackage-packagingconfiguration-mssencryption-spekekeyprovider", "Required": true, - "Type": "Dimensions", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.RuleDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html", + "AWS::MediaPackage::PackagingConfiguration.MssManifest": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html", "Properties": { - "Actions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html#cfn-networkfirewall-rulegroup-ruledefinition-actions", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", + "ManifestName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-manifestname", + "PrimitiveType": "String", + "Required": false, "UpdateType": "Mutable" }, - "MatchAttributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruledefinition.html#cfn-networkfirewall-rulegroup-ruledefinition-matchattributes", - "Required": true, - "Type": "MatchAttributes", + "StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-mssmanifest.html#cfn-mediapackage-packagingconfiguration-mssmanifest-streamselection", + "Required": false, + "Type": "StreamSelection", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.RuleGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulegroup.html", + "AWS::MediaPackage::PackagingConfiguration.MssPackage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html", "Properties": { - "RuleVariables": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroup-rulevariables", + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-encryption", "Required": false, - "Type": "RuleVariables", + "Type": "MssEncryption", "UpdateType": "Mutable" }, - "RulesSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroup-rulessource", + "MssManifests": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-mssmanifests", + "ItemType": "MssManifest", "Required": true, - "Type": "RulesSource", + "Type": "List", + "UpdateType": "Mutable" + }, + "SegmentDurationSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-msspackage.html#cfn-mediapackage-packagingconfiguration-msspackage-segmentdurationseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.RuleOption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html", + "AWS::MediaPackage::PackagingConfiguration.SpekeKeyProvider": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html", "Properties": { - "Keyword": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html#cfn-networkfirewall-rulegroup-ruleoption-keyword", + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-rolearn", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoption.html#cfn-networkfirewall-rulegroup-ruleoption-settings", - "DuplicatesAllowed": false, + "SystemIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-systemids", "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.RuleOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoptions.html", - "Properties": { - "RuleOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-ruleoptions.html#cfn-networkfirewall-rulegroup-ruleoptions-ruleoptions", - "DuplicatesAllowed": false, - "ItemType": "RuleOption", - "Required": false, + "Required": true, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.RuleVariables": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html", - "Properties": { - "IPSets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html#cfn-networkfirewall-rulegroup-rulevariables-ipsets", - "ItemType": "IPSet", - "Required": false, - "Type": "Map", - "UpdateType": "Mutable" }, - "PortSets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulevariables.html#cfn-networkfirewall-rulegroup-rulevariables-portsets", - "ItemType": "PortSet", - "Required": false, - "Type": "Map", + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-spekekeyprovider.html#cfn-mediapackage-packagingconfiguration-spekekeyprovider-url", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.RulesSource": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html", + "AWS::MediaPackage::PackagingConfiguration.StreamSelection": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html", "Properties": { - "RulesSourceList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-rulessourcelist", - "Required": false, - "Type": "RulesSourceList", - "UpdateType": "Mutable" - }, - "RulesString": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-rulesstring", - "PrimitiveType": "String", + "MaxVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-maxvideobitspersecond", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, - "StatefulRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-statefulrules", + "MinVideoBitsPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-minvideobitspersecond", + "PrimitiveType": "Integer", "Required": false, - "Type": "StatefulRules", "UpdateType": "Mutable" }, - "StatelessRulesAndCustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessource.html#cfn-networkfirewall-rulegroup-rulessource-statelessrulesandcustomactions", + "StreamOrder": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packagingconfiguration-streamselection.html#cfn-mediapackage-packagingconfiguration-streamselection-streamorder", + "PrimitiveType": "String", "Required": false, - "Type": "StatelessRulesAndCustomActions", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.RulesSourceList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html", + "AWS::MediaPackage::PackagingGroup.Authorization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html", "Properties": { - "GeneratedRulesType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html#cfn-networkfirewall-rulegroup-rulessourcelist-generatedrulestype", + "CdnIdentifierSecret": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-cdnidentifiersecret", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" }, - "TargetTypes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html#cfn-networkfirewall-rulegroup-rulessourcelist-targettypes", - "Required": true, - "Type": "TargetTypes", - "UpdateType": "Mutable" - }, - "Targets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-rulessourcelist.html#cfn-networkfirewall-rulegroup-rulessourcelist-targets", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.StatefulRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html", - "Properties": { - "Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html#cfn-networkfirewall-rulegroup-statefulrule-action", + "SecretsRoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediapackage-packaginggroup-authorization.html#cfn-mediapackage-packaginggroup-authorization-secretsrolearn", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" - }, - "Header": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html#cfn-networkfirewall-rulegroup-statefulrule-header", - "Required": true, - "Type": "Header", - "UpdateType": "Mutable" - }, - "RuleOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrule.html#cfn-networkfirewall-rulegroup-statefulrule-ruleoptions", - "Required": true, - "Type": "RuleOptions", - "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.StatefulRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrules.html", + "AWS::MediaStore::Container.CorsRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html", "Properties": { - "StatefulRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statefulrules.html#cfn-networkfirewall-rulegroup-statefulrules-statefulrules", - "DuplicatesAllowed": false, - "ItemType": "StatefulRule", + "AllowedHeaders": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedheaders", + "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.StatelessRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html", - "Properties": { - "Priority": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html#cfn-networkfirewall-rulegroup-statelessrule-priority", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Mutable" }, - "RuleDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrule.html#cfn-networkfirewall-rulegroup-statelessrule-ruledefinition", - "Required": true, - "Type": "RuleDefinition", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.StatelessRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrules.html", - "Properties": { - "StatelessRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrules.html#cfn-networkfirewall-rulegroup-statelessrules-statelessrules", - "DuplicatesAllowed": false, - "ItemType": "StatelessRule", + "AllowedMethods": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedmethods", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "AllowedOrigins": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-allowedorigins", + "PrimitiveItemType": "String", "Required": false, "Type": "List", "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.StatelessRulesAndCustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html", - "Properties": { - "CustomActions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html#cfn-networkfirewall-rulegroup-statelessrulesandcustomactions-customactions", + }, + "ExposeHeaders": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-exposeheaders", + "PrimitiveItemType": "String", "Required": false, - "Type": "CustomActions", + "Type": "List", "UpdateType": "Mutable" }, - "StatelessRules": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-statelessrulesandcustomactions.html#cfn-networkfirewall-rulegroup-statelessrulesandcustomactions-statelessrules", - "Required": true, - "Type": "StatelessRules", + "MaxAgeSeconds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-corsrule.html#cfn-mediastore-container-corsrule-maxageseconds", + "PrimitiveType": "Integer", + "Required": false, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.TCPFlagField": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html", + "AWS::MediaStore::Container.MetricPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html", "Properties": { - "Flags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html#cfn-networkfirewall-rulegroup-tcpflagfield-flags", + "ContainerLevelMetrics": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-containerlevelmetrics", + "PrimitiveType": "String", "Required": true, - "Type": "Flags", "UpdateType": "Mutable" }, - "Masks": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflagfield.html#cfn-networkfirewall-rulegroup-tcpflagfield-masks", - "Required": false, - "Type": "Flags", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.TCPFlags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflags.html", - "Properties": { - "TCPFlags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tcpflags.html#cfn-networkfirewall-rulegroup-tcpflags-tcpflags", - "DuplicatesAllowed": false, - "ItemType": "TCPFlagField", + "MetricPolicyRules": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicy.html#cfn-mediastore-container-metricpolicy-metricpolicyrules", + "ItemType": "MetricPolicyRule", "Required": false, "Type": "List", "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tags.html", + "AWS::MediaStore::Container.MetricPolicyRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html", "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-tags.html#cfn-networkfirewall-rulegroup-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", + "ObjectGroup": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroup", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup.TargetTypes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-targettypes.html", - "Properties": { - "TargetTypes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-targettypes.html#cfn-networkfirewall-rulegroup-targettypes-targettypes", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", + }, + "ObjectGroupName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediastore-container-metricpolicyrule.html#cfn-mediastore-container-metricpolicyrule-objectgroupname", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } }, - "AWS::NetworkFirewall::RuleGroup.VariableDefinitionList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-variabledefinitionlist.html", + "AWS::Neptune::DBCluster.DBClusterRole": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html", "Properties": { - "VariableDefinitionList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-networkfirewall-rulegroup-variabledefinitionlist.html#cfn-networkfirewall-rulegroup-variabledefinitionlist-variabledefinitionlist", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", + "FeatureName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-featurename", + "PrimitiveType": "String", "Required": false, - "Type": "List", + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-neptune-dbcluster-dbclusterrole.html#cfn-neptune-dbcluster-dbclusterrole-rolearn", + "PrimitiveType": "String", + "Required": true, "UpdateType": "Mutable" } } @@ -41251,242 +38967,6 @@ } } }, - "AWS::S3::StorageLens.AccountLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html", - "Properties": { - "ActivityMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html#cfn-s3-storagelens-accountlevel-activitymetrics", - "Required": false, - "Type": "ActivityMetrics", - "UpdateType": "Mutable" - }, - "BucketLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-accountlevel.html#cfn-s3-storagelens-accountlevel-bucketlevel", - "Required": true, - "Type": "BucketLevel", - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.ActivityMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-activitymetrics.html", - "Properties": { - "IsEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-activitymetrics.html#cfn-s3-storagelens-activitymetrics-isenabled", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.AwsOrg": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-awsorg.html", - "Properties": { - "Arn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-awsorg.html#cfn-s3-storagelens-awsorg-arn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.BucketLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html", - "Properties": { - "ActivityMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html#cfn-s3-storagelens-bucketlevel-activitymetrics", - "Required": false, - "Type": "ActivityMetrics", - "UpdateType": "Mutable" - }, - "PrefixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketlevel.html#cfn-s3-storagelens-bucketlevel-prefixlevel", - "Required": false, - "Type": "PrefixLevel", - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.BucketsAndRegions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html", - "Properties": { - "Buckets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html#cfn-s3-storagelens-bucketsandregions-buckets", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Regions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-bucketsandregions.html#cfn-s3-storagelens-bucketsandregions-regions", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.DataExport": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-dataexport.html", - "Properties": { - "S3BucketDestination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-dataexport.html#cfn-s3-storagelens-dataexport-s3bucketdestination", - "Required": true, - "Type": "S3BucketDestination", - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-encryption.html" - }, - "AWS::S3::StorageLens.PrefixLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html", - "Properties": { - "StorageMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevel.html#cfn-s3-storagelens-prefixlevel-storagemetrics", - "Required": true, - "Type": "PrefixLevelStorageMetrics", - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.PrefixLevelStorageMetrics": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html", - "Properties": { - "IsEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html#cfn-s3-storagelens-prefixlevelstoragemetrics-isenabled", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "SelectionCriteria": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-prefixlevelstoragemetrics.html#cfn-s3-storagelens-prefixlevelstoragemetrics-selectioncriteria", - "Required": false, - "Type": "SelectionCriteria", - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.S3BucketDestination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html", - "Properties": { - "AccountId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-accountid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Arn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-arn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-encryption", - "Required": false, - "Type": "Encryption", - "UpdateType": "Mutable" - }, - "Format": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-format", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "OutputSchemaVersion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-outputschemaversion", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Prefix": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-s3bucketdestination.html#cfn-s3-storagelens-s3bucketdestination-prefix", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.SelectionCriteria": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html", - "Properties": { - "Delimiter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html#cfn-s3-storagelens-selectioncriteria-delimiter", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxDepth": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html#cfn-s3-storagelens-selectioncriteria-maxdepth", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MinStorageBytesPercentage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-selectioncriteria.html#cfn-s3-storagelens-selectioncriteria-minstoragebytespercentage", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::S3::StorageLens.StorageLensConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html", - "Properties": { - "AccountLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-accountlevel", - "Required": true, - "Type": "AccountLevel", - "UpdateType": "Mutable" - }, - "AwsOrg": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-awsorg", - "Required": false, - "Type": "AwsOrg", - "UpdateType": "Mutable" - }, - "DataExport": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-dataexport", - "Required": false, - "Type": "DataExport", - "UpdateType": "Mutable" - }, - "Exclude": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-exclude", - "Required": false, - "Type": "BucketsAndRegions", - "UpdateType": "Mutable" - }, - "Id": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-id", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Include": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-include", - "Required": false, - "Type": "BucketsAndRegions", - "UpdateType": "Mutable" - }, - "IsEnabled": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-isenabled", - "PrimitiveType": "Boolean", - "Required": true, - "UpdateType": "Mutable" - }, - "StorageLensArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-storagelens-storagelensconfiguration.html#cfn-s3-storagelens-storagelensconfiguration-storagelensarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::SES::ConfigurationSetEventDestination.CloudWatchDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ses-configurationseteventdestination-cloudwatchdestination.html", "Properties": { @@ -42570,12 +40050,6 @@ "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" - }, - "MultiModelConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-multimodelconfig", - "Required": false, - "Type": "MultiModelConfig", - "UpdateType": "Immutable" } } }, @@ -42590,17 +40064,6 @@ } } }, - "AWS::SageMaker::Model.MultiModelConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition-multimodelconfig.html", - "Properties": { - "ModelCacheSetting": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition-multimodelconfig.html#cfn-sagemaker-model-containerdefinition-multimodelconfig-modelcachesetting", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::SageMaker::Model.VpcConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html", "Properties": { @@ -43387,23 +40850,6 @@ } } }, - "AWS::Signer::SigningProfile.SignatureValidityPeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-signer-signingprofile-signaturevalidityperiod.html", - "Properties": { - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-signer-signingprofile-signaturevalidityperiod.html#cfn-signer-signingprofile-signaturevalidityperiod-type", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-signer-signingprofile-signaturevalidityperiod.html#cfn-signer-signingprofile-signaturevalidityperiod-value", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::StepFunctions::Activity.TagsEntry": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-activity-tagsentry.html", "Properties": { @@ -43565,13 +41011,6 @@ "Required": false, "UpdateType": "Mutable" }, - "EnvironmentVariables": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-environmentvariables", - "PrimitiveItemType": "String", - "Required": false, - "Type": "Map", - "UpdateType": "Mutable" - }, "MemoryInMB": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-memoryinmb", "PrimitiveType": "Integer", @@ -45835,7 +43274,7 @@ } } }, - "ResourceSpecificationVersion": "21.0.0", + "ResourceSpecificationVersion": "20.2.0", "ResourceTypes": { "AWS::ACMPCA::Certificate": { "Attributes": { @@ -46264,12 +43703,6 @@ "Required": false, "UpdateType": "Mutable" }, - "CustomHeaders": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customheaders", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "CustomRules": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-customrules", "ItemType": "CustomRule", @@ -51160,25 +48593,6 @@ } } }, - "AWS::CloudFront::KeyGroup": { - "Attributes": { - "Id": { - "PrimitiveType": "String" - }, - "LastModifiedTime": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keygroup.html", - "Properties": { - "KeyGroupConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-keygroup.html#cfn-cloudfront-keygroup-keygroupconfig", - "Required": true, - "Type": "KeyGroupConfig", - "UpdateType": "Mutable" - } - } - }, "AWS::CloudFront::OriginRequestPolicy": { "Attributes": { "Id": { @@ -51198,25 +48612,6 @@ } } }, - "AWS::CloudFront::PublicKey": { - "Attributes": { - "CreatedTime": { - "PrimitiveType": "String" - }, - "Id": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-publickey.html", - "Properties": { - "PublicKeyConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudfront-publickey.html#cfn-cloudfront-publickey-publickeyconfig", - "Required": true, - "Type": "PublicKeyConfig", - "UpdateType": "Mutable" - } - } - }, "AWS::CloudFront::RealtimeLogConfig": { "Attributes": { "Arn": { @@ -52488,12 +49883,6 @@ "Type": "Code", "UpdateType": "Mutable" }, - "ConnectionArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html#cfn-codestar-githubrepository-connectionarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "EnableIssues": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html#cfn-codestar-githubrepository-enableissues", "PrimitiveType": "Boolean", @@ -52509,7 +49898,7 @@ "RepositoryAccessToken": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codestar-githubrepository.html#cfn-codestar-githubrepository-repositoryaccesstoken", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "RepositoryDescription": { @@ -54043,7 +51432,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-availabilityzone", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, "EngineVersion": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dms-replicationinstance.html#cfn-dms-replicationinstance-engineversion", @@ -54218,243 +51607,6 @@ } } }, - "AWS::DataBrew::Dataset": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html", - "Properties": { - "FormatOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-formatoptions", - "PrimitiveType": "Json", - "Required": false, - "UpdateType": "Mutable" - }, - "Input": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-input", - "PrimitiveType": "Json", - "Required": true, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-dataset.html#cfn-databrew-dataset-tags", - "DuplicatesAllowed": true, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::DataBrew::Job": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html", - "Properties": { - "DatasetName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-datasetname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "EncryptionKeyArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-encryptionkeyarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "EncryptionMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-encryptionmode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LogSubscription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-logsubscription", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxCapacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-maxcapacity", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxRetries": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-maxretries", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "OutputLocation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-outputlocation", - "PrimitiveType": "Json", - "Required": false, - "UpdateType": "Mutable" - }, - "Outputs": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-outputs", - "ItemType": "Output", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "ProjectName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-projectname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Recipe": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-recipe", - "PrimitiveType": "Json", - "Required": false, - "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-tags", - "DuplicatesAllowed": true, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - }, - "Timeout": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-timeout", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-job.html#cfn-databrew-job-type", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataBrew::Project": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html", - "Properties": { - "DatasetName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-datasetname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "RecipeName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-recipename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Sample": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-sample", - "PrimitiveType": "Json", - "Required": false, - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-project.html#cfn-databrew-project-tags", - "DuplicatesAllowed": true, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::DataBrew::Recipe": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html", - "Properties": { - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Steps": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-steps", - "ItemType": "RecipeStep", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-recipe.html#cfn-databrew-recipe-tags", - "DuplicatesAllowed": true, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::DataBrew::Schedule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html", - "Properties": { - "CronExpression": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-cronexpression", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "JobNames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-jobnames", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-databrew-schedule.html#cfn-databrew-schedule-tags", - "DuplicatesAllowed": true, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, "AWS::DataPipeline::Pipeline": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datapipeline-pipeline.html", "Properties": { @@ -55183,12 +52335,6 @@ "Required": true, "UpdateType": "Immutable" }, - "ClientConnectOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-clientconnectoptions", - "Required": false, - "Type": "ClientConnectOptions", - "UpdateType": "Mutable" - }, "ConnectionLogOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-clientvpnendpoint.html#cfn-ec2-clientvpnendpoint-connectionlogoptions", "Required": true, @@ -57324,13 +54470,6 @@ "Required": false, "UpdateType": "Mutable" }, - "GatewayLoadBalancerArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservice.html#cfn-ec2-vpcendpointservice-gatewayloadbalancerarns", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "NetworkLoadBalancerArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservice.html#cfn-ec2-vpcendpointservice-networkloadbalancerarns", "PrimitiveItemType": "String", @@ -59572,15 +56711,11 @@ } }, "AWS::ElasticLoadBalancingV2::Listener": { - "Attributes": { - "ListenerArn": { - "PrimitiveType": "String" - } - }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html", "Properties": { "AlpnPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-alpnpolicy", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "List", @@ -60220,7 +57355,7 @@ "Action": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-action", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "Condition": { @@ -60238,13 +57373,7 @@ "Principal": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-principal", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Statement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html#cfn-events-eventbuspolicy-statement", - "PrimitiveType": "Json", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "StatementId": { @@ -61543,12 +58672,6 @@ "Required": false, "UpdateType": "Mutable" }, - "TransformEncryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-mltransform.html#cfn-glue-mltransform-transformencryption", - "Required": false, - "Type": "TransformEncryption", - "UpdateType": "Mutable" - }, "TransformParameters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-mltransform.html#cfn-glue-mltransform-transformparameters", "Required": true, @@ -61592,142 +58715,6 @@ } } }, - "AWS::Glue::Registry": { - "Attributes": { - "Arn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html", - "Properties": { - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html#cfn-glue-registry-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html#cfn-glue-registry-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-registry.html#cfn-glue-registry-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::Glue::Schema": { - "Attributes": { - "Arn": { - "PrimitiveType": "String" - }, - "InitialSchemaVersionId": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html", - "Properties": { - "CheckpointVersion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-checkpointversion", - "Required": false, - "Type": "SchemaVersion", - "UpdateType": "Mutable" - }, - "Compatibility": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-compatibility", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "DataFormat": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-dataformat", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Registry": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-registry", - "Required": false, - "Type": "Registry", - "UpdateType": "Immutable" - }, - "SchemaDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-schemadefinition", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schema.html#cfn-glue-schema-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::Glue::SchemaVersion": { - "Attributes": { - "VersionId": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html", - "Properties": { - "Schema": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html#cfn-glue-schemaversion-schema", - "Required": true, - "Type": "Schema", - "UpdateType": "Immutable" - }, - "SchemaDefinition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversion.html#cfn-glue-schemaversion-schemadefinition", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::Glue::SchemaVersionMetadata": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html", - "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html#cfn-glue-schemaversionmetadata-key", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "SchemaVersionId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html#cfn-glue-schemaversionmetadata-schemaversionid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-schemaversionmetadata.html#cfn-glue-schemaversionmetadata-value", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, "AWS::Glue::SecurityConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-securityconfiguration.html", "Properties": { @@ -63898,31 +60885,6 @@ } } }, - "AWS::IoT::TopicRuleDestination": { - "Attributes": { - "Arn": { - "PrimitiveType": "String" - }, - "StatusReason": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html", - "Properties": { - "HttpUrlProperties": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html#cfn-iot-topicruledestination-httpurlproperties", - "Required": false, - "Type": "HttpUrlDestinationSummary", - "UpdateType": "Immutable" - }, - "Status": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-topicruledestination.html#cfn-iot-topicruledestination-status", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::IoTAnalytics::Channel": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iotanalytics-channel.html", "Properties": { @@ -64336,12 +61298,6 @@ "Required": true, "UpdateType": "Mutable" }, - "KeySpec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyspec", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "KeyUsage": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keyusage", "PrimitiveType": "String", @@ -64964,37 +61920,6 @@ } } }, - "AWS::Lambda::CodeSigningConfig": { - "Attributes": { - "CodeSigningConfigArn": { - "PrimitiveType": "String" - }, - "CodeSigningConfigId": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html", - "Properties": { - "AllowedPublishers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html#cfn-lambda-codesigningconfig-allowedpublishers", - "Required": true, - "Type": "AllowedPublishers", - "UpdateType": "Mutable" - }, - "CodeSigningPolicies": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html#cfn-lambda-codesigningconfig-codesigningpolicies", - "Required": false, - "Type": "CodeSigningPolicies", - "UpdateType": "Mutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html#cfn-lambda-codesigningconfig-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::Lambda::EventInvokeConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventinvokeconfig.html", "Properties": { @@ -65098,12 +62023,6 @@ "Required": false, "UpdateType": "Mutable" }, - "PartialBatchResponse": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-partialbatchresponse", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, "Queues": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-queues", "DuplicatesAllowed": false, @@ -65133,12 +62052,6 @@ "Required": false, "Type": "List", "UpdateType": "Mutable" - }, - "TumblingWindowInSeconds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html#cfn-lambda-eventsourcemapping-tumblingwindowinseconds", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" } } }, @@ -65156,12 +62069,6 @@ "Type": "Code", "UpdateType": "Mutable" }, - "CodeSigningConfigArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-codesigningconfigarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "DeadLetterConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-deadletterconfig", "Required": false, @@ -66820,187 +63727,6 @@ } } }, - "AWS::NetworkFirewall::Firewall": { - "Attributes": { - "EndpointIds": { - "PrimitiveItemType": "String", - "Type": "List" - }, - "FirewallArn": { - "PrimitiveType": "String" - }, - "FirewallId": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html", - "Properties": { - "DeleteProtection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-deleteprotection", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FirewallName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-firewallname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "FirewallPolicyArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-firewallpolicyarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "FirewallPolicyChangeProtection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-firewallpolicychangeprotection", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "SubnetChangeProtection": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-subnetchangeprotection", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, - "SubnetMappings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-subnetmappings", - "DuplicatesAllowed": false, - "ItemType": "SubnetMapping", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-tags", - "Required": false, - "Type": "Tags", - "UpdateType": "Mutable" - }, - "VpcId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewall.html#cfn-networkfirewall-firewall-vpcid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::NetworkFirewall::FirewallPolicy": { - "Attributes": { - "FirewallPolicyArn": { - "PrimitiveType": "String" - }, - "FirewallPolicyId": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html", - "Properties": { - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FirewallPolicy": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicy", - "Required": true, - "Type": "FirewallPolicy", - "UpdateType": "Mutable" - }, - "FirewallPolicyName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-firewallpolicyname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-firewallpolicy.html#cfn-networkfirewall-firewallpolicy-tags", - "Required": false, - "Type": "Tags", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::LoggingConfiguration": { - "Attributes": { - "FirewallArn": { - "PrimitiveType": "String" - }, - "FirewallName": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html", - "Properties": { - "LoggingConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-loggingconfiguration.html#cfn-networkfirewall-loggingconfiguration-loggingconfiguration", - "Required": true, - "Type": "LoggingConfiguration", - "UpdateType": "Mutable" - } - } - }, - "AWS::NetworkFirewall::RuleGroup": { - "Attributes": { - "RuleGroupArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html", - "Properties": { - "Capacity": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-capacity", - "PrimitiveType": "Integer", - "Required": true, - "UpdateType": "Immutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RuleGroup": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroup", - "Required": false, - "Type": "RuleGroup", - "UpdateType": "Mutable" - }, - "RuleGroupId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroupid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RuleGroupName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-rulegroupname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-tags", - "Required": false, - "Type": "Tags", - "UpdateType": "Mutable" - }, - "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkfirewall-rulegroup.html#cfn-networkfirewall-rulegroup-type", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, "AWS::NetworkManager::CustomerGatewayAssociation": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-customergatewayassociation.html", "Properties": { @@ -71224,30 +67950,6 @@ } } }, - "AWS::S3::StorageLens": { - "Attributes": { - "StorageLensArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html", - "Properties": { - "StorageLensConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html#cfn-s3-storagelens-storagelensconfiguration", - "Required": true, - "Type": "StorageLensConfiguration", - "UpdateType": "Mutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-s3-storagelens.html#cfn-s3-storagelens-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::SDB::Domain": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-simpledb.html", "Properties": { @@ -72390,16 +69092,14 @@ } }, "AWS::SageMaker::MonitoringSchedule": { - "Attributes": { - "CreationTime": { - "PrimitiveType": "String" - }, - "LastModifiedTime": { - "PrimitiveType": "String" - } - }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html", "Properties": { + "CreationTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-creationtime", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "EndpointName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-endpointname", "PrimitiveType": "String", @@ -72412,6 +69112,12 @@ "Required": false, "UpdateType": "Mutable" }, + "LastModifiedTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-lastmodifiedtime", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "LastMonitoringExecutionSummary": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html#cfn-sagemaker-monitoringschedule-lastmonitoringexecutionsummary", "Required": false, @@ -73500,79 +70206,6 @@ } } }, - "AWS::Signer::ProfilePermission": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html", - "Properties": { - "Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-action", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Principal": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-principal", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "ProfileName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-profilename", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "ProfileVersion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-profileversion", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "StatementId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-profilepermission.html#cfn-signer-profilepermission-statementid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::Signer::SigningProfile": { - "Attributes": { - "Arn": { - "PrimitiveType": "String" - }, - "ProfileName": { - "PrimitiveType": "String" - }, - "ProfileVersion": { - "PrimitiveType": "String" - }, - "ProfileVersionArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html", - "Properties": { - "PlatformId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html#cfn-signer-signingprofile-platformid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "SignatureValidityPeriod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html#cfn-signer-signingprofile-signaturevalidityperiod", - "Required": false, - "Type": "SignatureValidityPeriod", - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-signer-signingprofile.html#cfn-signer-signingprofile-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::StepFunctions::Activity": { "Attributes": { "Name": { diff --git a/packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json b/packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json deleted file mode 100644 index 12e9cd1768ea6..0000000000000 --- a/packages/@aws-cdk/cfnspec/spec-source/700_DataBrew_patch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "PropertyTypes": { - "AWS::DataBrew::Recipe.Action": { - "patch": { - "description": "AWS::DataBrew::Recipe.Action.Parameters does not have a type", - "operations": [ - { - "op": "add", - "path": "/Properties/Parameters/Type", - "value": "Map" - }, - { - "op": "add", - "path": "/Properties/Parameters/PrimitiveItemType", - "value": "String" - } - ] - } - }, - "AWS::DataBrew::Recipe.RecipeStep": { - "patch": { - "description": "AWS::DataBrew::Recipe.RecipeStep.Action has both PrimitiveType and Type", - "operations": [ - { - "op": "remove", - "path": "/Properties/Action/PrimitiveType" - } - ] - } - } - } -} diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index 6eb7b2887f3dd..c9258888b3c6d 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -58,7 +58,7 @@ "jest": "^26.6.3", "mock-fs": "^4.13.0", "pkglint": "0.0.0", - "typescript-json-schema": "^0.44.0" + "typescript-json-schema": "^0.43.0" }, "repository": { "url": "https://github.com/aws/aws-cdk.git", diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 1f0284428620e..e465c8aa10595 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -26,7 +26,7 @@ "diff": "^5.0.0", "fast-deep-equal": "^3.1.3", "string-width": "^4.2.0", - "table": "^6.0.4" + "table": "^6.0.3" }, "devDependencies": { "@types/jest": "^26.0.15", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index 24fd055058c4d..740c7d4a5ad7a 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -107,7 +107,6 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", - "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -162,7 +161,6 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", - "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -185,7 +183,6 @@ "@aws-cdk/aws-servicecatalog": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", - "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", @@ -243,7 +240,6 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", - "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -298,7 +294,6 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", - "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -321,7 +316,6 @@ "@aws-cdk/aws-servicecatalog": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", - "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", diff --git a/packages/@aws-cdk/core/lib/cfn-element.ts b/packages/@aws-cdk/core/lib/cfn-element.ts index 5e2cf1602c614..d381441f9a19e 100644 --- a/packages/@aws-cdk/core/lib/cfn-element.ts +++ b/packages/@aws-cdk/core/lib/cfn-element.ts @@ -60,7 +60,7 @@ export abstract class CfnElement extends CoreConstruct { this.stack = Stack.of(this); - this.logicalId = Lazy.uncachedString({ produce: () => this.synthesizeLogicalId() }, { + this.logicalId = Lazy.stringValue({ produce: () => this.synthesizeLogicalId() }, { displayHint: `${notTooLong(Node.of(this).path)}.LogicalID`, }); diff --git a/packages/@aws-cdk/core/lib/cfn-parse.ts b/packages/@aws-cdk/core/lib/cfn-parse.ts index c5fc563c3778f..663bdd6437a98 100644 --- a/packages/@aws-cdk/core/lib/cfn-parse.ts +++ b/packages/@aws-cdk/core/lib/cfn-parse.ts @@ -492,7 +492,7 @@ export class CfnParser { // as otherwise Fn.join() will try to concatenate // the non-token parts, // causing a diff with the original template - return Fn.join(value[0], Lazy.list({ produce: () => value[1] })); + return Fn.join(value[0], Lazy.listValue({ produce: () => value[1] })); } case 'Fn::Cidr': { const value = this.parseValue(object[key]); @@ -670,7 +670,7 @@ export class CfnParser { // as Fn.valueOf() returns a string, // which is incorrect // (Fn::ValueOf can also return an array) - return Lazy.any({ produce: () => ({ 'Fn::ValueOf': [param.logicalId, value[1]] }) }); + return Lazy.anyValue({ produce: () => ({ 'Fn::ValueOf': [param.logicalId, value[1]] }) }); } default: // I don't want to hard-code the list of supported Rules-specific intrinsics in this function; diff --git a/packages/@aws-cdk/core/lib/lazy.ts b/packages/@aws-cdk/core/lib/lazy.ts index 58eb3bd6522b9..c4fa348dd56db 100644 --- a/packages/@aws-cdk/core/lib/lazy.ts +++ b/packages/@aws-cdk/core/lib/lazy.ts @@ -13,16 +13,6 @@ export interface IStringProducer { produce(context: IResolveContext): string | undefined; } -/** - * Interface for (stable) lazy string producers - */ -export interface IStableStringProducer { - /** - * Produce the string value - */ - produce(): string | undefined; -} - /** * Interface for lazy list producers */ @@ -33,16 +23,6 @@ export interface IListProducer { produce(context: IResolveContext): string[] | undefined; } -/** - * Interface for (stable) lazy list producers - */ -export interface IStableListProducer { - /** - * Produce the list value - */ - produce(): string[] | undefined; -} - /** * Interface for lazy number producers */ @@ -53,16 +33,6 @@ export interface INumberProducer { produce(context: IResolveContext): number | undefined; } -/** - * Interface for (stable) lazy number producers - */ -export interface IStableNumberProducer { - /** - * Produce the number value - */ - produce(): number | undefined; -} - /** * Interface for lazy untyped value producers */ @@ -73,16 +43,6 @@ export interface IAnyProducer { produce(context: IResolveContext): any; } -/** - * Interface for (stable) lazy untyped value producers - */ -export interface IStableAnyProducer { - /** - * Produce the value - */ - produce(): any; -} - /** * Options for creating a lazy string token */ @@ -140,202 +100,30 @@ export interface LazyAnyValueOptions { * will only be calculated later, during synthesis. */ export class Lazy { - /** - * Defer the calculation of a string value to synthesis time - * - * Use this if you want to render a string to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * If you are simply looking to force a value to a `string` type and don't need - * the calculation to be deferred, use `Token.asString()` instead. - * - * @deprecated Use `Lazy.string()` or `Lazy.uncachedString()` instead. - */ public static stringValue(producer: IStringProducer, options: LazyStringValueOptions = {}) { - return Token.asString(new LazyString(producer, false), options); - } - - /** - * Defer the one-time calculation of a string value to synthesis time - * - * Use this if you want to render a string to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * If you are simply looking to force a value to a `string` type and don't need - * the calculation to be deferred, use `Token.asString()` instead. - * - * The inner function will only be invoked once, and the resolved value - * cannot depend on the Stack the Token is used in. - */ - public static string(producer: IStableStringProducer, options: LazyStringValueOptions = {}) { - return Token.asString(new LazyString(producer, true), options); - } - - /** - * Defer the calculation of a string value to synthesis time - * - * Use of this function is not recommended; unless you know you need it for sure, you - * probably don't. Use `Lazy.string()` instead. - * - * The inner function may be invoked multiple times during synthesis. You - * should only use this method if the returned value depends on variables - * that may change during the Aspect application phase of synthesis, or if - * the value depends on the Stack the value is being used in. Both of these - * cases are rare, and only ever occur for AWS Construct Library authors. - */ - public static uncachedString(producer: IStringProducer, options: LazyStringValueOptions = {}) { - return Token.asString(new LazyString(producer, false), options); + return Token.asString(new LazyString(producer), options); } - /** - * Defer the one-time calculation of a number value to synthesis time - * - * Use this if you want to render a number to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * If you are simply looking to force a value to a `number` type and don't need - * the calculation to be deferred, use `Token.asNumber()` instead. - * - * @deprecated Use `Lazy.number()` or `Lazy.uncachedNumber()` instead. - */ public static numberValue(producer: INumberProducer) { - return Token.asNumber(new LazyNumber(producer, false)); - } - - /** - * Defer the one-time calculation of a number value to synthesis time - * - * Use this if you want to render a number to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * If you are simply looking to force a value to a `number` type and don't need - * the calculation to be deferred, use `Token.asNumber()` instead. - * - * The inner function will only be invoked once, and the resolved value - * cannot depend on the Stack the Token is used in. - */ - public static number(producer: IStableNumberProducer) { - return Token.asNumber(new LazyNumber(producer, true)); - } - - /** - * Defer the calculation of a number value to synthesis time - * - * Use of this function is not recommended; unless you know you need it for sure, you - * probably don't. Use `Lazy.number()` instead. - * - * The inner function may be invoked multiple times during synthesis. You - * should only use this method if the returned value depends on variables - * that may change during the Aspect application phase of synthesis, or if - * the value depends on the Stack the value is being used in. Both of these - * cases are rare, and only ever occur for AWS Construct Library authors. - */ - public static uncachedNumber(producer: INumberProducer) { - return Token.asNumber(new LazyNumber(producer, false)); + return Token.asNumber(new LazyNumber(producer)); } - /** - * Defer the one-time calculation of a list value to synthesis time - * - * Use this if you want to render a list to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * If you are simply looking to force a value to a `string[]` type and don't need - * the calculation to be deferred, use `Token.asList()` instead. - * - * @deprecated Use `Lazy.list()` or `Lazy.uncachedList()` instead. - */ public static listValue(producer: IListProducer, options: LazyListValueOptions = {}) { - return Token.asList(new LazyList(producer, false, options), options); - } - - /** - * Defer the calculation of a list value to synthesis time - * - * Use of this function is not recommended; unless you know you need it for sure, you - * probably don't. Use `Lazy.list()` instead. - * - * The inner function may be invoked multiple times during synthesis. You - * should only use this method if the returned value depends on variables - * that may change during the Aspect application phase of synthesis, or if - * the value depends on the Stack the value is being used in. Both of these - * cases are rare, and only ever occur for AWS Construct Library authors. - */ - public static uncachedList(producer: IListProducer, options: LazyListValueOptions = {}) { - return Token.asList(new LazyList(producer, false, options), options); - } - - /** - * Defer the one-time calculation of a list value to synthesis time - * - * Use this if you want to render a list to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * If you are simply looking to force a value to a `string[]` type and don't need - * the calculation to be deferred, use `Token.asList()` instead. - * - * The inner function will only be invoked once, and the resolved value - * cannot depend on the Stack the Token is used in. - */ - public static list(producer: IStableListProducer, options: LazyListValueOptions = {}) { - return Token.asList(new LazyList(producer, true, options), options); + return Token.asList(new LazyList(producer, options), options); } - /** - * Defer the one-time calculation of an arbitrarily typed value to synthesis time - * - * Use this if you want to render an object to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * @deprecated Use `Lazy.any()` or `Lazy.uncachedAny()` instead. - */ public static anyValue(producer: IAnyProducer, options: LazyAnyValueOptions = {}): IResolvable { - return new LazyAny(producer, false, options); - } - - /** - * Defer the one-time calculation of an arbitrarily typed value to synthesis time - * - * Use this if you want to render an object to a template whose actual value depends on - * some state mutation that may happen after the construct has been created. - * - * The inner function will only be invoked one time and cannot depend on - * resolution context. - */ - public static any(producer: IStableAnyProducer, options: LazyAnyValueOptions = {}): IResolvable { - return new LazyAny(producer, true, options); - } - - /** - * Defer the calculation of an untyped value to synthesis time - * - * Use of this function is not recommended; unless you know you need it for sure, you - * probably don't. Use `Lazy.any()` instead. - * - * The inner function may be invoked multiple times during synthesis. You - * should only use this method if the returned value depends on variables - * that may change during the Aspect application phase of synthesis, or if - * the value depends on the Stack the value is being used in. Both of these - * cases are rare, and only ever occur for AWS Construct Library authors. - */ - public static uncachedAny(producer: IAnyProducer, options: LazyAnyValueOptions = {}): IResolvable { - return new LazyAny(producer, false, options); + return new LazyAny(producer, options); } private constructor() { } } - -interface ILazyProducer { - produce(context: IResolveContext): A | undefined; -} - -abstract class LazyBase implements IResolvable { +abstract class LazyBase implements IResolvable { public readonly creationStack: string[]; - private _cached?: A; - constructor(private readonly producer: ILazyProducer, private readonly cache: boolean) { + constructor() { // Stack trace capture is conditionned to `debugModeEnabled()`, because // lazies can be created in a fairly thrashy way, and the stack traces are // large and slow to obtain; but are mostly useful only when debugging a @@ -345,13 +133,7 @@ abstract class LazyBase implements IResolvable { : [`Execute again with ${CDK_DEBUG}=true to capture stack traces`]; } - public resolve(context: IResolveContext) { - if (this.cache) { - return this._cached ?? (this._cached = this.producer.produce(context)); - } else { - return this.producer.produce(context); - } - } + public abstract resolve(context: IResolveContext): any; public toString() { return Token.asString(this); @@ -368,36 +150,50 @@ abstract class LazyBase implements IResolvable { } -class LazyString extends LazyBase { +class LazyString extends LazyBase { + constructor(private readonly producer: IStringProducer) { + super(); + } + + public resolve(context: IResolveContext) { + return this.producer.produce(context); + } } -class LazyNumber extends LazyBase { +class LazyNumber extends LazyBase { + constructor(private readonly producer: INumberProducer) { + super(); + } + + public resolve(context: IResolveContext) { + return this.producer.produce(context); + } } -class LazyList extends LazyBase> { - constructor(producer: IListProducer, cache: boolean, private readonly options: LazyListValueOptions = {}) { - super(producer, cache); +class LazyList extends LazyBase { + constructor(private readonly producer: IListProducer, private readonly options: LazyListValueOptions = {}) { + super(); } public resolve(context: IResolveContext) { - const resolved = super.resolve(context); - if (resolved?.length === 0 && this.options.omitEmpty) { + const ret = this.producer.produce(context); + if (ret !== undefined && ret.length === 0 && this.options.omitEmpty) { return undefined; } - return resolved; + return ret; } } -class LazyAny extends LazyBase { - constructor(producer: IAnyProducer, cache: boolean, private readonly options: LazyAnyValueOptions = {}) { - super(producer, cache); +class LazyAny extends LazyBase { + constructor(private readonly producer: IAnyProducer, private readonly options: LazyAnyValueOptions = {}) { + super(); } public resolve(context: IResolveContext) { - const resolved = super.resolve(context); - if (Array.isArray(resolved) && resolved.length === 0 && this.options.omitEmptyArray) { + const ret = this.producer.produce(context); + if (Array.isArray(ret) && ret.length === 0 && this.options.omitEmptyArray) { return undefined; } - return resolved; + return ret; } } diff --git a/packages/@aws-cdk/core/lib/nested-stack.ts b/packages/@aws-cdk/core/lib/nested-stack.ts index f130d00ded80b..cca4b827b57cf 100644 --- a/packages/@aws-cdk/core/lib/nested-stack.ts +++ b/packages/@aws-cdk/core/lib/nested-stack.ts @@ -120,9 +120,8 @@ export class NestedStack extends Stack { this.parameters = props.parameters || {}; this.resource = new CfnStack(parentScope, `${id}.NestedStackResource`, { - // This value cannot be cached since it changes during the synthesis phase - templateUrl: Lazy.uncachedString({ produce: () => this._templateUrl || '' }), - parameters: Lazy.any({ produce: () => Object.keys(this.parameters).length > 0 ? this.parameters : undefined }), + templateUrl: Lazy.stringValue({ produce: () => this._templateUrl || '' }), + parameters: Lazy.anyValue({ produce: () => Object.keys(this.parameters).length > 0 ? this.parameters : undefined }), notificationArns: props.notificationArns, timeoutInMinutes: props.timeout ? props.timeout.toMinutes() : undefined, }); diff --git a/packages/@aws-cdk/core/lib/private/cfn-reference.ts b/packages/@aws-cdk/core/lib/private/cfn-reference.ts index 34c3da0138ae8..b25597602f6b6 100644 --- a/packages/@aws-cdk/core/lib/private/cfn-reference.ts +++ b/packages/@aws-cdk/core/lib/private/cfn-reference.ts @@ -50,7 +50,7 @@ export class CfnReference extends Reference { * the prepare() phase (for the purpose of cross-stack references), it's * important that the state isn't lost if it's lazily created, like so: * - * Lazy.string({ produce: () => new CfnReference(...) }) + * Lazy.stringValue({ produce: () => new CfnReference(...) }) * */ public static for(target: CfnElement, attribute: string, refRender?: ReferenceRendering) { diff --git a/packages/@aws-cdk/core/lib/private/metadata-resource.ts b/packages/@aws-cdk/core/lib/private/metadata-resource.ts index ff84b931f819b..09813ccb87faa 100644 --- a/packages/@aws-cdk/core/lib/private/metadata-resource.ts +++ b/packages/@aws-cdk/core/lib/private/metadata-resource.ts @@ -51,7 +51,7 @@ export class MetadataResource extends Construct { const resource = new CfnResource(this, 'Default', { type: 'AWS::CDK::Metadata', properties: { - Modules: Lazy.string({ produce: () => MetadataResource.modulesProperty() }), + Modules: Lazy.stringValue({ produce: () => MetadataResource.modulesProperty() }), }, }); diff --git a/packages/@aws-cdk/core/lib/resource.ts b/packages/@aws-cdk/core/lib/resource.ts index 917a2c442dcf1..6a810b8a971e8 100644 --- a/packages/@aws-cdk/core/lib/resource.ts +++ b/packages/@aws-cdk/core/lib/resource.ts @@ -126,7 +126,7 @@ export abstract class Resource extends CoreConstruct implements IResource { // auto-generate only if cross-env is required this._physicalName = undefined; this._allowCrossEnvironment = true; - physicalName = Lazy.string({ produce: () => this._physicalName }); + physicalName = Lazy.stringValue({ produce: () => this._physicalName }); } else if (props.physicalName && !Token.isUnresolved(props.physicalName)) { // concrete value specified by the user this._physicalName = props.physicalName; @@ -181,7 +181,7 @@ export abstract class Resource extends CoreConstruct implements IResource { * @experimental */ protected getResourceNameAttribute(nameAttr: string) { - return Lazy.uncachedString({ + return Lazy.stringValue({ produce: (context: IResolveContext) => { const consumingStack = Stack.of(context.scope); diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts index 929338f8fbc05..67524b0b96c1c 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts @@ -233,10 +233,6 @@ export class DefaultStackSynthesizer extends StackSynthesizer { } public bind(stack: Stack): void { - if (this._stack !== undefined) { - throw new Error('A StackSynthesizer can only be used for one Stack: create a new instance to use with a different Stack'); - } - this._stack = stack; const qualifier = this.props.qualifier ?? stack.node.tryGetContext(BOOTSTRAP_QUALIFIER_CONTEXT) ?? DefaultStackSynthesizer.DEFAULT_QUALIFIER; diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts index e6dfd63235b8c..bacf1514a8b4b 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts @@ -48,9 +48,6 @@ export class LegacyStackSynthesizer extends StackSynthesizer { private readonly addedImageAssets = new Set(); public bind(stack: Stack): void { - if (this.stack !== undefined) { - throw new Error('A StackSynthesizer can only be used for one Stack: create a new instance to use with a different Stack'); - } this.stack = stack; } diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts index 8eb05d34cba9e..bc909775fee8a 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts @@ -18,9 +18,6 @@ export class NestedStackSynthesizer extends StackSynthesizer { } public bind(stack: Stack): void { - if (this.stack !== undefined) { - throw new Error('A StackSynthesizer can only be used for one Stack: create a new instance to use with a different Stack'); - } this.stack = stack; } diff --git a/packages/@aws-cdk/core/lib/token.ts b/packages/@aws-cdk/core/lib/token.ts index 5f98db7a4f11f..35f2667f67365 100644 --- a/packages/@aws-cdk/core/lib/token.ts +++ b/packages/@aws-cdk/core/lib/token.ts @@ -179,7 +179,7 @@ export class Tokenization { // only convert numbers to strings so that Refs, conditions, and other things don't end up synthesizing as [object object] if (Token.isUnresolved(x)) { - return Lazy.uncachedString({ + return Lazy.stringValue({ produce: context => { const resolved = context.resolve(x); return typeof resolved !== 'number' ? resolved : `${resolved}`; diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index 81211b655baf5..7b1dadc4bbc23 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -171,8 +171,8 @@ "devDependencies": { "@types/lodash": "^4.14.165", "@types/minimatch": "^3.0.3", - "@types/node": "^10.17.47", - "@types/sinon": "^9.0.9", + "@types/node": "^10.17.46", + "@types/sinon": "^9.0.8", "cdk-build-tools": "0.0.0", "cfn2ts": "0.0.0", "fast-check": "^2.7.0", diff --git a/packages/@aws-cdk/core/test/cfn-json.test.ts b/packages/@aws-cdk/core/test/cfn-json.test.ts index 150d1971cc39f..85ee12c822cb8 100644 --- a/packages/@aws-cdk/core/test/cfn-json.test.ts +++ b/packages/@aws-cdk/core/test/cfn-json.test.ts @@ -42,7 +42,7 @@ nodeunitShim({ value: { [other.ref]: 1234, world: { - bar: `this is a ${Lazy.string({ produce: () => 'I am lazy' })}`, + bar: `this is a ${Lazy.stringValue({ produce: () => 'I am lazy' })}`, }, }, }); @@ -62,7 +62,7 @@ nodeunitShim({ const res = new CfnResource(stack, 'MyResource', { type: 'Foo' }); const cfnjson = new CfnJson(stack, 'MyCfnJson', { value: { - [`ref=${res.ref}`]: `this is a ${Lazy.string({ produce: () => 'I am lazy' })}`, + [`ref=${res.ref}`]: `this is a ${Lazy.stringValue({ produce: () => 'I am lazy' })}`, }, }); diff --git a/packages/@aws-cdk/core/test/cloudformation-json.test.ts b/packages/@aws-cdk/core/test/cloudformation-json.test.ts index e9d850eb178a2..8d7e571501462 100644 --- a/packages/@aws-cdk/core/test/cloudformation-json.test.ts +++ b/packages/@aws-cdk/core/test/cloudformation-json.test.ts @@ -155,7 +155,7 @@ nodeunitShim({ 'Doubly nested strings evaluate correctly in JSON context'(test: Test) { // WHEN const stack = new Stack(); - const fidoSays = Lazy.string({ produce: () => 'woof' }); + const fidoSays = Lazy.stringValue({ produce: () => 'woof' }); // WHEN const resolved = stack.resolve(stack.toJsonString({ @@ -171,7 +171,7 @@ nodeunitShim({ 'Doubly nested intrinsics evaluate correctly in JSON context'(test: Test) { // GIVEN const stack = new Stack(); - const fidoSays = Lazy.any({ produce: () => ({ Ref: 'Something' }) }); + const fidoSays = Lazy.anyValue({ produce: () => ({ Ref: 'Something' }) }); // WHEN const resolved = stack.resolve(stack.toJsonString({ @@ -188,7 +188,7 @@ nodeunitShim({ 'Quoted strings in embedded JSON context are escaped'(test: Test) { // GIVEN const stack = new Stack(); - const fidoSays = Lazy.string({ produce: () => '"woof"' }); + const fidoSays = Lazy.stringValue({ produce: () => '"woof"' }); // WHEN const resolved = stack.resolve(stack.toJsonString({ @@ -235,30 +235,6 @@ nodeunitShim({ test.done(); }, - - 'Every Token used inside a JSONified string is given an opportunity to be uncached'(test: Test) { - // Check that tokens aren't accidentally fully resolved by the first invocation/resolution - // of toJsonString(). On every evaluation, Tokens referenced inside the structure should be - // given a chance to be either cached or uncached. - // - // (NOTE: This does not check whether the implementation of toJsonString() itself is cached or - // not; that depends on aws/aws-cdk#11224 and should be done in a different PR). - - // GIVEN - const app = new App(); - const stack = new Stack(app, 'Stack1'); - - // WHEN - let counter = 0; - const counterString = Token.asString({ resolve: () => `${++counter}` }); - const jsonString = stack.toJsonString({ counterString }); - - // THEN - expect(stack.resolve(jsonString)).toEqual('{"counterString":"1"}'); - expect(stack.resolve(jsonString)).toEqual('{"counterString":"2"}'); - - test.done(); - }, }); /** @@ -267,6 +243,6 @@ nodeunitShim({ function tokensThatResolveTo(value: any): Token[] { return [ new Intrinsic(value), - Lazy.any({ produce: () => value }), + Lazy.anyValue({ produce: () => value }), ]; } diff --git a/packages/@aws-cdk/core/test/construct.test.ts b/packages/@aws-cdk/core/test/construct.test.ts index a190ebaac7327..872ba9dceedca 100644 --- a/packages/@aws-cdk/core/test/construct.test.ts +++ b/packages/@aws-cdk/core/test/construct.test.ts @@ -67,7 +67,7 @@ nodeunitShim({ 'dont allow unresolved tokens to be used in construct IDs'(test: Test) { // GIVEN const root = new Root(); - const token = Lazy.string({ produce: () => 'lazy' }); + const token = Lazy.stringValue({ produce: () => 'lazy' }); // WHEN + THEN test.throws(() => new Construct(root, `MyID: ${token}`), /Cannot use tokens in construct ID: MyID: \${Token/); diff --git a/packages/@aws-cdk/core/test/duration.test.ts b/packages/@aws-cdk/core/test/duration.test.ts index 70b7cb786e344..4d84d80c3eaf7 100644 --- a/packages/@aws-cdk/core/test/duration.test.ts +++ b/packages/@aws-cdk/core/test/duration.test.ts @@ -145,7 +145,7 @@ nodeunitShim({ 'to human string'(test: Test) { test.equal(Duration.minutes(0).toHumanString(), '0 minutes'); - test.equal(Duration.minutes(Lazy.number({ produce: () => 5 })).toHumanString(), ' minutes'); + test.equal(Duration.minutes(Lazy.numberValue({ produce: () => 5 })).toHumanString(), ' minutes'); test.equal(Duration.minutes(10).toHumanString(), '10 minutes'); test.equal(Duration.minutes(1).toHumanString(), '1 minute'); diff --git a/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts b/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts index 22539e435b214..2d6e5e93d8d2a 100644 --- a/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts +++ b/packages/@aws-cdk/core/test/private/physical-name-generator.test.ts @@ -113,7 +113,7 @@ nodeunitShim({ isGeneratedWhenNeededMarker: { 'correctly response for other tokens'(test: Test) { test.ok(!isGeneratedWhenNeededMarker('this is not even a token!')); - test.ok(!isGeneratedWhenNeededMarker(Lazy.string({ produce: () => 'Bazinga!' }))); + test.ok(!isGeneratedWhenNeededMarker(Lazy.stringValue({ produce: () => 'Bazinga!' }))); test.done(); }, diff --git a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts index f62df683c422a..ce64cf5991e1a 100644 --- a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts +++ b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts @@ -123,7 +123,7 @@ nodeunitShim({ class MyCfnResource extends AbstractCfnResource { protected get cfnProperties(): { [key: string]: any } { return { - lazykey: Lazy.string({ produce: () => 'LazyResolved!' }), + lazykey: Lazy.stringValue({ produce: () => 'LazyResolved!' }), cfnparamkey: cfnparam, }; } @@ -178,7 +178,7 @@ nodeunitShim({ constructor(scope: Construct, id: string) { super(scope, id); - this.lazykey = Lazy.string({ produce: () => 'LazyResolved!' }); + this.lazykey = Lazy.stringValue({ produce: () => 'LazyResolved!' }); } protected get cfnProperties(): { [key: string]: any } { diff --git a/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts b/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts index 0b30ec049f6ae..7ae1681d011bd 100644 --- a/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts +++ b/packages/@aws-cdk/core/test/stack-synthesis/new-style-synthesis.test.ts @@ -256,18 +256,6 @@ nodeunitShim({ test.done(); }, - - 'cannot use same synthesizer for multiple stacks'(test: Test) { - // GIVEN - const synthesizer = new DefaultStackSynthesizer(); - - // WHEN - new Stack(app, 'Stack2', { synthesizer }); - test.throws(() => { - new Stack(app, 'Stack3', { synthesizer }); - }, /A StackSynthesizer can only be used for one Stack/); - test.done(); - }, }); /** diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index dad2a64b3235c..50a91b7be7827 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -309,7 +309,7 @@ nodeunitShim({ const stack2 = new Stack(app, 'Stack2'); // WHEN - used in another stack - new CfnParameter(stack2, 'SomeParameter', { type: 'String', default: Lazy.string({ produce: () => account1 }) }); + new CfnParameter(stack2, 'SomeParameter', { type: 'String', default: Lazy.stringValue({ produce: () => account1 }) }); const assembly = app.synth(); const template1 = assembly.getStackByName(stack1.stackName).template; diff --git a/packages/@aws-cdk/core/test/tokens.test.ts b/packages/@aws-cdk/core/test/tokens.test.ts index 39f4332d0ad86..e8dec9c64212a 100644 --- a/packages/@aws-cdk/core/test/tokens.test.ts +++ b/packages/@aws-cdk/core/test/tokens.test.ts @@ -273,7 +273,7 @@ nodeunitShim({ 'tokens can be nested in hash keys'(test: Test) { // GIVEN - const token = new Intrinsic(Lazy.string({ produce: () => Lazy.string({ produce: (() => 'I am a string') }) })); + const token = new Intrinsic(Lazy.stringValue({ produce: () => Lazy.stringValue({ produce: (() => 'I am a string') }) })); // WHEN const s = { @@ -285,55 +285,6 @@ nodeunitShim({ test.done(); }, - 'Function passed to Lazy.uncachedString() is evaluated multiple times'(test: Test) { - // GIVEN - let counter = 0; - const counterString = Lazy.uncachedString({ produce: () => `${++counter}` }); - - // THEN - expect(resolve(counterString)).toEqual('1'); - expect(resolve(counterString)).toEqual('2'); - - test.done(); - }, - - 'Function passed to Lazy.string() is only evaluated once'(test: Test) { - // GIVEN - let counter = 0; - const counterString = Lazy.string({ produce: () => `${++counter}` }); - - // THEN - expect(resolve(counterString)).toEqual('1'); - expect(resolve(counterString)).toEqual('1'); - - test.done(); - }, - - 'Uncached tokens returned by cached tokens are still evaluated multiple times'(test: Test) { - // Check that nested token returns aren't accidentally fully resolved by the - // first resolution. On every evaluation, Tokens referenced inside the - // structure should be given a chance to be either cached or uncached. - - // GIVEN - let counter = 0; - const uncachedToken = Lazy.uncachedString({ produce: () => `${++counter}` }); - // Directly returned - const counterString1 = Lazy.string({ produce: () => uncachedToken }); - // In quoted context - const counterString2 = Lazy.string({ produce: () => `->${uncachedToken}` }); - // In object context - const counterObject = Lazy.any({ produce: () => ({ finalCount: uncachedToken }) }); - - // THEN - expect(resolve(counterString1)).toEqual('1'); - expect(resolve(counterString1)).toEqual('2'); - expect(resolve(counterString2)).toEqual('->3'); - expect(resolve(counterString2)).toEqual('->4'); - expect(resolve(counterObject)).toEqual({ finalCount: '5' }); - - test.done(); - }, - 'tokens can be nested and concatenated in hash keys'(test: Test) { // GIVEN const innerToken = new Intrinsic( 'toot'); @@ -640,7 +591,7 @@ nodeunitShim({ 'creation stack is attached to errors emitted during resolve with CDK_DEBUG=true'(test: Test) { function showMeInTheStackTrace() { - return Lazy.string({ produce: () => { throw new Error('fooError'); } }); + return Lazy.stringValue({ produce: () => { throw new Error('fooError'); } }); } const previousValue = process.env.CDK_DEBUG; @@ -707,7 +658,7 @@ nodeunitShim({ 'lazy Ref remains the same'(test: Test) { const resolvedVal = { Ref: 'SomeLogicalId' }; - const tokenizedVal = Lazy.any({ + const tokenizedVal = Lazy.anyValue({ produce: () => resolvedVal, }); const res = Tokenization.stringifyNumber(tokenizedVal as any) as any; @@ -769,7 +720,7 @@ class DataType extends BaseDataType { function tokensThatResolveTo(value: any): Token[] { return [ new Intrinsic(value), - Lazy.any({ produce: () => value }), + Lazy.anyValue({ produce: () => value }), ]; } diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index 92c36d248b6f5..ba8017fa964fc 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -79,8 +79,8 @@ "@aws-cdk/aws-ssm": "0.0.0", "@types/aws-lambda": "^8.10.64", "@types/fs-extra": "^8.1.1", - "@types/sinon": "^9.0.9", - "aws-sdk": "^2.799.0", + "@types/sinon": "^9.0.8", + "aws-sdk": "^2.797.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", diff --git a/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts b/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts index 0c661b61e9251..1e2adadafb52d 100644 --- a/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts +++ b/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts @@ -116,7 +116,7 @@ export class PublishAssetsAction extends CoreConstruct implements codepipeline.I commands: `npm install -g cdk-assets${installSuffix}`, }, build: { - commands: Lazy.list({ produce: () => this.commands }), + commands: Lazy.listValue({ produce: () => this.commands }), }, }, }), diff --git a/packages/@monocdk-experiment/assert/package.json b/packages/@monocdk-experiment/assert/package.json index f7897e0d5f9bd..1c56ccf720d75 100644 --- a/packages/@monocdk-experiment/assert/package.json +++ b/packages/@monocdk-experiment/assert/package.json @@ -39,7 +39,7 @@ "devDependencies": { "@monocdk-experiment/rewrite-imports": "0.0.0", "@types/jest": "^26.0.15", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "cdk-build-tools": "0.0.0", "constructs": "^3.2.0", "jest": "^26.6.3", diff --git a/packages/@monocdk-experiment/rewrite-imports/package.json b/packages/@monocdk-experiment/rewrite-imports/package.json index f7aa681b86f4a..b68d68970af52 100644 --- a/packages/@monocdk-experiment/rewrite-imports/package.json +++ b/packages/@monocdk-experiment/rewrite-imports/package.json @@ -38,7 +38,7 @@ "devDependencies": { "@types/glob": "^7.1.3", "@types/jest": "^26.0.15", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "cdk-build-tools": "0.0.0", "pkglint": "0.0.0" }, diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 27e2540bce14f..b8cbe431156b0 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -146,7 +146,6 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", - "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -212,7 +211,6 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", - "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -241,7 +239,6 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-ses-actions": "0.0.0", - "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", @@ -265,7 +262,7 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "@types/fs-extra": "^8.1.1", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "cdk-build-tools": "0.0.0", "constructs": "^3.2.0", "fs-extra": "^9.0.1", diff --git a/packages/aws-cdk/.eslintrc.js b/packages/aws-cdk/.eslintrc.js index b5e0934b9d544..463cac21e7e1d 100644 --- a/packages/aws-cdk/.eslintrc.js +++ b/packages/aws-cdk/.eslintrc.js @@ -1,4 +1,4 @@ const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.ignorePatterns.push('lib/init-templates/**/typescript/**/*.ts'); +baseConfig.ignorePatterns.push('lib/init-templates/*/typescript/**/*.ts'); baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; module.exports = baseConfig; diff --git a/packages/aws-cdk/.npmignore b/packages/aws-cdk/.npmignore index c9307723524b0..64b361e8e8b52 100644 --- a/packages/aws-cdk/.npmignore +++ b/packages/aws-cdk/.npmignore @@ -11,19 +11,19 @@ dist .LAST_BUILD *.snk +!lib/init-templates/*/*/tsconfig.json !test/integ/cli/**/*.js !test/integ/run-wrappers/dist *.tsbuildinfo -jest.config.js tsconfig.json -.eslintrc.js # init templates include default tsconfig.json files which we need !lib/init-templates/**/tsconfig.json +.eslintrc.js +jest.config.js !lib/init-templates/**/jest.config.js - !test/integ/cli/jest.config.js !test/integ/cli-regression-patches/**/* @@ -31,4 +31,4 @@ tsconfig.json # exclude cdk artifacts **/cdk.out -junit.xml +junit.xml \ No newline at end of file diff --git a/packages/aws-cdk/CONTRIBUTING.md b/packages/aws-cdk/CONTRIBUTING.md index 8df338dad6049..f0839777aecc0 100644 --- a/packages/aws-cdk/CONTRIBUTING.md +++ b/packages/aws-cdk/CONTRIBUTING.md @@ -58,9 +58,6 @@ than one test will run at a time in that region. If `AWS_REGIONS` is not set, all tests will sequentially run in the one region set in `AWS_REGION`. -Run with `env INTEG_NO_CLEAN=1` to forego cleaning up the temporary directory, -in order to be able to debug 'cdk synth' output. - ### CLI integration tests CLI tests will exercise a number of common CLI scenarios, and deploy actual diff --git a/packages/aws-cdk/bin/cdk.ts b/packages/aws-cdk/bin/cdk.ts index e305da55164e5..bb87342478f98 100644 --- a/packages/aws-cdk/bin/cdk.ts +++ b/packages/aws-cdk/bin/cdk.ts @@ -37,7 +37,7 @@ async function parseCommandLineArguments() { // // ./prog --arg one --arg two position => will parse to { arg: ['one', 'two'], _: ['positional'] }. - const initTemplateLanuages = await availableInitLanguages(); + const initTemplateLanuages = await availableInitLanguages; return yargs .env('CDK') .usage('Usage: cdk -a COMMAND') @@ -46,7 +46,6 @@ async function parseCommandLineArguments() { .option('plugin', { type: 'array', alias: 'p', desc: 'Name or path of a node package that extend the CDK features. Can be specified multiple times', nargs: 1 }) .option('trace', { type: 'boolean', desc: 'Print trace for stack warnings' }) .option('strict', { type: 'boolean', desc: 'Do not construct stacks with warnings' }) - .option('lookups', { type: 'boolean', desc: 'Perform context lookups (synthesis fails if this is disabled and context lookups need to be performed)', default: true }) .option('ignore-errors', { type: 'boolean', default: false, desc: 'Ignores synthesis errors, which will likely produce an invalid output' }) .option('json', { type: 'boolean', alias: 'j', desc: 'Use JSON output instead of YAML when templates are printed to STDOUT', default: false }) .option('verbose', { type: 'boolean', alias: 'v', desc: 'Show debug logs (specify multiple times to increase verbosity)', default: false }) diff --git a/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts b/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts index 3a454177469f0..9f3e32ddb2389 100644 --- a/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts +++ b/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts @@ -66,16 +66,9 @@ export class CloudExecutable { while (true) { const assembly = await this.props.synthesizer(this.props.sdkProvider, this.props.configuration); - if (assembly.manifest.missing && assembly.manifest.missing.length > 0) { + if (assembly.manifest.missing) { const missingKeys = missingContextKeys(assembly.manifest.missing); - if (!this.canLookup) { - throw new Error( - 'Context lookups have been disabled. ' - + 'Make sure all necessary context is already in \'cdk.context.json\' by running \'cdk synth\' on a machine with sufficient AWS credentials and committing the result. ' - + `Missing context keys: '${Array.from(missingKeys).join(', ')}'`); - } - let tryLookup = true; if (previouslyMissingKeys && setsEqual(missingKeys, previouslyMissingKeys)) { debug('Not making progress trying to resolve environmental context. Giving up.'); @@ -169,10 +162,6 @@ export class CloudExecutable { await fs.writeFile(stack.templateFullPath, JSON.stringify(stack.template, undefined, 2), { encoding: 'utf-8' }); } } - - private get canLookup() { - return !!(this.props.configuration.settings.get(['lookups']) ?? true); - } } /** diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/app/csharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/app/csharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/README.md b/packages/aws-cdk/lib/init-templates/app/csharp/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/README.md rename to packages/aws-cdk/lib/init-templates/app/csharp/README.md diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/app/csharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/app/csharp/add-project.hook.ts index 37b1fe6ad3e5f..c839c1e01db08 100644 --- a/packages/aws-cdk/lib/init-templates/v1/app/csharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/app/csharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../../init'; +import { InvokeHook } from '../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/app/csharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/app/csharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj rename to packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs rename to packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs rename to packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs diff --git a/packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/csharp/src/%name.PascalCased%/Program.template.cs rename to packages/aws-cdk/lib/init-templates/app/csharp/src/%name.PascalCased%/Program.template.cs diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/app/fsharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/app/fsharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/README.md b/packages/aws-cdk/lib/init-templates/app/fsharp/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/README.md rename to packages/aws-cdk/lib/init-templates/app/fsharp/README.md diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/app/fsharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/app/fsharp/add-project.hook.ts index b9b091fa35ff1..efeed98d57ee2 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/app/fsharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../../init'; +import { InvokeHook } from '../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/app/fsharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/app/fsharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj rename to packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs rename to packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/fsharp/src/%name.PascalCased%/Program.template.fs rename to packages/aws-cdk/lib/init-templates/app/fsharp/src/%name.PascalCased%/Program.template.fs diff --git a/packages/aws-cdk/lib/init-templates/v1/app/info.json b/packages/aws-cdk/lib/init-templates/app/info.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/info.json rename to packages/aws-cdk/lib/init-templates/app/info.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/app/java/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/.template.gitignore rename to packages/aws-cdk/lib/init-templates/app/java/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/README.md b/packages/aws-cdk/lib/init-templates/app/java/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/README.md rename to packages/aws-cdk/lib/init-templates/app/java/README.md diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/cdk.json b/packages/aws-cdk/lib/init-templates/app/java/cdk.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/cdk.json rename to packages/aws-cdk/lib/init-templates/app/java/cdk.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/app/java/pom.template.xml similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/pom.template.xml rename to packages/aws-cdk/lib/init-templates/app/java/pom.template.xml diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java rename to packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java rename to packages/aws-cdk/lib/init-templates/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java diff --git a/packages/aws-cdk/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java b/packages/aws-cdk/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java rename to packages/aws-cdk/lib/init-templates/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/app/javascript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/app/javascript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/app/javascript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/app/javascript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/README.md b/packages/aws-cdk/lib/init-templates/app/javascript/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/README.md rename to packages/aws-cdk/lib/init-templates/app/javascript/README.md diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/app/javascript/bin/%name%.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/bin/%name%.template.js rename to packages/aws-cdk/lib/init-templates/app/javascript/bin/%name%.template.js diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/app/javascript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/app/javascript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/app/javascript/lib/%name%-stack.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/lib/%name%-stack.template.js rename to packages/aws-cdk/lib/init-templates/app/javascript/lib/%name%-stack.template.js diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/app/javascript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/package.template.json rename to packages/aws-cdk/lib/init-templates/app/javascript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/app/javascript/test/%name%.test.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/javascript/test/%name%.test.template.js rename to packages/aws-cdk/lib/init-templates/app/javascript/test/%name%.test.template.js diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py rename to packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/%name.PythonModule%/__init__.py rename to packages/aws-cdk/lib/init-templates/app/python/%name.PythonModule%/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/app/python/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore rename to packages/aws-cdk/lib/init-templates/app/python/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/README.template.md b/packages/aws-cdk/lib/init-templates/app/python/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/README.template.md rename to packages/aws-cdk/lib/init-templates/app/python/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/app.template.py b/packages/aws-cdk/lib/init-templates/app/python/app.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/app.template.py rename to packages/aws-cdk/lib/init-templates/app/python/app.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/app/python/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/cdk.template.json rename to packages/aws-cdk/lib/init-templates/app/python/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/app/python/requirements.txt similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/requirements.txt rename to packages/aws-cdk/lib/init-templates/app/python/requirements.txt diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/app/python/setup.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/setup.template.py rename to packages/aws-cdk/lib/init-templates/app/python/setup.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/source.bat b/packages/aws-cdk/lib/init-templates/app/python/source.bat similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/python/source.bat rename to packages/aws-cdk/lib/init-templates/app/python/source.bat diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/app/typescript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/app/typescript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/app/typescript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/app/typescript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/README.md b/packages/aws-cdk/lib/init-templates/app/typescript/README.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/README.md rename to packages/aws-cdk/lib/init-templates/app/typescript/README.md diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/app/typescript/bin/%name%.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/bin/%name%.template.ts rename to packages/aws-cdk/lib/init-templates/app/typescript/bin/%name%.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/app/typescript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/app/typescript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/app/typescript/jest.config.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/jest.config.js rename to packages/aws-cdk/lib/init-templates/app/typescript/jest.config.js diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/app/typescript/lib/%name%-stack.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/lib/%name%-stack.template.ts rename to packages/aws-cdk/lib/init-templates/app/typescript/lib/%name%-stack.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/app/typescript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/package.template.json rename to packages/aws-cdk/lib/init-templates/app/typescript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/app/typescript/test/%name%.test.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/test/%name%.test.template.ts rename to packages/aws-cdk/lib/init-templates/app/typescript/test/%name%.test.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/app/typescript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/app/typescript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/app/typescript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/info.json b/packages/aws-cdk/lib/init-templates/lib/info.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/info.json rename to packages/aws-cdk/lib/init-templates/lib/info.json diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/lib/typescript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/lib/typescript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/lib/typescript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/lib/typescript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/lib/typescript/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/README.template.md rename to packages/aws-cdk/lib/init-templates/lib/typescript/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/lib/typescript/jest.config.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/jest.config.js rename to packages/aws-cdk/lib/init-templates/lib/typescript/jest.config.js diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/lib/index.template.ts b/packages/aws-cdk/lib/init-templates/lib/typescript/lib/index.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/lib/index.template.ts rename to packages/aws-cdk/lib/init-templates/lib/typescript/lib/index.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/lib/typescript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/package.template.json rename to packages/aws-cdk/lib/init-templates/lib/typescript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/lib/typescript/test/%name%.test.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/test/%name%.test.template.ts rename to packages/aws-cdk/lib/init-templates/lib/typescript/test/%name%.test.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/lib/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/lib/typescript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/lib/typescript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/lib/typescript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/sample-app/csharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/README.template.md b/packages/aws-cdk/lib/init-templates/sample-app/csharp/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/README.template.md rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/sample-app/csharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/add-project.hook.ts index 37b1fe6ad3e5f..c839c1e01db08 100644 --- a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/sample-app/csharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../../init'; +import { InvokeHook } from '../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/sample-app/csharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/csharp/src/%name.PascalCased%/Program.template.cs rename to packages/aws-cdk/lib/init-templates/sample-app/csharp/src/%name.PascalCased%/Program.template.cs diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/.template.gitignore rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/README.template.md b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/README.template.md rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/add-project.hook.ts similarity index 95% rename from packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/add-project.hook.ts index b9b091fa35ff1..efeed98d57ee2 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/add-project.hook.ts +++ b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/add-project.hook.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import * as path from 'path'; -import { InvokeHook } from '../../../../init'; +import { InvokeHook } from '../../../init'; export const invoke: InvokeHook = async (targetDirectory: string) => { const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/cdk.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%.template.sln rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%.template.sln diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs rename to packages/aws-cdk/lib/init-templates/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/info.json b/packages/aws-cdk/lib/init-templates/sample-app/info.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/info.json rename to packages/aws-cdk/lib/init-templates/sample-app/info.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/sample-app/java/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/.template.gitignore rename to packages/aws-cdk/lib/init-templates/sample-app/java/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/README.template.md b/packages/aws-cdk/lib/init-templates/sample-app/java/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/README.template.md rename to packages/aws-cdk/lib/init-templates/sample-app/java/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/cdk.json b/packages/aws-cdk/lib/init-templates/sample-app/java/cdk.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/cdk.json rename to packages/aws-cdk/lib/init-templates/sample-app/java/cdk.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/sample-app/java/pom.template.xml similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/pom.template.xml rename to packages/aws-cdk/lib/init-templates/sample-app/java/pom.template.xml diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java rename to packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java rename to packages/aws-cdk/lib/init-templates/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java b/packages/aws-cdk/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java rename to packages/aws-cdk/lib/init-templates/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/README.template.md b/packages/aws-cdk/lib/init-templates/sample-app/javascript/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/README.template.md rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/sample-app/javascript/bin/%name%.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/bin/%name%.template.js rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/bin/%name%.template.js diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/sample-app/javascript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/lib/%name%-stack.template.js rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/lib/%name%-stack.template.js diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/sample-app/javascript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/package.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/sample-app/javascript/test/%name%.test.template.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/test/%name%.test.template.js rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/test/%name%.test.template.js diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/tsconfig.json b/packages/aws-cdk/lib/init-templates/sample-app/javascript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/javascript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/sample-app/javascript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/%name.PythonModule%/__init__.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/%name.PythonModule%/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/sample-app/python/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/.template.gitignore rename to packages/aws-cdk/lib/init-templates/sample-app/python/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/README.template.md b/packages/aws-cdk/lib/init-templates/sample-app/python/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/README.template.md rename to packages/aws-cdk/lib/init-templates/sample-app/python/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/app.template.py b/packages/aws-cdk/lib/init-templates/sample-app/python/app.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/app.template.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/app.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/sample-app/python/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/cdk.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/python/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/sample-app/python/requirements.txt similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/requirements.txt rename to packages/aws-cdk/lib/init-templates/sample-app/python/requirements.txt diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/sample-app/python/setup.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/setup.template.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/setup.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/source.bat b/packages/aws-cdk/lib/init-templates/sample-app/python/source.bat similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/source.bat rename to packages/aws-cdk/lib/init-templates/sample-app/python/source.bat diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/__init__.py b/packages/aws-cdk/lib/init-templates/sample-app/python/tests/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/__init__.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/tests/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/__init__.py b/packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/__init__.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/__init__.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/__init__.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py rename to packages/aws-cdk/lib/init-templates/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.gitignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.gitignore rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.gitignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.npmignore similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/.template.npmignore rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/.template.npmignore diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/sample-app/typescript/README.template.md similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/README.template.md rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/README.template.md diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/sample-app/typescript/bin/%name%.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/bin/%name%.template.ts rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/bin/%name%.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/sample-app/typescript/cdk.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/cdk.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/cdk.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/sample-app/typescript/jest.config.js similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/jest.config.js rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/jest.config.js diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/lib/%name%-stack.template.ts rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/lib/%name%-stack.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/sample-app/typescript/package.template.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/package.template.json rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/package.template.json diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/test/%name%.test.template.ts rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/test/%name%.test.template.ts diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/sample-app/typescript/tsconfig.json similarity index 100% rename from packages/aws-cdk/lib/init-templates/v1/sample-app/typescript/tsconfig.json rename to packages/aws-cdk/lib/init-templates/sample-app/typescript/tsconfig.json diff --git a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts deleted file mode 100644 index b9b091fa35ff1..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v1/app/fsharp/add-project.hook.ts +++ /dev/null @@ -1,33 +0,0 @@ -import * as child_process from 'child_process'; -import * as path from 'path'; -import { InvokeHook } from '../../../../init'; - -export const invoke: InvokeHook = async (targetDirectory: string) => { - const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); - const fsprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.fsproj'); - - const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', fsprojPath], { - // Need this for Windows where we want .cmd and .bat to be found as well. - shell: true, - stdio: ['ignore', 'pipe', 'inherit'], - }); - - await new Promise((resolve, reject) => { - const stdout = new Array(); - - child.stdout.on('data', chunk => { - process.stdout.write(chunk); - stdout.push(chunk); - }); - - child.once('error', reject); - - child.once('exit', code => { - if (code === 0) { - resolve(Buffer.concat(stdout).toString('utf-8')); - } else { - reject(new Error(`Could not add project %name.PascalCased%.fsproj to solution %name.PascalCased%.sln. Error code: ${code}`)); - } - }); - }); -}; diff --git a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts deleted file mode 100644 index b9b091fa35ff1..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v1/sample-app/fsharp/add-project.hook.ts +++ /dev/null @@ -1,33 +0,0 @@ -import * as child_process from 'child_process'; -import * as path from 'path'; -import { InvokeHook } from '../../../../init'; - -export const invoke: InvokeHook = async (targetDirectory: string) => { - const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); - const fsprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.fsproj'); - - const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', fsprojPath], { - // Need this for Windows where we want .cmd and .bat to be found as well. - shell: true, - stdio: ['ignore', 'pipe', 'inherit'], - }); - - await new Promise((resolve, reject) => { - const stdout = new Array(); - - child.stdout.on('data', chunk => { - process.stdout.write(chunk); - stdout.push(chunk); - }); - - child.once('error', reject); - - child.once('exit', code => { - if (code === 0) { - resolve(Buffer.concat(stdout).toString('utf-8')); - } else { - reject(new Error(`Could not add project %name.PascalCased%.fsproj to solution %name.PascalCased%.sln. Error code: ${code}`)); - } - }); - }); -}; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore deleted file mode 100644 index f555633ead8f0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/.template.gitignore +++ /dev/null @@ -1,342 +0,0 @@ -# CDK asset staging directory -.cdk.staging -cdk.out - -# Created by https://www.gitignore.io/api/csharp - -### Csharp ### -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - - -# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md b/packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md deleted file mode 100644 index fee04ca40c848..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Welcome to your CDK C# project! - -This is a blank project for C# development with CDK. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. - -## Useful commands - -* `dotnet build src` compile this app -* `cdk deploy` deploy this stack to your default AWS account/region -* `cdk diff` compare deployed stack with current state -* `cdk synth` emits the synthesized CloudFormation template \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts deleted file mode 100644 index 37b1fe6ad3e5f..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/add-project.hook.ts +++ /dev/null @@ -1,33 +0,0 @@ -import * as child_process from 'child_process'; -import * as path from 'path'; -import { InvokeHook } from '../../../../init'; - -export const invoke: InvokeHook = async (targetDirectory: string) => { - const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); - const csprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.csproj'); - - const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', csprojPath], { - // Need this for Windows where we want .cmd and .bat to be found as well. - shell: true, - stdio: ['ignore', 'pipe', 'inherit'], - }); - - await new Promise((resolve, reject) => { - const stdout = new Array(); - - child.stdout.on('data', chunk => { - process.stdout.write(chunk); - stdout.push(chunk); - }); - - child.once('error', reject); - - child.once('exit', code => { - if (code === 0) { - resolve(Buffer.concat(stdout).toString('utf-8')); - } else { - reject(new Error(`Could not add project %name.PascalCased%.csproj to solution %name.PascalCased%.sln. Error code: ${code}`)); - } - }); - }); -}; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json deleted file mode 100644 index 94c37dee310c0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln deleted file mode 100644 index 2f92ebd9bda92..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%.template.sln +++ /dev/null @@ -1,18 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj deleted file mode 100644 index 0ac3cc0a4c6cb..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - netcoreapp3.1 - - Major - - - - - - - - - - diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs deleted file mode 100644 index 998db3c5335cd..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Amazon.CDK.Lib; - -namespace %name.PascalCased% -{ - public class %name.PascalCased%Stack : Stack - { - internal %name.PascalCased%Stack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) - { - // The code that defines your stack goes here - } - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs deleted file mode 100644 index 26233fcb54b5c..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +++ /dev/null @@ -1 +0,0 @@ -[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Potential Code Quality Issues", "RECS0026:Possible unassigned object created by 'new'", Justification = "Constructs add themselves to the scope in which they are created")] diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs deleted file mode 100644 index 93f1e27a57523..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Amazon.CDK.Lib; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace %name.PascalCased% -{ - sealed class Program - { - public static void Main(string[] args) - { - var app = new App(); - new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); - app.Synth(); - } - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore deleted file mode 100644 index f555633ead8f0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/.template.gitignore +++ /dev/null @@ -1,342 +0,0 @@ -# CDK asset staging directory -.cdk.staging -cdk.out - -# Created by https://www.gitignore.io/api/csharp - -### Csharp ### -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - - -# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md deleted file mode 100644 index 16f13d4596dcf..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/README.md +++ /dev/null @@ -1,18 +0,0 @@ -## Welcome to your CDK F# project! - -This is a blank project for F# development with CDK. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. - -## Useful commands - -* `dotnet build src` compile this app -* `cdk ls` list all stacks in the app -* `cdk synth` emits the synthesized CloudFormation template -* `cdk deploy` deploy this stack to your default AWS account/region -* `cdk diff` compare deployed stack with current state -* `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json deleted file mode 100644 index a08c461d2a2e2..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln deleted file mode 100644 index d73885e1eacb9..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%.template.sln +++ /dev/null @@ -1,18 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj deleted file mode 100644 index 226943c6d3bf7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - Exe - netcoreapp3.1 - - Major - - - - - - - - - - - - - - - diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs deleted file mode 100644 index 40f90dc43d77e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +++ /dev/null @@ -1,8 +0,0 @@ -namespace %name.PascalCased% - -open Amazon.CDK.Lib - -type %name.PascalCased%Stack(scope, id, props) as this = - inherit Stack(scope, id, props) - - // The code that defines your stack goes here diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs deleted file mode 100644 index 4b28d1e03ba9a..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs +++ /dev/null @@ -1,11 +0,0 @@ -open Amazon.CDK.Lib -open %name.PascalCased% - -[] -let main _ = - let app = App(null) - - %name.PascalCased%Stack(app, "%name.PascalCased%Stack", StackProps()) |> ignore - - app.Synth() |> ignore - 0 diff --git a/packages/aws-cdk/lib/init-templates/v2/app/info.json b/packages/aws-cdk/lib/init-templates/v2/app/info.json deleted file mode 100644 index 1a96dac2b1103..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/info.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "Template for a CDK Application", - "aliases": ["application", "default"] -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore deleted file mode 100644 index 1db21f162937f..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/.template.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -.classpath.txt -target -.classpath -.project -.idea -.settings -.vscode -*.iml - -# CDK asset staging directory -.cdk.staging -cdk.out - diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/README.md b/packages/aws-cdk/lib/init-templates/v2/app/java/README.md deleted file mode 100644 index 6f46c4de8c441..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Welcome to your CDK Java project! - -This is a blank project for Java development with CDK. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -It is a [Maven](https://maven.apache.org/) based project, so you can open this project with any Maven compatible Java IDE to build and run tests. - -## Useful commands - - * `mvn package` compile and run tests - * `cdk ls` list all stacks in the app - * `cdk synth` emits the synthesized CloudFormation template - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json b/packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json deleted file mode 100644 index b112918622f63..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/cdk.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "mvn -e -q compile exec:java" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml deleted file mode 100644 index efc6616ae82a0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - - com.myorg - %name% - 0.1 - - - UTF-8 - %cdk-version% - 5.7.0 - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - - org.codehaus.mojo - exec-maven-plugin - 3.0.0 - - com.myorg.%name.PascalCased%App - - - - - - - - - software.amazon.awscdk - lib - ${cdk.version} - - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - - org.assertj - assertj-core - 3.18.0 - test - - - diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java deleted file mode 100644 index 2574c970d3992..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.lib.App; - -import java.util.Arrays; - -public class %name.PascalCased%App { - public static void main(final String[] args) { - App app = new App(); - - new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); - - app.synth(); - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java deleted file mode 100644 index dd5dce86a5bb1..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.lib.Construct; -import software.amazon.awscdk.lib.Stack; -import software.amazon.awscdk.lib.StackProps; - -public class %name.PascalCased%Stack extends Stack { - public %name.PascalCased%Stack(final Construct scope, final String id) { - this(scope, id, null); - } - - public %name.PascalCased%Stack(final Construct scope, final String id, final StackProps props) { - super(scope, id, props); - - // The code that defines your stack goes here - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java deleted file mode 100644 index 724dedacf5dc2..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.lib.App; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; - -import java.io.IOException; - -import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; - -public class %name.PascalCased%Test { - private final static ObjectMapper JSON = - new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true); - - @Test - public void testStack() throws IOException { - App app = new App(); - %name.PascalCased%Stack stack = new %name.PascalCased%Stack(app, "test"); - - // synthesize the stack to a CloudFormation template and compare against - // a checked-in JSON file. - JsonNode actual = JSON.valueToTree(app.synth().getStackArtifact(stack.getArtifactId()).getTemplate()); - - assertThat(new ObjectMapper().createObjectNode()).isEqualTo(actual); - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore deleted file mode 100644 index a2da1bef05b07..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules - -# CDK asset staging directory -.cdk.staging -cdk.out - -# Parcel default cache directory -.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore deleted file mode 100644 index 5de422a0b42a0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/.template.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -# CDK asset staging directory -.cdk.staging -cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md b/packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md deleted file mode 100644 index e3e563e115404..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Welcome to your CDK JavaScript project! - -This is a blank project for JavaScript development with CDK. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. The build step is not required when using JavaScript. - -## Useful commands - - * `npm run test` perform the jest unit tests - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js deleted file mode 100644 index 637cb35435106..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/bin/%name%.template.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node - -const cdk = require('aws-cdk-lib'); -const { %name.PascalCased%Stack } = require('../lib/%name%-stack'); - -const app = new cdk.App(); -new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json deleted file mode 100644 index ca1d40ed37e2d..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "node bin/%name%.js" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js deleted file mode 100644 index e8916db57ad71..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/lib/%name%-stack.template.js +++ /dev/null @@ -1,17 +0,0 @@ -const cdk = require('aws-cdk-lib'); - -class %name.PascalCased%Stack extends cdk.Stack { - /** - * - * @param {cdk.Construct} scope - * @param {string} id - * @param {cdk.StackProps=} props - */ - constructor(scope, id, props) { - super(scope, id, props); - - // The code that defines your stack goes here - } -} - -module.exports = { %name.PascalCased%Stack } diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json deleted file mode 100644 index 165f100d82429..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/package.template.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "%name%", - "version": "0.1.0", - "bin": { - "%name%": "bin/%name%.js" - }, - "scripts": { - "build": "echo \"The build step is not required when using JavaScript!\" && exit 0", - "cdk": "cdk", - "test": "jest" - }, - "devDependencies": { - "aws-cdk": "%cdk-version%", - "jest": "^26.4.2" - }, - "dependencies": { - "aws-cdk-lib": "%cdk-version%", - "constructs": "^3.0.4" - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js deleted file mode 100644 index e662bff225941..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/javascript/test/%name%.test.template.js +++ /dev/null @@ -1,11 +0,0 @@ -const cdk = require('aws-cdk-lib'); -const %name.PascalCased% = require('../lib/%name%-stack'); - -test('Empty Stack', () => { - const app = new cdk.App(); - // WHEN - const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); - // THEN - const actual = app.synth().getStackArtifact(stack.artifactId).template; - expect(actual).toEqual({}); -}); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py deleted file mode 100644 index 40bad7e3b032d..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +++ /dev/null @@ -1,9 +0,0 @@ -import aws_cdk_lib as core - - -class %name.PascalCased%Stack(core.Stack): - - def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None: - super().__init__(scope, construct_id, **kwargs) - - # The code that defines your stack goes here diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/__init__.py deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore deleted file mode 100644 index 383cdd5040f7e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/.template.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -*.swp -package-lock.json -__pycache__ -.pytest_cache -.env -*.egg-info - -# CDK asset staging directory -.cdk.staging -cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md b/packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md deleted file mode 100644 index ecb028bfa951e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/README.template.md +++ /dev/null @@ -1,58 +0,0 @@ - -# Welcome to your CDK Python project! - -This is a blank project for Python development with CDK. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -This project is set up like a standard Python project. The initialization -process also creates a virtualenv within this project, stored under the `.venv` -directory. To create the virtualenv it assumes that there is a `python3` -(or `python` for Windows) executable in your path with access to the `venv` -package. If for any reason the automatic creation of the virtualenv fails, -you can create the virtualenv manually. - -To manually create a virtualenv on MacOS and Linux: - -``` -$ %python-executable% -m venv .venv -``` - -After the init process completes and the virtualenv is created, you can use the following -step to activate your virtualenv. - -``` -$ source .venv/bin/activate -``` - -If you are a Windows platform, you would activate the virtualenv like this: - -``` -% .venv\Scripts\activate.bat -``` - -Once the virtualenv is activated, you can install the required dependencies. - -``` -$ pip install -r requirements.txt -``` - -At this point you can now synthesize the CloudFormation template for this code. - -``` -$ cdk synth -``` - -To add additional dependencies, for example other CDK libraries, just add -them to your `setup.py` file and rerun the `pip install -r requirements.txt` -command. - -## Useful commands - - * `cdk ls` list all stacks in the app - * `cdk synth` emits the synthesized CloudFormation template - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py deleted file mode 100644 index a1dd331433422..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import aws_cdk_lib as core - -from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack - - -app = core.App() -%name.PascalCased%Stack(app, "%name.StackName%") - -app.synth() diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json deleted file mode 100644 index d7293493c4415..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "%python-executable% app.py" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt deleted file mode 100644 index d6e1198b1ab1f..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/requirements.txt +++ /dev/null @@ -1 +0,0 @@ --e . diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py deleted file mode 100644 index 4aadde6ecede7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py +++ /dev/null @@ -1,45 +0,0 @@ -import setuptools - - -with open("README.md") as fp: - long_description = fp.read() - - -setuptools.setup( - name="%name.PythonModule%", - version="0.0.1", - - description="An empty CDK Python app", - long_description=long_description, - long_description_content_type="text/markdown", - - author="author", - - package_dir={"": "%name.PythonModule%"}, - packages=setuptools.find_packages(where="%name.PythonModule%"), - - install_requires=[ - "aws-cdk-lib==%cdk-version%", - ], - - python_requires=">=3.6", - - classifiers=[ - "Development Status :: 4 - Beta", - - "Intended Audience :: Developers", - - "License :: OSI Approved :: Apache Software License", - - "Programming Language :: JavaScript", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - - "Topic :: Software Development :: Code Generators", - "Topic :: Utilities", - - "Typing :: Typed", - ], -) diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/source.bat b/packages/aws-cdk/lib/init-templates/v2/app/python/source.bat deleted file mode 100644 index 9e1a83442abd7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/source.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -rem The sole purpose of this script is to make the command -rem -rem source .venv/bin/activate -rem -rem (which activates a Python virtualenv on Linux or Mac OS X) work on Windows. -rem On Windows, this command just runs this batch file (the argument is ignored). -rem -rem Now we don't need to document a Windows command for activating a virtualenv. - -echo Executing .venv\Scripts\activate.bat for you -.venv\Scripts\activate.bat diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore deleted file mode 100644 index 305c7fbcc4d89..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*.js -!jest.config.js -*.d.ts -node_modules - -# CDK asset staging directory -.cdk.staging -cdk.out - -# Parcel default cache directory -.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore deleted file mode 100644 index c1d6d45dcf388..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/.template.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -*.ts -!*.d.ts - -# CDK asset staging directory -.cdk.staging -cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md b/packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md deleted file mode 100644 index 3247665185ed7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Welcome to your CDK TypeScript project! - -This is a blank project for TypeScript development with CDK. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -## Useful commands - - * `npm run build` compile typescript to js - * `npm run watch` watch for changes and compile - * `npm run test` perform the jest unit tests - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts deleted file mode 100644 index 2a54cb5615400..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/bin/%name%.template.ts +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -import 'source-map-support/register'; -import * as cdk from 'aws-cdk-lib'; -import { %name.PascalCased%Stack } from '../lib/%name%-stack'; - -const app = new cdk.App(); -new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json deleted file mode 100644 index 4b132c728abd7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "npx ts-node --prefer-ts-exts bin/%name%.ts" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js deleted file mode 100644 index 772f974903b79..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - roots: ['/test'], - testMatch: ['**/*.test.ts'], - transform: { - '^.+\\.tsx?$': 'ts-jest' - } -}; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts deleted file mode 100644 index e952c5e6e2488..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/lib/%name%-stack.template.ts +++ /dev/null @@ -1,9 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; - -export class %name.PascalCased%Stack extends cdk.Stack { - constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { - super(scope, id, props); - - // The code that defines your stack goes here - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json deleted file mode 100644 index c71e1aea5f5ae..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/package.template.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "%name%", - "version": "0.1.0", - "bin": { - "%name%": "bin/%name%.js" - }, - "scripts": { - "build": "tsc", - "watch": "tsc -w", - "test": "jest", - "cdk": "cdk" - }, - "devDependencies": { - "@types/jest": "^26.0.10", - "@types/node": "10.17.27", - "jest": "^26.4.2", - "ts-jest": "^26.2.0", - "aws-cdk": "%cdk-version%", - "ts-node": "^9.0.0", - "typescript": "~3.9.7" - }, - "dependencies": { - "aws-cdk-lib": "%cdk-version%", - "constructs": "^3.0.4", - "source-map-support": "^0.5.16" - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts deleted file mode 100644 index 6baa631335298..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/test/%name%.test.template.ts +++ /dev/null @@ -1,11 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; -import * as %name.PascalCased% from '../lib/%name%-stack'; - -test('Empty Stack', () => { - const app = new cdk.App(); - // WHEN - const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); - // THEN - const actual = app.synth().getStackArtifact(stack.artifactId).template; - expect(actual).toEqual({}); -}); diff --git a/packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json deleted file mode 100644 index ec75123ce6554..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/app/typescript/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2018", - "module": "commonjs", - "lib": ["es2018"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "inlineSourceMap": true, - "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization": false, - "typeRoots": ["./node_modules/@types"] - }, - "exclude": ["cdk.out"] -} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/info.json b/packages/aws-cdk/lib/init-templates/v2/lib/info.json deleted file mode 100644 index ccc35fd2fe3fe..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/info.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "Template for a CDK Construct Library", - "aliases": "library" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore deleted file mode 100644 index 305c7fbcc4d89..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*.js -!jest.config.js -*.d.ts -node_modules - -# CDK asset staging directory -.cdk.staging -cdk.out - -# Parcel default cache directory -.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore deleted file mode 100644 index c1d6d45dcf388..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/.template.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -*.ts -!*.d.ts - -# CDK asset staging directory -.cdk.staging -cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md deleted file mode 100644 index 5c6e0f6d4d97c..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/README.template.md +++ /dev/null @@ -1,12 +0,0 @@ -# Welcome to your CDK TypeScript Construct Library project! - -You should explore the contents of this project. It demonstrates a CDK Construct Library that includes a construct (`%name.PascalCased%`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The construct defines an interface (`%name.PascalCased%Props`) to configure the visibility timeout of the queue. - -## Useful commands - - * `npm run build` compile typescript to js - * `npm run watch` watch for changes and compile - * `npm run test` perform the jest unit tests \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js deleted file mode 100644 index 772f974903b79..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - roots: ['/test'], - testMatch: ['**/*.test.ts'], - transform: { - '^.+\\.tsx?$': 'ts-jest' - } -}; diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts deleted file mode 100644 index ad0b0de54569b..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/lib/index.template.ts +++ /dev/null @@ -1,14 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; - -export interface %name.PascalCased%Props { - // Define construct properties here -} - -export class %name.PascalCased% extends cdk.Construct { - - constructor(scope: cdk.Construct, id: string, props: %name.PascalCased%Props = {}) { - super(scope, id); - - // Define construct contents here - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json deleted file mode 100644 index f255ef76f1fb9..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/package.template.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "%name%", - "version": "0.1.0", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "scripts": { - "build": "tsc", - "watch": "tsc -w", - "test": "jest" - }, - "devDependencies": { - "@types/jest": "^26.0.10", - "@types/node": "10.17.27", - "jest": "^26.4.2", - "ts-jest": "^26.2.0", - "typescript": "~3.9.7" - }, - "peerDependencies": { - "aws-cdk-lib": "%cdk-version%", - "constructs": "^3.0.4" - }, - "dependencies": { - "aws-cdk-lib": "%cdk-version%", - "constructs": "^3.0.4" - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts deleted file mode 100644 index 924869ad24bf7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/test/%name%.test.template.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; -import * as %name.PascalCased% from '../lib/index'; - -test('Empty Stack', () => { - const app = new cdk.App(); - const stack = new cdk.Stack(app, "TestStack"); - // WHEN - new %name.PascalCased%.%name.PascalCased%(stack, 'MyTestConstruct'); - // THEN - const actual = app.synth().getStackArtifact(stack.artifactId).template; - expect(actual).toEqual({}); -}); diff --git a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json deleted file mode 100644 index bb250aba2e496..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/lib/typescript/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target":"ES2018", - "module": "commonjs", - "lib": ["es2018"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "inlineSourceMap": true, - "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization":false, - "typeRoots": ["./node_modules/@types"] - }, - "exclude": ["cdk.out"] -} - diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore deleted file mode 100644 index f555633ead8f0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/.template.gitignore +++ /dev/null @@ -1,342 +0,0 @@ -# CDK asset staging directory -.cdk.staging -cdk.out - -# Created by https://www.gitignore.io/api/csharp - -### Csharp ### -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - - -# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md deleted file mode 100644 index 411d4e653994e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/README.template.md +++ /dev/null @@ -1,19 +0,0 @@ -# Welcome to your CDK C# project! - -You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. - -## Useful commands - -* `dotnet build src` compile this app -* `cdk ls` list all stacks in the app -* `cdk synth` emits the synthesized CloudFormation template -* `cdk deploy` deploy this stack to your default AWS account/region -* `cdk diff` compare deployed stack with current state -* `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts deleted file mode 100644 index 37b1fe6ad3e5f..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/add-project.hook.ts +++ /dev/null @@ -1,33 +0,0 @@ -import * as child_process from 'child_process'; -import * as path from 'path'; -import { InvokeHook } from '../../../../init'; - -export const invoke: InvokeHook = async (targetDirectory: string) => { - const slnPath = path.join(targetDirectory, 'src', '%name.PascalCased%.sln'); - const csprojPath = path.join(targetDirectory, 'src', '%name.PascalCased%', '%name.PascalCased%.csproj'); - - const child = child_process.spawn('dotnet', ['sln', slnPath, 'add', csprojPath], { - // Need this for Windows where we want .cmd and .bat to be found as well. - shell: true, - stdio: ['ignore', 'pipe', 'inherit'], - }); - - await new Promise((resolve, reject) => { - const stdout = new Array(); - - child.stdout.on('data', chunk => { - process.stdout.write(chunk); - stdout.push(chunk); - }); - - child.once('error', reject); - - child.once('exit', code => { - if (code === 0) { - resolve(Buffer.concat(stdout).toString('utf-8')); - } else { - reject(new Error(`Could not add project %name.PascalCased%.csproj to solution %name.PascalCased%.sln. Error code: ${code}`)); - } - }); - }); -}; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json deleted file mode 100644 index 94c37dee310c0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.csproj" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln deleted file mode 100644 index 2f92ebd9bda92..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%.template.sln +++ /dev/null @@ -1,18 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj deleted file mode 100644 index 0ac3cc0a4c6cb..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - Exe - netcoreapp3.1 - - Major - - - - - - - - - - diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs deleted file mode 100644 index db2baa2ca3924..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Amazon.CDK.Lib; -using Amazon.CDK.AWS.SNS; -using Amazon.CDK.AWS.SNS.Subscriptions; -using Amazon.CDK.AWS.SQS; - -namespace %name.PascalCased% -{ - public class %name.PascalCased%Stack : Stack - { - internal %name.PascalCased%Stack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) - { - // The CDK includes built-in constructs for most resource types, such as Queues and Topics. - var queue = new Queue(this, "%name.PascalCased%Queue", new QueueProps - { - VisibilityTimeout = Duration.Seconds(300) - }); - - var topic = new Topic(this, "%name.PascalCased%Topic"); - - topic.AddSubscription(new SqsSubscription(queue)); - } - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs deleted file mode 100644 index 26233fcb54b5c..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/GlobalSuppressions.cs +++ /dev/null @@ -1 +0,0 @@ -[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Potential Code Quality Issues", "RECS0026:Possible unassigned object created by 'new'", Justification = "Constructs add themselves to the scope in which they are created")] diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs deleted file mode 100644 index ce88608d08cfe..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Amazon.CDK.Lib; - -namespace %name.PascalCased% -{ - sealed class Program - { - public static void Main(string[] args) - { - var app = new App(); - new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); - - app.Synth(); - } - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore deleted file mode 100644 index f555633ead8f0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/.template.gitignore +++ /dev/null @@ -1,342 +0,0 @@ -# CDK asset staging directory -.cdk.staging -cdk.out - -# Created by https://www.gitignore.io/api/csharp - -### Csharp ### -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ - -# Local History for Visual Studio -.localhistory/ - - -# End of https://www.gitignore.io/api/csharp \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md deleted file mode 100644 index d1bfcf9a90ccf..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/README.template.md +++ /dev/null @@ -1,20 +0,0 @@ - -# Welcome to your CDK F# project! - -You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -It uses the [.NET Core CLI](https://docs.microsoft.com/dotnet/articles/core/) to compile and execute your project. - -## Useful commands - -* `dotnet build src` compile this app -* `cdk ls` list all stacks in the app -* `cdk synth` emits the synthesized CloudFormation template -* `cdk deploy` deploy this stack to your default AWS account/region -* `cdk diff` compare deployed stack with current state -* `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json deleted file mode 100644 index a08c461d2a2e2..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "dotnet run -p src/%name.PascalCased%/%name.PascalCased%.fsproj" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln deleted file mode 100644 index d73885e1eacb9..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%.template.sln +++ /dev/null @@ -1,18 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26124.0 -MinimumVisualStudioVersion = 15.0.26124.0 -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj deleted file mode 100644 index 226943c6d3bf7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%.template.fsproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - Exe - netcoreapp3.1 - - Major - - - - - - - - - - - - - - - diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs deleted file mode 100644 index fb527366dfb7b..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +++ /dev/null @@ -1,14 +0,0 @@ -namespace %name.PascalCased% - -open Amazon.CDK.Lib -open Amazon.CDK.AWS.SNS -open Amazon.CDK.AWS.SNS.Subscriptions -open Amazon.CDK.AWS.SQS - -type %name.PascalCased%Stack(scope, id, props) as this = - inherit Stack(scope, id, props) - - let queue = Queue(this, "%name.PascalCased%Queue", QueueProps(VisibilityTimeout = Duration.Seconds(300.))) - - let topic = Topic(this, "%name.PascalCased%Topic") - do topic.AddSubscription(SqsSubscription(queue)) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs deleted file mode 100644 index 4b28d1e03ba9a..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +++ /dev/null @@ -1,11 +0,0 @@ -open Amazon.CDK.Lib -open %name.PascalCased% - -[] -let main _ = - let app = App(null) - - %name.PascalCased%Stack(app, "%name.PascalCased%Stack", StackProps()) |> ignore - - app.Synth() |> ignore - 0 diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/info.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/info.json deleted file mode 100644 index 1451c2576eb63..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/info.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "description": "Example CDK Application with some constructs", - "aliases": ["sample", "example"] -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore deleted file mode 100644 index 1db21f162937f..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/.template.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -.classpath.txt -target -.classpath -.project -.idea -.settings -.vscode -*.iml - -# CDK asset staging directory -.cdk.staging -cdk.out - diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md deleted file mode 100644 index ecbdec164e29e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/README.template.md +++ /dev/null @@ -1,19 +0,0 @@ -# Welcome to your CDK Java project! - -You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -It is a [Maven](https://maven.apache.org/) based project, so you can open this project with any Maven compatible Java IDE to build and run tests. - -## Useful commands - - * `mvn package` compile and run tests - * `cdk ls` list all stacks in the app - * `cdk synth` emits the synthesized CloudFormation template - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json deleted file mode 100644 index b112918622f63..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/cdk.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "mvn -e -q compile exec:java" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml deleted file mode 100644 index ea3de05fcc2b3..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - 4.0.0 - com.myorg - %name% - 0.1 - - UTF-8 - %cdk-version% - 5.7.0 - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 1.8 - 1.8 - - - - org.codehaus.mojo - exec-maven-plugin - 3.0.0 - - com.myorg.%name.PascalCased%App - - - - - - - - software.amazon.awscdk - lib - ${cdk.version} - - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - - org.assertj - assertj-core - 3.18.0 - test - - - diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java deleted file mode 100644 index fb3c52db81d4e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.lib.App; - -public final class %name.PascalCased%App { - public static void main(final String[] args) { - App app = new App(); - - new %name.PascalCased%Stack(app, "%name.PascalCased%Stack"); - - app.synth(); - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java deleted file mode 100644 index dcbbdea06e4fc..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.lib.Construct; -import software.amazon.awscdk.lib.Duration; -import software.amazon.awscdk.lib.Stack; -import software.amazon.awscdk.lib.StackProps; -import software.amazon.awscdk.services.sns.Topic; -import software.amazon.awscdk.services.sns.subscriptions.SqsSubscription; -import software.amazon.awscdk.services.sqs.Queue; - -public class %name.PascalCased%Stack extends Stack { - public %name.PascalCased%Stack(final Construct parent, final String id) { - this(parent, id, null); - } - - public %name.PascalCased%Stack(final Construct parent, final String id, final StackProps props) { - super(parent, id, props); - - final Queue queue = Queue.Builder.create(this, "%name.PascalCased%Queue") - .visibilityTimeout(Duration.seconds(300)) - .build(); - - final Topic topic = Topic.Builder.create(this, "%name.PascalCased%Topic") - .displayName("My First Topic Yeah") - .build(); - - topic.addSubscription(new SqsSubscription(queue)); - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java deleted file mode 100644 index 6930c2bcc44a0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.myorg; - -import software.amazon.awscdk.lib.App; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.SerializationFeature; -import java.io.IOException; - -import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; - -public class %name.PascalCased%StackTest { - private final static ObjectMapper JSON = - new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true); - - @Test - public void testStack() throws IOException { - App app = new App(); - %name.PascalCased%Stack stack = new %name.PascalCased%Stack(app, "test"); - - JsonNode actual = JSON.valueToTree(app.synth().getStackArtifact(stack.getArtifactId()).getTemplate()); - - assertThat(actual.toString()) - .contains("AWS::SQS::Queue") - .contains("AWS::SNS::Topic"); - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore deleted file mode 100644 index a2da1bef05b07..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules - -# CDK asset staging directory -.cdk.staging -cdk.out - -# Parcel default cache directory -.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore deleted file mode 100644 index 5de422a0b42a0..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/.template.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -# CDK asset staging directory -.cdk.staging -cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md deleted file mode 100644 index 4963f41f7463e..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/README.template.md +++ /dev/null @@ -1,13 +0,0 @@ -# Welcome to your CDK JavaScript project! - -You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. The build step is not required when using JavaScript. - -## Useful commands - - * `npm run test` perform the jest unit tests - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js deleted file mode 100644 index 0a334a1be0dfe..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/bin/%name%.template.js +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env node -const cdk = require('aws-cdk-lib'); -const { %name.PascalCased%Stack } = require('../lib/%name%-stack'); - -const app = new cdk.App(); -new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json deleted file mode 100644 index ca1d40ed37e2d..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "node bin/%name%.js" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js deleted file mode 100644 index ef2b5c2407ec5..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/lib/%name%-stack.template.js +++ /dev/null @@ -1,25 +0,0 @@ -const cdk = require('aws-cdk-lib'); -const sns = require('aws-cdk-lib/aws-sns'); -const subs = require('aws-cdk-lib/aws-sns-subscriptions'); -const sqs = require('aws-cdk-lib/aws-sqs'); - -class %name.PascalCased%Stack extends cdk.Stack { - /** - * @param {cdk.App} scope - * @param {string} id - * @param {cdk.StackProps=} props - */ - constructor(scope, id, props) { - super(scope, id, props); - - const queue = new sqs.Queue(this, '%name.PascalCased%Queue', { - visibilityTimeout: cdk.Duration.seconds(300) - }); - - const topic = new sns.Topic(this, '%name.PascalCased%Topic'); - - topic.addSubscription(new subs.SqsSubscription(queue)); - } -} - -module.exports = { %name.PascalCased%Stack } diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json deleted file mode 100644 index 165f100d82429..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/package.template.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "%name%", - "version": "0.1.0", - "bin": { - "%name%": "bin/%name%.js" - }, - "scripts": { - "build": "echo \"The build step is not required when using JavaScript!\" && exit 0", - "cdk": "cdk", - "test": "jest" - }, - "devDependencies": { - "aws-cdk": "%cdk-version%", - "jest": "^26.4.2" - }, - "dependencies": { - "aws-cdk-lib": "%cdk-version%", - "constructs": "^3.0.4" - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js deleted file mode 100644 index b741d4045225b..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/test/%name%.test.template.js +++ /dev/null @@ -1,12 +0,0 @@ -const cdk = require('aws-cdk-lib'); -const %name.PascalCased% = require('../lib/%name%-stack'); - -test('SQS Queue and SNS Topic Created', () => { - const app = new cdk.App(); - // WHEN - const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); - // THEN - const actual = JSON.stringify(app.synth().getStackArtifact(stack.artifactId).template); - expect(actual).toContain('AWS::SQS::Queue'); - expect(actual).toContain('AWS::SNS::Topic'); -}); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json deleted file mode 100644 index 28ca8b67c6ea2..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/javascript/tsconfig.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "compilerOptions": { - "target":"ES2018", - "module": "commonjs", - "lib": ["es2016", "es2017.object", "es2017.string"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "inlineSourceMap": true, - "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization":false, - "allowJs": true, - "checkJs": true, - "noEmit": true, - "typeRoots": ["./node_modules/@types"] - }, - "exclude": ["cdk.out"] -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py deleted file mode 100644 index 7629e4361788b..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +++ /dev/null @@ -1,24 +0,0 @@ -import aws_cdk_lib as core -from aws_cdk_lib import ( - aws_iam as iam, - aws_sqs as sqs, - aws_sns as sns, - aws_sns_subscriptions as subs, -) - - -class %name.PascalCased%Stack(core.Stack): - - def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None: - super().__init__(scope, construct_id, **kwargs) - - queue = sqs.Queue( - self, "%name.PascalCased%Queue", - visibility_timeout=core.Duration.seconds(300), - ) - - topic = sns.Topic( - self, "%name.PascalCased%Topic" - ) - - topic.add_subscription(subs.SqsSubscription(queue)) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/__init__.py deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore deleted file mode 100644 index 95f954427c747..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/.template.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -*.swp -package-lock.json -.pytest_cache -*.egg-info - -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# CDK Context & Staging files -.cdk.staging/ -cdk.out/ \ No newline at end of file diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md deleted file mode 100644 index 1775b25f602ae..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/README.template.md +++ /dev/null @@ -1,65 +0,0 @@ - -# Welcome to your CDK Python project! - -You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PythonModule%_stack`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -This project is set up like a standard Python project. The initialization process also creates -a virtualenv within this project, stored under the .venv directory. To create the virtualenv -it assumes that there is a `python3` executable in your path with access to the `venv` package. -If for any reason the automatic creation of the virtualenv fails, you can create the virtualenv -manually once the init process completes. - -To manually create a virtualenv on MacOS and Linux: - -``` -$ %python-executable% -m venv .venv -``` - -After the init process completes and the virtualenv is created, you can use the following -step to activate your virtualenv. - -``` -$ source .venv/bin/activate -``` - -If you are a Windows platform, you would activate the virtualenv like this: - -``` -% .venv\Scripts\activate.bat -``` - -Once the virtualenv is activated, you can install the required dependencies. - -``` -$ pip install -r requirements.txt -``` - -At this point you can now synthesize the CloudFormation template for this code. - -``` -$ cdk synth -``` - -You can now begin exploring the source code, contained in the hello directory. -There is also a very trivial test included that can be run like this: - -``` -$ pytest -``` - -To add additional dependencies, for example other CDK libraries, just add to -your requirements.txt file and rerun the `pip install -r requirements.txt` -command. - -## Useful commands - - * `cdk ls` list all stacks in the app - * `cdk synth` emits the synthesized CloudFormation template - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk docs` open CDK documentation - -Enjoy! diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py deleted file mode 100644 index f53ecf105b8ca..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import aws_cdk_lib as core - -from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack - - -app = core.App() -%name.PascalCased%Stack(app, "%name.StackName%", env={'region': 'us-west-2'}) - -app.synth() diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json deleted file mode 100644 index d7293493c4415..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "%python-executable% app.py" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt deleted file mode 100644 index ae60ed5f14ca8..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ --e . -pytest diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py deleted file mode 100644 index 585578354a190..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py +++ /dev/null @@ -1,45 +0,0 @@ -import setuptools - - -with open("README.md") as fp: - long_description = fp.read() - - -setuptools.setup( - name="%name.PythonModule%", - version="0.0.1", - - description="A sample CDK Python app", - long_description=long_description, - long_description_content_type="text/markdown", - - author="author", - - package_dir={"": "%name.PythonModule%"}, - packages=setuptools.find_packages(where="%name.PythonModule%"), - - install_requires=[ - "aws-cdk-lib==%cdk-version%", - ], - - python_requires=">=3.6", - - classifiers=[ - "Development Status :: 4 - Beta", - - "Intended Audience :: Developers", - - "License :: OSI Approved :: Apache Software License", - - "Programming Language :: JavaScript", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - - "Topic :: Software Development :: Code Generators", - "Topic :: Utilities", - - "Typing :: Typed", - ], -) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat deleted file mode 100644 index 9e1a83442abd7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/source.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -rem The sole purpose of this script is to make the command -rem -rem source .venv/bin/activate -rem -rem (which activates a Python virtualenv on Linux or Mac OS X) work on Windows. -rem On Windows, this command just runs this batch file (the argument is ignored). -rem -rem Now we don't need to document a Windows command for activating a virtualenv. - -echo Executing .venv\Scripts\activate.bat for you -.venv\Scripts\activate.bat diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/__init__.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/__init__.py deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/__init__.py deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py deleted file mode 100644 index 2b7e876b75742..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/tests/unit/test_%name.PythonModule%_stack.template.py +++ /dev/null @@ -1,19 +0,0 @@ -import json -import pytest - -import aws_cdk_lib as core -from %name%.%name.PythonModule%_stack import %name.PascalCased%Stack - - -def get_template(): - app = core.App() - %name.PascalCased%Stack(app, "%name.StackName%") - return json.dumps(app.synth().get_stack("%name.StackName%").template) - - -def test_sqs_queue_created(): - assert("AWS::SQS::Queue" in get_template()) - - -def test_sns_topic_created(): - assert("AWS::SNS::Topic" in get_template()) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore deleted file mode 100644 index 305c7fbcc4d89..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*.js -!jest.config.js -*.d.ts -node_modules - -# CDK asset staging directory -.cdk.staging -cdk.out - -# Parcel default cache directory -.parcel-cache diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore deleted file mode 100644 index c1d6d45dcf388..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/.template.npmignore +++ /dev/null @@ -1,6 +0,0 @@ -*.ts -!*.d.ts - -# CDK asset staging directory -.cdk.staging -cdk.out diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md deleted file mode 100644 index 56b7b636bd523..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/README.template.md +++ /dev/null @@ -1,15 +0,0 @@ -# Welcome to your CDK TypeScript project! - -You should explore the contents of this project. It demonstrates a CDK app with an instance of a stack (`%name.PascalCased%Stack`) -which contains an Amazon SQS queue that is subscribed to an Amazon SNS topic. - -The `cdk.json` file tells the CDK Toolkit how to execute your app. - -## Useful commands - - * `npm run build` compile typescript to js - * `npm run watch` watch for changes and compile - * `npm run test` perform the jest unit tests - * `cdk deploy` deploy this stack to your default AWS account/region - * `cdk diff` compare deployed stack with current state - * `cdk synth` emits the synthesized CloudFormation template diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts deleted file mode 100644 index 2e7f99ba70e8b..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/bin/%name%.template.ts +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env node -import * as cdk from 'aws-cdk-lib'; -import { %name.PascalCased%Stack } from '../lib/%name%-stack'; - -const app = new cdk.App(); -new %name.PascalCased%Stack(app, '%name.PascalCased%Stack'); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json deleted file mode 100644 index 4b132c728abd7..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/cdk.template.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "app": "npx ts-node --prefer-ts-exts bin/%name%.ts" -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js deleted file mode 100644 index 772f974903b79..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - roots: ['/test'], - testMatch: ['**/*.test.ts'], - transform: { - '^.+\\.tsx?$': 'ts-jest' - } -}; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts deleted file mode 100644 index 87f4eb9b549a2..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/lib/%name%-stack.template.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; -import * as sns from 'aws-cdk-lib/aws-sns'; -import * as subs from 'aws-cdk-lib/aws-sns-subscriptions'; -import * as sqs from 'aws-cdk-lib/aws-sqs'; - -export class %name.PascalCased%Stack extends cdk.Stack { - constructor(scope: cdk.App, id: string, props?: cdk.StackProps) { - super(scope, id, props); - - const queue = new sqs.Queue(this, '%name.PascalCased%Queue', { - visibilityTimeout: cdk.Duration.seconds(300) - }); - - const topic = new sns.Topic(this, '%name.PascalCased%Topic'); - - topic.addSubscription(new subs.SqsSubscription(queue)); - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json deleted file mode 100644 index 4b36fa55ec3ad..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/package.template.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "%name%", - "version": "0.1.0", - "bin": { - "%name%": "bin/%name%.js" - }, - "scripts": { - "build": "tsc", - "watch": "tsc -w", - "test": "jest", - "cdk": "cdk" - }, - "devDependencies": { - "aws-cdk": "%cdk-version%", - "@types/jest": "^26.0.10", - "@types/node": "10.17.27", - "jest": "^26.4.2", - "ts-jest": "^26.2.0", - "ts-node": "^9.0.0", - "typescript": "~3.9.7" - }, - "dependencies": { - "aws-cdk-lib": "%cdk-version%", - "constructs": "^3.0.4" - } -} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts deleted file mode 100644 index a563f50309295..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/test/%name%.test.template.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; -import * as %name.PascalCased% from '../lib/%name%-stack'; - -test('SQS Queue and SNS Topic Created', () => { - const app = new cdk.App(); - // WHEN - const stack = new %name.PascalCased%.%name.PascalCased%Stack(app, 'MyTestStack'); - // THEN - const actual = JSON.stringify(app.synth().getStackArtifact(stack.artifactId).template); - expect(actual).toContain('AWS::SQS::Queue'); - expect(actual).toContain('AWS::SNS::Topic'); -}); diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json b/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json deleted file mode 100644 index 03c16d26a637c..0000000000000 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/typescript/tsconfig.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "compilerOptions": { - "target":"ES2018", - "module": "commonjs", - "lib": ["es2018"], - "declaration": true, - "strict": true, - "noImplicitAny": true, - "strictNullChecks": true, - "noImplicitThis": true, - "alwaysStrict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": false, - "inlineSourceMap": true, - "inlineSources": true, - "experimentalDecorators": true, - "strictPropertyInitialization":false, - "typeRoots": ["./node_modules/@types"] - }, - "exclude": ["cdk.out"] -} diff --git a/packages/aws-cdk/lib/init.ts b/packages/aws-cdk/lib/init.ts index f066b6c8fefb8..a40477712f2eb 100644 --- a/packages/aws-cdk/lib/init.ts +++ b/packages/aws-cdk/lib/init.ts @@ -3,10 +3,8 @@ import * as path from 'path'; import * as cxapi from '@aws-cdk/cx-api'; import * as colors from 'colors/safe'; import * as fs from 'fs-extra'; -import * as semver from 'semver'; import { error, print, warning } from './logging'; import { cdkHomeDir } from './util/directories'; -import { versionNumber } from './version'; export type InvokeHook = (targetDirectory: string) => Promise; @@ -16,6 +14,8 @@ const camelCase = require('camelcase'); // eslint-disable-next-line @typescript-eslint/no-require-imports const decamelize = require('decamelize'); +const TEMPLATES_DIR = path.join(__dirname, 'init-templates'); + /** * Initialize a CDK package in the current directory */ @@ -27,7 +27,7 @@ export async function cliInit(type?: string, language?: string, canUseNetwork = type = type || 'default'; // "default" is the default type (and maps to "app") - const template = (await availableInitTemplates()).find(t => t.hasName(type!)); + const template = (await availableInitTemplates).find(t => t.hasName(type!)); if (!template) { await printAvailableTemplates(language); throw new Error(`Unknown init template: ${type}`); @@ -57,8 +57,8 @@ function pythonExecutable() { const INFO_DOT_JSON = 'info.json'; export class InitTemplate { - public static async fromName(templatesDir: string, name: string) { - const basePath = path.join(templatesDir, name); + public static async fromName(name: string) { + const basePath = path.join(TEMPLATES_DIR, name); const languages = (await listDirectory(basePath)).filter(f => f !== INFO_DOT_JSON); const info = await fs.readJson(path.join(basePath, INFO_DOT_JSON)); return new InitTemplate(basePath, name, languages, info); @@ -194,27 +194,18 @@ interface ProjectInfo { readonly name: string; } -function versionedTemplatesDir(): Promise { - return new Promise(async resolve => { - const majorVersion = semver.major(versionNumber()); - resolve(path.join(__dirname, 'init-templates', `v${majorVersion}`)); - }); -} - -export async function availableInitTemplates(): Promise { - return new Promise(async resolve => { - const templatesDir = await versionedTemplatesDir(); - const templateNames = await listDirectory(templatesDir); +export const availableInitTemplates: Promise = + new Promise(async resolve => { + const templateNames = await listDirectory(TEMPLATES_DIR); const templates = new Array(); for (const templateName of templateNames) { - templates.push(await InitTemplate.fromName(templatesDir, templateName)); + templates.push(await InitTemplate.fromName(templateName)); } resolve(templates); }); -} -export async function availableInitLanguages(): Promise { - return new Promise(async resolve => { - const templates = await availableInitTemplates(); +export const availableInitLanguages: Promise = + new Promise(async resolve => { + const templates = await availableInitTemplates; const result = new Set(); for (const template of templates) { for (const language of template.languages) { @@ -223,8 +214,6 @@ export async function availableInitLanguages(): Promise { } resolve([...result]); }); -} - /** * @param dirPath is the directory to be listed. * @returns the list of file or directory names contained in ``dirPath``, excluding any dot-file, and sorted. @@ -237,7 +226,7 @@ async function listDirectory(dirPath: string) { export async function printAvailableTemplates(language?: string) { print('Available templates:'); - for (const template of await availableInitTemplates()) { + for (const template of await availableInitTemplates) { if (language && template.languages.indexOf(language) === -1) { continue; } print(`* ${colors.green(template.name)}: ${template.description}`); const languageArg = language ? colors.bold(language) diff --git a/packages/aws-cdk/lib/settings.ts b/packages/aws-cdk/lib/settings.ts index 0663d021f63d3..86e475c235802 100644 --- a/packages/aws-cdk/lib/settings.ts +++ b/packages/aws-cdk/lib/settings.ts @@ -43,7 +43,6 @@ export type Arguments = { readonly _: [Command, ...string[]]; readonly exclusively?: boolean; readonly STACKS?: string[]; - readonly lookups?: boolean; readonly [name: string]: unknown; }; @@ -246,7 +245,6 @@ export class Settings { output: argv.output, progress: argv.progress, bundlingStacks, - lookups: argv.lookups, }); } diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index e66a321fc2f06..a79504918a893 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -45,10 +45,10 @@ "@types/jest": "^26.0.15", "@types/minimatch": "^3.0.3", "@types/mockery": "^1.4.29", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "@types/promptly": "^3.0.0", "@types/semver": "^7.3.4", - "@types/sinon": "^9.0.9", + "@types/sinon": "^9.0.8", "@types/table": "^5.0.0", "@types/uuid": "^8.3.0", "@types/wrap-ansi": "^3.0.0", @@ -71,7 +71,7 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "archiver": "^5.1.0", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "camelcase": "^6.2.0", "cdk-assets": "0.0.0", "colors": "^1.4.0", @@ -84,7 +84,7 @@ "proxy-agent": "^4.0.0", "semver": "^7.3.2", "source-map-support": "^0.5.19", - "table": "^6.0.4", + "table": "^6.0.3", "uuid": "^8.3.1", "wrap-ansi": "^7.0.0", "yargs": "^16.1.1" diff --git a/packages/aws-cdk/test/api/cloud-executable.test.ts b/packages/aws-cdk/test/api/cloud-executable.test.ts index c1f894e6c758f..3e9dc83948c23 100644 --- a/packages/aws-cdk/test/api/cloud-executable.test.ts +++ b/packages/aws-cdk/test/api/cloud-executable.test.ts @@ -73,25 +73,6 @@ test('stop executing if context providers are not making progress', async () => // THEN: the test finishes normally}); }); -test('fails if lookups are disabled and missing context is synthesized', async () => { - // GIVEN - const cloudExecutable = new MockCloudExecutable({ - stacks: [{ - stackName: 'thestack', - template: { resource: 'noerrorresource' }, - }], - // Always return the same missing keys, synthesis should still finish. - missing: [ - { key: 'abcdef', props: { account: '1324', region: 'us-east-1' }, provider: cxschema.ContextProvider.AVAILABILITY_ZONE_PROVIDER }, - ], - }); - cloudExecutable.configuration.settings.set(['lookups'], false); - - // WHEN - await expect(cloudExecutable.synthesize()).rejects.toThrow(/Context lookups have been disabled/); -}); - - async function testCloudExecutable({ env, versionReporting = true }: { env?: string, versionReporting?: boolean } = {}) { const cloudExec = new MockCloudExecutable({ stacks: [{ diff --git a/packages/aws-cdk/test/init.test.ts b/packages/aws-cdk/test/init.test.ts index 4f2e8e11401f2..9e9ae78784a45 100644 --- a/packages/aws-cdk/test/init.test.ts +++ b/packages/aws-cdk/test/init.test.ts @@ -1,96 +1,79 @@ -/** - * The init templates rely on parsing the current major version to find the correct template directory. - * During tests, the current package version is '0.0.0', rather than a specific version. - * The below mocks the versionNumber to return the major version (and so init template version) specified. - */ -let mockMajorVersion = '1.0.0'; -jest.mock('../lib/version', () => ({ - versionNumber: () => mockMajorVersion, -})); - import * as os from 'os'; import * as path from 'path'; import * as cxapi from '@aws-cdk/cx-api'; import * as fs from 'fs-extra'; import { availableInitTemplates, cliInit } from '../lib/init'; -describe.each(['1', '2'])('v%s tests', (majorVersion) => { - beforeEach(() => { - mockMajorVersion = `${majorVersion}.0.0`; - jest.resetAllMocks(); - }); - - cliTest('create a TypeScript library project', async (workDir) => { - await cliInit('lib', 'typescript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and lib/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'lib'))).toBeTruthy(); - }); - - cliTest('create a TypeScript app project', async (workDir) => { - await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); - }); - - cliTest('create a JavaScript app project', async (workDir) => { - await cliInit('app', 'javascript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, '.git'))).toBeTruthy(); - }); - - cliTest('--generate-only should skip git init', async (workDir) => { - await cliInit('app', 'javascript', false, true, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, '.git'))).toBeFalsy(); - }); - - cliTest('git directory does not throw off the initer!', async (workDir) => { - fs.mkdirSync(path.join(workDir, '.git')); - - await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); - - // Check that package.json and bin/ got created in the current directory - expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); - expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); - }); - - test('verify "future flags" are added to cdk.json', async () => { - // This is a lot to test, and it can be slow-ish, especially when ran with other tests. - jest.setTimeout(30_000); - - for (const templ of await availableInitTemplates()) { - for (const lang of templ.languages) { - await withTempDir(async tmpDir => { - await cliInit(templ.name, lang, - /* canUseNetwork */ false, - /* generateOnly */ true, - tmpDir); - - // ok if template doesn't have a cdk.json file (e.g. the "lib" template) - if (!await fs.pathExists(path.join(tmpDir, 'cdk.json'))) { - return; - } - - const config = await fs.readJson(path.join(tmpDir, 'cdk.json')); - const context = config.context || {}; - for (const [key, expected] of Object.entries(cxapi.FUTURE_FLAGS)) { - const actual = context[key]; - expect(actual).toEqual(expected); - } - }); - } +cliTest('create a TypeScript library project', async (workDir) => { + await cliInit('lib', 'typescript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and lib/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'lib'))).toBeTruthy(); +}); + +cliTest('create a TypeScript app project', async (workDir) => { + await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); +}); + +cliTest('create a JavaScript app project', async (workDir) => { + await cliInit('app', 'javascript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, '.git'))).toBeTruthy(); +}); + +cliTest('--generate-only should skip git init', async (workDir) => { + await cliInit('app', 'javascript', false, true, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, '.git'))).toBeFalsy(); +}); + +cliTest('git directory does not throw off the initer!', async (workDir) => { + fs.mkdirSync(path.join(workDir, '.git')); + + await cliInit('app', 'typescript', false, undefined /* canUseNetwork */, workDir); + + // Check that package.json and bin/ got created in the current directory + expect(await fs.pathExists(path.join(workDir, 'package.json'))).toBeTruthy(); + expect(await fs.pathExists(path.join(workDir, 'bin'))).toBeTruthy(); +}); + +test('verify "future flags" are added to cdk.json', async () => { + // This is a lot to test, and it can be slow-ish, especially when ran with other tests. + jest.setTimeout(30_000); + + for (const templ of await availableInitTemplates) { + for (const lang of templ.languages) { + await withTempDir(async tmpDir => { + await cliInit(templ.name, lang, + /* canUseNetwork */ false, + /* generateOnly */ true, + tmpDir); + + // ok if template doesn't have a cdk.json file (e.g. the "lib" template) + if (!await fs.pathExists(path.join(tmpDir, 'cdk.json'))) { + return; + } + + const config = await fs.readJson(path.join(tmpDir, 'cdk.json')); + const context = config.context || {}; + for (const [key, expected] of Object.entries(cxapi.FUTURE_FLAGS)) { + const actual = context[key]; + expect(actual).toEqual(expected); + } + }); } - }); + } }); function cliTest(name: string, handler: (dir: string) => void | Promise): void { diff --git a/packages/aws-cdk/test/integ/cli/app/app.js b/packages/aws-cdk/test/integ/cli/app/app.js index 43875f4fa0037..175b658949fc4 100644 --- a/packages/aws-cdk/test/integ/cli/app/app.js +++ b/packages/aws-cdk/test/integ/cli/app/app.js @@ -44,19 +44,6 @@ class YourStack extends cdk.Stack { } } -class StackUsingContext extends cdk.Stack { - constructor(parent, id, props) { - super(parent, id, props); - new core.CfnResource(this, 'Handle', { - type: 'AWS::CloudFormation::WaitConditionHandle' - }); - - new core.CfnOutput(this, 'Output', { - value: this.availabilityZones, - }); - } -} - class ParameterStack extends cdk.Stack { constructor(parent, id, props) { super(parent, id, props); @@ -260,14 +247,6 @@ class SomeStage extends cdk.Stage { } } -class StageUsingContext extends cdk.Stage { - constructor(parent, id, props) { - super(parent, id, props); - - new StackUsingContext(this, 'StackInStage'); - } -} - const app = new cdk.App(); const defaultEnv = { @@ -275,68 +254,46 @@ const defaultEnv = { region: process.env.CDK_DEFAULT_REGION }; -// Sometimes we don't want to synthesize all stacks because it will impact the results -const stackSet = process.env.INTEG_STACK_SET || 'default'; - -switch (stackSet) { - case 'default': - // Deploy all does a wildcard ${stackPrefix}-test-* - new MyStack(app, `${stackPrefix}-test-1`, { env: defaultEnv }); - new YourStack(app, `${stackPrefix}-test-2`); - // Deploy wildcard with parameters does ${stackPrefix}-param-test-* - new ParameterStack(app, `${stackPrefix}-param-test-1`); - new OtherParameterStack(app, `${stackPrefix}-param-test-2`); - // Deploy stack with multiple parameters - new MultiParameterStack(app, `${stackPrefix}-param-test-3`); - // Deploy stack with outputs does ${stackPrefix}-outputs-test-* - new OutputsStack(app, `${stackPrefix}-outputs-test-1`); - new AnotherOutputsStack(app, `${stackPrefix}-outputs-test-2`); - // Not included in wildcard - new IamStack(app, `${stackPrefix}-iam-test`, { env: defaultEnv }); - const providing = new ProvidingStack(app, `${stackPrefix}-order-providing`); - new ConsumingStack(app, `${stackPrefix}-order-consuming`, { providingStack: providing }); - - new MissingSSMParameterStack(app, `${stackPrefix}-missing-ssm-parameter`, { env: defaultEnv }); - - new LambdaStack(app, `${stackPrefix}-lambda`); - new DockerStack(app, `${stackPrefix}-docker`); - new DockerStackWithCustomFile(app, `${stackPrefix}-docker-with-custom-file`); - new FailedStack(app, `${stackPrefix}-failed`) - - if (process.env.ENABLE_VPC_TESTING) { // Gating so we don't do context fetching unless that's what we are here for - const env = { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }; - if (process.env.ENABLE_VPC_TESTING === 'DEFINE') - new DefineVpcStack(app, `${stackPrefix}-define-vpc`, { env }); - if (process.env.ENABLE_VPC_TESTING === 'IMPORT') - new ImportVpcStack(app, `${stackPrefix}-import-vpc`, { env }); - } - - new ConditionalResourceStack(app, `${stackPrefix}-conditional-resource`) - - new StackWithNestedStack(app, `${stackPrefix}-with-nested-stack`); - new StackWithNestedStackUsingParameters(app, `${stackPrefix}-with-nested-stack-using-parameters`); - - new YourStack(app, `${stackPrefix}-termination-protection`, { - terminationProtection: process.env.TERMINATION_PROTECTION !== 'FALSE' ? true : false, - }); +// Deploy all does a wildcard ${stackPrefix}-test-* +new MyStack(app, `${stackPrefix}-test-1`, { env: defaultEnv }); +new YourStack(app, `${stackPrefix}-test-2`); +// Deploy wildcard with parameters does ${stackPrefix}-param-test-* +new ParameterStack(app, `${stackPrefix}-param-test-1`); +new OtherParameterStack(app, `${stackPrefix}-param-test-2`); +// Deploy stack with multiple parameters +new MultiParameterStack(app, `${stackPrefix}-param-test-3`); +// Deploy stack with outputs does ${stackPrefix}-outputs-test-* +new OutputsStack(app, `${stackPrefix}-outputs-test-1`); +new AnotherOutputsStack(app, `${stackPrefix}-outputs-test-2`); +// Not included in wildcard +new IamStack(app, `${stackPrefix}-iam-test`, { env: defaultEnv }); +const providing = new ProvidingStack(app, `${stackPrefix}-order-providing`); +new ConsumingStack(app, `${stackPrefix}-order-consuming`, { providingStack: providing }); + +new MissingSSMParameterStack(app, `${stackPrefix}-missing-ssm-parameter`, { env: defaultEnv }); + +new LambdaStack(app, `${stackPrefix}-lambda`); +new DockerStack(app, `${stackPrefix}-docker`); +new DockerStackWithCustomFile(app, `${stackPrefix}-docker-with-custom-file`); +new FailedStack(app, `${stackPrefix}-failed`) + +if (process.env.ENABLE_VPC_TESTING) { // Gating so we don't do context fetching unless that's what we are here for + const env = { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }; + if (process.env.ENABLE_VPC_TESTING === 'DEFINE') + new DefineVpcStack(app, `${stackPrefix}-define-vpc`, { env }); + if (process.env.ENABLE_VPC_TESTING === 'IMPORT') + new ImportVpcStack(app, `${stackPrefix}-import-vpc`, { env }); +} - new SomeStage(app, `${stackPrefix}-stage`); - break; +new ConditionalResourceStack(app, `${stackPrefix}-conditional-resource`) - case 'stage-using-context': - // Cannot be combined with other test stacks, because we use this to test - // that stage context is propagated up and causes synth to fail when combined - // with '--no-lookups'. +new StackWithNestedStack(app, `${stackPrefix}-with-nested-stack`); +new StackWithNestedStackUsingParameters(app, `${stackPrefix}-with-nested-stack-using-parameters`); - // Needs a dummy stack at the top level because the CLI will fail otherwise - new YourStack(app, `${stackPrefix}-toplevel`, { env: defaultEnv }); - new StageUsingContext(app, `${stackPrefix}-stage-using-context`, { - env: defaultEnv, - }); - break; +new YourStack(app, `${stackPrefix}-termination-protection`, { + terminationProtection: process.env.TERMINATION_PROTECTION !== 'FALSE' ? true : false, +}); - default: - throw new Error(`Unrecognized INTEG_STACK_SET: '${stackSet}'`); -} +new SomeStage(app, `${stackPrefix}-stage`); app.synth(); diff --git a/packages/aws-cdk/test/integ/cli/cdk-helpers.ts b/packages/aws-cdk/test/integ/cli/cdk-helpers.ts index cc38e7ec54cfa..c1049e330d77e 100644 --- a/packages/aws-cdk/test/integ/cli/cdk-helpers.ts +++ b/packages/aws-cdk/test/integ/cli/cdk-helpers.ts @@ -83,11 +83,7 @@ export function withCdkApp(block: (context: success = false; throw e; } finally { - if (process.env.INTEG_NO_CLEAN) { - process.stderr.write(`Left test directory in '${integTestDir}' ($INTEG_NO_CLEAN)\n`); - } else { - await fixture.dispose(success); - } + await fixture.dispose(success); } }; } @@ -181,13 +177,6 @@ export class TestFixture { ...this.fullStackName(stackNames)], options); } - public async cdkSynth(options: CdkCliOptions = {}) { - return this.cdk([ - 'synth', - ...(options.options ?? []), - ], options); - } - public async cdkDestroy(stackNames: string | string[], options: CdkCliOptions = {}) { stackNames = typeof stackNames === 'string' ? [stackNames] : stackNames; diff --git a/packages/aws-cdk/test/integ/cli/cli.integtest.ts b/packages/aws-cdk/test/integ/cli/cli.integtest.ts index 407c1d7fd99c4..079a560175a8d 100644 --- a/packages/aws-cdk/test/integ/cli/cli.integtest.ts +++ b/packages/aws-cdk/test/integ/cli/cli.integtest.ts @@ -93,17 +93,6 @@ integTest('context setting', withDefaultFixture(async (fixture) => { } })); -integTest('context in stage propagates to top', withDefaultFixture(async (fixture) => { - await expect(fixture.cdkSynth({ - // This will make it error to prove that the context bubbles up, and also that we can fail on command - options: ['--no-lookups'], - modEnv: { - INTEG_STACK_SET: 'stage-using-context', - }, - allowErrExit: true, - })).resolves.toContain('Context lookups have been disabled'); -})); - integTest('deploy', withDefaultFixture(async (fixture) => { const stackArn = await fixture.cdkDeploy('test-2', { captureStderr: false }); diff --git a/packages/aws-cdk/tsconfig.json b/packages/aws-cdk/tsconfig.json index 737e0bc5497f6..04e0404f04442 100644 --- a/packages/aws-cdk/tsconfig.json +++ b/packages/aws-cdk/tsconfig.json @@ -19,10 +19,10 @@ "include": [ "**/*.ts", "**/*.d.ts", - "lib/init-templates/**/add-project.hook.ts" + "lib/init-templates/*/*/add-project.hook.ts" ], "exclude": [ - "lib/init-templates/**/typescript/**/*.ts" + "lib/init-templates/*/typescript/**/*.ts" ] } diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 24bc67075c70f..fe9ac39d422e0 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -35,7 +35,7 @@ "@types/jest": "^26.0.15", "@types/jszip": "^3.4.1", "@types/mock-fs": "^4.13.0", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "@types/yargs": "^15.0.10", "cdk-build-tools": "0.0.0", "jest": "^26.6.3", @@ -47,7 +47,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "archiver": "^5.1.0", - "aws-sdk": "^2.799.0", + "aws-sdk": "^2.797.0", "glob": "^7.1.6", "yargs": "^16.1.1" }, diff --git a/packages/decdk/lib/declarative-stack.ts b/packages/decdk/lib/declarative-stack.ts index a093d16a5922f..8b937ecd3525e 100644 --- a/packages/decdk/lib/declarative-stack.ts +++ b/packages/decdk/lib/declarative-stack.ts @@ -382,7 +382,7 @@ function invokeMethod(stack: cdk.Stack, method: reflect.Callable, parameters: an * an `Fn::GetAtt`. */ function deconstructGetAtt(stack: cdk.Stack, id: string, attribute: string) { - return cdk.Lazy.string({ produce: () => { + return cdk.Lazy.stringValue({ produce: () => { const res = stack.node.tryFindChild(id); if (!res) { const include = stack.node.tryFindChild('Include') as cdk.CfnInclude; diff --git a/packages/decdk/package.json b/packages/decdk/package.json index 866f1dce347e7..a1fe7cd657a14 100644 --- a/packages/decdk/package.json +++ b/packages/decdk/package.json @@ -77,7 +77,6 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", - "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -143,7 +142,6 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", - "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -172,7 +170,6 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-ses-actions": "0.0.0", - "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index 4e5fe1f12d0cd..d6eded2ebcb17 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -149,7 +149,6 @@ "@aws-cdk/aws-codestarnotifications": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/aws-config": "0.0.0", - "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", @@ -215,7 +214,6 @@ "@aws-cdk/aws-mediastore": "0.0.0", "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-neptune": "0.0.0", - "@aws-cdk/aws-networkfirewall": "0.0.0", "@aws-cdk/aws-networkmanager": "0.0.0", "@aws-cdk/aws-opsworks": "0.0.0", "@aws-cdk/aws-opsworkscm": "0.0.0", @@ -244,7 +242,6 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-ses-actions": "0.0.0", - "@aws-cdk/aws-signer": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", @@ -268,7 +265,7 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "@types/fs-extra": "^8.1.1", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "cdk-build-tools": "0.0.0", "constructs": "^3.2.0", "fs-extra": "^9.0.1", diff --git a/tools/cdk-build-tools/package.json b/tools/cdk-build-tools/package.json index f5f8691727ec7..f47c4c8e1bb91 100644 --- a/tools/cdk-build-tools/package.json +++ b/tools/cdk-build-tools/package.json @@ -39,7 +39,7 @@ "pkglint": "0.0.0" }, "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.8.2", + "@typescript-eslint/eslint-plugin": "^4.8.1", "@typescript-eslint/parser": "^4.7.0", "eslint-plugin-cdk": "0.0.0", "awslint": "0.0.0", diff --git a/tools/eslint-plugin-cdk/package.json b/tools/eslint-plugin-cdk/package.json index 795262ab408f3..0b06b895cfbba 100644 --- a/tools/eslint-plugin-cdk/package.json +++ b/tools/eslint-plugin-cdk/package.json @@ -15,7 +15,7 @@ "@types/eslint": "^7.2.5", "@types/fs-extra": "^8.1.1", "@types/jest": "^26.0.15", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "eslint-plugin-rulesdir": "^0.1.0", "jest": "^26.6.3", "typescript": "~3.9.7" diff --git a/tools/nodeunit-shim/package.json b/tools/nodeunit-shim/package.json index 56bd2d5e4fb60..e644c259dc2a8 100644 --- a/tools/nodeunit-shim/package.json +++ b/tools/nodeunit-shim/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@types/jest": "^26.0.15", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "typescript": "~3.9.7" }, "dependencies": { diff --git a/tools/yarn-cling/package.json b/tools/yarn-cling/package.json index feba1052cc743..596f283475b46 100644 --- a/tools/yarn-cling/package.json +++ b/tools/yarn-cling/package.json @@ -39,7 +39,7 @@ }, "devDependencies": { "@types/jest": "^26.0.15", - "@types/node": "^10.17.47", + "@types/node": "^10.17.46", "@types/yarnpkg__lockfile": "^1.1.4", "jest": "^26.6.3", "pkglint": "0.0.0", diff --git a/version.v1.json b/version.v1.json index 2bac917cd4459..9b48089bc1d8f 100644 --- a/version.v1.json +++ b/version.v1.json @@ -1,3 +1,3 @@ { - "version": "1.75.0" + "version": "1.74.0" } diff --git a/yarn.lock b/yarn.lock index ce1d572a34688..122b5b0c73dca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1605,7 +1605,7 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": +"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== @@ -1661,10 +1661,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.2.tgz#2de1ed6670439387da1c9f549a2ade2b0a799256" integrity sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA== -"@types/node@^10.17.47": - version "10.17.47" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.47.tgz#cc88a242a835789456cfcf374928400d9f4b291c" - integrity sha512-YZ1mMAdUPouBZCdeugjV8y1tqqr28OyL8DYbH5ePCfe9zcXtvbh1wDBy7uzlHkXo3Qi07kpzXfvycvrkby/jXw== +"@types/node@^10.17.46": + version "10.17.46" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.46.tgz#1cd867ebfe9957ab45951f2f715f8de5f3dab7a3" + integrity sha512-Tice8a+sJtlP9C1EUo0DYyjq52T37b3LexVu3p871+kfIBIN+OQ7PKPei1oF3MgF39olEpUfxaLtD+QFc1k69Q== "@types/nodeunit@^0.0.31": version "0.0.31" @@ -1703,10 +1703,10 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.4.tgz#43d7168fec6fa0988bb1a513a697b29296721afb" integrity sha512-+nVsLKlcUCeMzD2ufHEYuJ9a2ovstb6Dp52A5VsoKxDXgvE051XgHI/33I1EymwkRGQkwnA0LkhnUzituGs4EQ== -"@types/sinon@^9.0.9": - version "9.0.9" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.9.tgz#115843b491583f924080f684b6d0d7438344f73c" - integrity sha512-z/y8maYOQyYLyqaOB+dYQ6i0pxKLOsfwCmHmn4T7jS/SDHicIslr37oE3Dg8SCqKrKeBy6Lemu7do2yy+unLrw== +"@types/sinon@^9.0.8": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.8.tgz#1ed0038d356784f75b086104ef83bfd4130bb81b" + integrity sha512-IVnI820FZFMGI+u1R+2VdRaD/82YIQTdqLYC9DLPszZuynAJDtCvCtCs3bmyL66s7FqRM3+LPX7DhHnVTaagDw== dependencies: "@types/sinonjs__fake-timers" "*" @@ -1773,28 +1773,28 @@ resolved "https://registry.yarnpkg.com/@types/yarnpkg__lockfile/-/yarnpkg__lockfile-1.1.4.tgz#445251eb00bd9c1e751f82c7c6bf4f714edfd464" integrity sha512-/emrKCfQMQmFCqRqqBJ0JueHBT06jBRM3e8OgnvDUcvuExONujIk2hFA5dNsN9Nt41ljGVDdChvCydATZ+KOZw== -"@typescript-eslint/eslint-plugin@^4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.2.tgz#cf9102ec800391caa574f589ffe0623cca1d9308" - integrity sha512-gQ06QLV5l1DtvYtqOyFLXD9PdcILYqlrJj2l+CGDlPtmgLUzc1GpqciJFIRvyfvgLALpnxYINFuw+n9AZhPBKQ== +"@typescript-eslint/eslint-plugin@^4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.1.tgz#b362abe0ee478a6c6d06c14552a6497f0b480769" + integrity sha512-d7LeQ7dbUrIv5YVFNzGgaW3IQKMmnmKFneRWagRlGYOSfLJVaRbj/FrBNOBC1a3tVO+TgNq1GbHvRtg1kwL0FQ== dependencies: - "@typescript-eslint/experimental-utils" "4.8.2" - "@typescript-eslint/scope-manager" "4.8.2" + "@typescript-eslint/experimental-utils" "4.8.1" + "@typescript-eslint/scope-manager" "4.8.1" debug "^4.1.1" functional-red-black-tree "^1.0.1" regexpp "^3.0.0" semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/experimental-utils@4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.2.tgz#8909a5732f19329cf5ef0c39766170476bff5e50" - integrity sha512-hpTw6o6IhBZEsQsjuw/4RWmceRyESfAiEzAEnXHKG1X7S5DXFaZ4IO1JO7CW1aQ604leQBzjZmuMI9QBCAJX8Q== +"@typescript-eslint/experimental-utils@4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.1.tgz#27275c20fa4336df99ebcf6195f7d7aa7aa9f22d" + integrity sha512-WigyLn144R3+lGATXW4nNcDJ9JlTkG8YdBWHkDlN0lC3gUGtDi7Pe3h5GPvFKMcRz8KbZpm9FJV9NTW8CpRHpg== dependencies: "@types/json-schema" "^7.0.3" - "@typescript-eslint/scope-manager" "4.8.2" - "@typescript-eslint/types" "4.8.2" - "@typescript-eslint/typescript-estree" "4.8.2" + "@typescript-eslint/scope-manager" "4.8.1" + "@typescript-eslint/types" "4.8.1" + "@typescript-eslint/typescript-estree" "4.8.1" eslint-scope "^5.0.0" eslint-utils "^2.0.0" @@ -1816,23 +1816,23 @@ "@typescript-eslint/types" "4.7.0" "@typescript-eslint/visitor-keys" "4.7.0" -"@typescript-eslint/scope-manager@4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.8.2.tgz#a18388c63ae9c17adde519384f539392f2c4f0d9" - integrity sha512-qHQ8ODi7mMin4Sq2eh/6eu03uVzsf5TX+J43xRmiq8ujng7ViQSHNPLOHGw/Wr5dFEoxq/ubKhzClIIdQy5q3g== +"@typescript-eslint/scope-manager@4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.8.1.tgz#e343c475f8f1d15801b546cb17d7f309b768fdce" + integrity sha512-r0iUOc41KFFbZdPAdCS4K1mXivnSZqXS5D9oW+iykQsRlTbQRfuFRSW20xKDdYiaCoH+SkSLeIF484g3kWzwOQ== dependencies: - "@typescript-eslint/types" "4.8.2" - "@typescript-eslint/visitor-keys" "4.8.2" + "@typescript-eslint/types" "4.8.1" + "@typescript-eslint/visitor-keys" "4.8.1" "@typescript-eslint/types@4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.7.0.tgz#5e95ef5c740f43d942542b35811f87b62fccca69" integrity sha512-uLszFe0wExJc+I7q0Z/+BnP7wao/kzX0hB5vJn4LIgrfrMLgnB2UXoReV19lkJQS1a1mHWGGODSxnBx6JQC3Sg== -"@typescript-eslint/types@4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.8.2.tgz#c862dd0e569d9478eb82d6aee662ea53f5661a36" - integrity sha512-z1/AVcVF8ju5ObaHe2fOpZYEQrwHyZ7PTOlmjd3EoFeX9sv7UekQhfrCmgUO7PruLNfSHrJGQvrW3Q7xQ8EoAw== +"@typescript-eslint/types@4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.8.1.tgz#23829c73c5fc6f4fcd5346a7780b274f72fee222" + integrity sha512-ave2a18x2Y25q5K05K/U3JQIe2Av4+TNi/2YuzyaXLAsDx6UZkz1boZ7nR/N6Wwae2PpudTZmHFXqu7faXfHmA== "@typescript-eslint/typescript-estree@4.7.0": version "4.7.0" @@ -1848,13 +1848,13 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.2.tgz#eeec34707d8577600fb21661b5287226cc8b3bed" - integrity sha512-HToGNwI6fekH0dOw3XEVESUm71Onfam0AKin6f26S2FtUmO7o3cLlWgrIaT1q3vjB3wCTdww3Dx2iGq5wtUOCg== +"@typescript-eslint/typescript-estree@4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.1.tgz#7307e3f2c9e95df7daa8dc0a34b8c43b7ec0dd32" + integrity sha512-bJ6Fn/6tW2g7WIkCWh3QRlaSU7CdUUK52shx36/J7T5oTQzANvi6raoTsbwGM11+7eBbeem8hCCKbyvAc0X3sQ== dependencies: - "@typescript-eslint/types" "4.8.2" - "@typescript-eslint/visitor-keys" "4.8.2" + "@typescript-eslint/types" "4.8.1" + "@typescript-eslint/visitor-keys" "4.8.1" debug "^4.1.1" globby "^11.0.1" is-glob "^4.0.1" @@ -1870,12 +1870,12 @@ "@typescript-eslint/types" "4.7.0" eslint-visitor-keys "^2.0.0" -"@typescript-eslint/visitor-keys@4.8.2": - version "4.8.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.2.tgz#62cd3fbbbf65f8eccfbe6f159eb1b84a243a3f77" - integrity sha512-Vg+/SJTMZJEKKGHW7YC21QxgKJrSbxoYYd3MEUGtW7zuytHuEcksewq0DUmo4eh/CTNrVJGSdIY9AtRb6riWFw== +"@typescript-eslint/visitor-keys@4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.1.tgz#794f68ee292d1b2e3aa9690ebedfcb3a8c90e3c3" + integrity sha512-3nrwXFdEYALQh/zW8rFwP4QltqsanCDz4CwWMPiIZmwlk9GlvBeueEIbq05SEq4ganqM0g9nh02xXgv5XI3PeQ== dependencies: - "@typescript-eslint/types" "4.8.2" + "@typescript-eslint/types" "4.8.1" eslint-visitor-keys "^2.0.0" "@yarnpkg/lockfile@^1.1.0": @@ -2294,10 +2294,10 @@ aws-sdk-mock@^5.1.0: sinon "^9.0.1" traverse "^0.6.6" -aws-sdk@^2.637.0, aws-sdk@^2.799.0: - version "2.799.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.799.0.tgz#8b1a64c1a9f8ccf5794eb07bdd8051e4cb6adcfd" - integrity sha512-NYAoiNU+bJXhlJsC0rFqrmD5t5ho7/VxldmziP6HLPYHfOCI9Uvk6UVjfPmhLWPm0mHnIxhsHqmsNGyjhHNYmw== +aws-sdk@^2.637.0, aws-sdk@^2.797.0: + version "2.797.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.797.0.tgz#e9510a582606a580e7bbb686f01da28476599a2d" + integrity sha512-fFc/2Xr7NkSXlZ9+2rCOFovA9NO1OnIyEaJFVwMM9gaqzucwRAfNNT0Pa1Kua5dhWrcf/mX0Z4mCDnTBf0/5mA== dependencies: buffer "4.9.2" events "1.1.1" @@ -4914,7 +4914,7 @@ glob-to-regexp@^0.3.0: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -9441,10 +9441,10 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -table@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/table/-/table-6.0.4.tgz#c523dd182177e926c723eb20e1b341238188aa0d" - integrity sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw== +table@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123" + integrity sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw== dependencies: ajv "^6.12.4" lodash "^4.17.20" @@ -9937,32 +9937,32 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript-json-schema@^0.44.0: - version "0.44.0" - resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.44.0.tgz#8ec96b26caa5b8744d6cac47ce9aadc3187f4700" - integrity sha512-MC6hEUYmA35F6SQjwrogzjOhrkH0x4f/yCrzb1EQU5EOoEDdu51vsrlkI9oKgLyyC7uWKBOlJsWAFk2RfGFvgQ== +typescript-json-schema@^0.43.0: + version "0.43.0" + resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.43.0.tgz#8bd9c832f1f15f006ff933907ce192222fdfd92f" + integrity sha512-4c9IMlIlHYJiQtzL1gh2nIPJEjBgJjDUs50gsnnc+GFyDSK1oFM3uQIBSVosiuA/4t6LSAXDS9vTdqbQC6EcgA== dependencies: - "@types/json-schema" "^7.0.6" - glob "^7.1.6" + "@types/json-schema" "^7.0.5" + glob "~7.1.6" json-stable-stringify "^1.0.1" - typescript "^4.1.2" - yargs "^16.1.1" + typescript "~4.0.2" + yargs "^15.4.1" typescript@^3.3.3, typescript@~3.9.7: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== -typescript@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" - integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== - typescript@~3.8.3: version "3.8.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== +typescript@~4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.0.3.tgz#153bbd468ef07725c1df9c77e8b453f8d36abba5" + integrity sha512-tEu6DGxGgRJPb/mVPIZ48e69xCn2yRmCgYmDugAVwmJ6o+0u1RI18eO7E7WBTLYLaEVVOhwQmcdhQHweux/WPg== + uglify-js@^3.1.4: version "3.11.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.0.tgz#67317658d76c21e0e54d3224aee2df4ee6c3e1dc" From 16477ed36b9d5681cab76715b10c22c2bd353a95 Mon Sep 17 00:00:00 2001 From: AWS CDK Team Date: Mon, 30 Nov 2020 12:08:32 +0000 Subject: [PATCH 016/304] automatic pkglint fixes --- .../@aws-cdk-containers/ecs-service-extensions/package.json | 2 +- packages/@aws-cdk/aws-cognito/package.json | 1 - packages/@aws-cdk/aws-databrew/package.json | 3 ++- packages/@aws-cdk/aws-networkfirewall/package.json | 3 ++- packages/@aws-cdk/aws-signer/package.json | 3 ++- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index abb37f4e9df01..ee31c4a12528b 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -102,4 +102,4 @@ }, "maturity": "stable", "stability": "stable" -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index e41f34a5206af..785b16e45bb37 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -89,7 +89,6 @@ "@aws-cdk/custom-resources": "0.0.0", "constructs": "^3.2.0", "punycode": "^2.1.1" - }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json index 4fe82b685a9fc..8440ca093db74 100644 --- a/packages/@aws-cdk/aws-databrew/package.json +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -92,5 +92,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json index f8415a0b9be52..bed643d933830 100644 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -92,5 +92,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json index 342cf0a26d796..2da1685ac8341 100644 --- a/packages/@aws-cdk/aws-signer/package.json +++ b/packages/@aws-cdk/aws-signer/package.json @@ -92,5 +92,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } From beadc664c6d1def7fec0f0b346c85076bad59327 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Fri, 11 Dec 2020 13:40:22 +0000 Subject: [PATCH 017/304] chore: add CHANGELOG entry for 2.0.0-alpha.0 (#12013) Keep the text simple. Calling out the list of changes is not important for the first release. Subsequent releases will carry the standard format of features and bug fixes. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- CHANGELOG.v2.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 5c79a3c337bd8..f1312c7a4c98d 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -1,3 +1,7 @@ # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +## 2.0.0-alpha.0 (2020-12-11) + +This is the first alpha release of CDK 2.0. 🎉 From 22ff39b3fa9f6021f49271a38e0a6654e3336eea Mon Sep 17 00:00:00 2001 From: AWS CDK Team Date: Sun, 27 Dec 2020 09:07:00 +0000 Subject: [PATCH 018/304] automatic pkglint fixes --- packages/@aws-cdk/lambda-layer-awscli/package.json | 4 ++-- packages/@aws-cdk/lambda-layer-kubectl/package.json | 4 ++-- packages/monocdk/package.json | 2 -- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 344ffc2e43521..00dc16cb349b1 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -1,6 +1,5 @@ { "name": "@aws-cdk/lambda-layer-awscli", - "private": false, "version": "0.0.0", "description": "An AWS Lambda layer that contains the AWS CLI", "main": "lib/index.js", @@ -102,5 +101,6 @@ }, "ubergen": { "exclude": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index 8a6c18ac0e9c4..be961694f1606 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -1,6 +1,5 @@ { "name": "@aws-cdk/lambda-layer-kubectl", - "private": false, "version": "0.0.0", "description": "An AWS Lambda layer that contains the `kubectl` and `helm`", "main": "lib/index.js", @@ -108,5 +107,6 @@ }, "ubergen": { "exclude": false - } + }, + "private": true } diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index e1c61f7530d3e..c437b4ddf7476 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -270,8 +270,6 @@ "@aws-cdk/pipelines": "0.0.0", "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", - "@aws-cdk/lambda-layer-awscli": "0.0.0", - "@aws-cdk/lambda-layer-kubectl": "0.0.0", "@types/fs-extra": "^8.1.1", "@types/node": "^10.17.48", "cdk-build-tools": "0.0.0", From 768008a7413fc9aa9f96201bb7772659ebc25741 Mon Sep 17 00:00:00 2001 From: AWS CDK Team Date: Mon, 28 Dec 2020 09:07:00 +0000 Subject: [PATCH 019/304] automatic pkglint fixes --- packages/@aws-cdk/lambda-layer-awscli/package.json | 4 ++-- packages/@aws-cdk/lambda-layer-kubectl/package.json | 4 ++-- packages/monocdk/package.json | 2 -- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 344ffc2e43521..00dc16cb349b1 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -1,6 +1,5 @@ { "name": "@aws-cdk/lambda-layer-awscli", - "private": false, "version": "0.0.0", "description": "An AWS Lambda layer that contains the AWS CLI", "main": "lib/index.js", @@ -102,5 +101,6 @@ }, "ubergen": { "exclude": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index 8a6c18ac0e9c4..be961694f1606 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -1,6 +1,5 @@ { "name": "@aws-cdk/lambda-layer-kubectl", - "private": false, "version": "0.0.0", "description": "An AWS Lambda layer that contains the `kubectl` and `helm`", "main": "lib/index.js", @@ -108,5 +107,6 @@ }, "ubergen": { "exclude": false - } + }, + "private": true } diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index e1c61f7530d3e..c437b4ddf7476 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -270,8 +270,6 @@ "@aws-cdk/pipelines": "0.0.0", "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", - "@aws-cdk/lambda-layer-awscli": "0.0.0", - "@aws-cdk/lambda-layer-kubectl": "0.0.0", "@types/fs-extra": "^8.1.1", "@types/node": "^10.17.48", "cdk-build-tools": "0.0.0", From 17e98a760d8a3310e52102e861595fd00365ea4b Mon Sep 17 00:00:00 2001 From: AWS CDK Team Date: Tue, 5 Jan 2021 09:06:00 +0000 Subject: [PATCH 020/304] automatic pkglint fixes --- packages/@aws-cdk/aws-devopsguru/package.json | 3 ++- packages/@aws-cdk/aws-greengrassv2/package.json | 3 ++- packages/@aws-cdk/aws-iotwireless/package.json | 3 ++- packages/@aws-cdk/aws-licensemanager/package.json | 3 ++- packages/@aws-cdk/aws-mwaa/package.json | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/@aws-cdk/aws-devopsguru/package.json b/packages/@aws-cdk/aws-devopsguru/package.json index b97c74e633c97..6600550c84247 100644 --- a/packages/@aws-cdk/aws-devopsguru/package.json +++ b/packages/@aws-cdk/aws-devopsguru/package.json @@ -93,5 +93,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-greengrassv2/package.json b/packages/@aws-cdk/aws-greengrassv2/package.json index c8d835f70b02a..342dfee0b93f8 100644 --- a/packages/@aws-cdk/aws-greengrassv2/package.json +++ b/packages/@aws-cdk/aws-greengrassv2/package.json @@ -95,5 +95,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-iotwireless/package.json b/packages/@aws-cdk/aws-iotwireless/package.json index c76906933023d..7593565a031f2 100644 --- a/packages/@aws-cdk/aws-iotwireless/package.json +++ b/packages/@aws-cdk/aws-iotwireless/package.json @@ -93,5 +93,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-licensemanager/package.json b/packages/@aws-cdk/aws-licensemanager/package.json index 92031bf0a7206..ccefb2b7fe344 100644 --- a/packages/@aws-cdk/aws-licensemanager/package.json +++ b/packages/@aws-cdk/aws-licensemanager/package.json @@ -93,5 +93,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-mwaa/package.json b/packages/@aws-cdk/aws-mwaa/package.json index adc834fe5c6e2..aa75ff757902d 100644 --- a/packages/@aws-cdk/aws-mwaa/package.json +++ b/packages/@aws-cdk/aws-mwaa/package.json @@ -93,5 +93,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } From 8d3c02c117072433bf649003af0c4fee4a1f8c4b Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Tue, 5 Jan 2021 14:18:08 +0200 Subject: [PATCH 021/304] feat: remove the construct compatibility layer (#12054) After we extracted the constructs programming model into the `constructs` module, in order to maintain backwards compatibility in the v1.x release line, we had to include a compatibility layer between the AWS CDK and constructs. One of the goals of 2.0 was to remove this redundant layer and directly use `constructs.Constructs` within the AWS CDK. [This RFC](https://github.com/aws/aws-cdk-rfcs/blob/master/text/0192-remove-constructs-compat.md) describes this activity in detail. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../ecs-service-extensions/lib/environment.ts | 14 +- .../lib/extensions/appmesh.ts | 3 +- .../assign-public-ip/assign-public-ip.ts | 4 +- .../assign-public-ip/task-record-manager.ts | 5 +- .../lib/extensions/cloudwatch-agent.ts | 4 +- .../lib/extensions/extension-interfaces.ts | 5 +- .../lib/extensions/firelens.ts | 3 +- .../lib/extensions/http-load-balancer.ts | 3 +- .../ecs-service-extensions/lib/service.ts | 8 +- .../ecs-service-extensions/package.json | 4 +- packages/@aws-cdk/alexa-ask/package.json | 4 +- .../lib/pipeline-deploy-stack-action.ts | 3 +- packages/@aws-cdk/app-delivery/package.json | 4 +- packages/@aws-cdk/assert/lib/synth-utils.ts | 8 +- packages/@aws-cdk/assert/package.json | 4 +- packages/@aws-cdk/assets/lib/staging.ts | 3 +- packages/@aws-cdk/assets/package.json | 4 +- .../@aws-cdk/aws-accessanalyzer/package.json | 4 +- packages/@aws-cdk/aws-acmpca/package.json | 4 +- packages/@aws-cdk/aws-amazonmq/package.json | 4 +- .../@aws-cdk/aws-amplify/lib/basic-auth.ts | 7 +- packages/@aws-cdk/aws-amplify/lib/domain.ts | 4 +- packages/@aws-cdk/aws-amplify/package.json | 4 +- .../aws-apigateway/lib/api-definition.ts | 10 +- .../aws-apigateway/lib/apigatewayv2.ts | 23 +- .../@aws-cdk/aws-apigateway/lib/deployment.ts | 4 +- .../aws-apigateway/lib/integrations/aws.ts | 3 +- .../@aws-cdk/aws-apigateway/lib/restapi.ts | 4 +- .../@aws-cdk/aws-apigateway/lib/vpc-link.ts | 4 +- packages/@aws-cdk/aws-apigateway/package.json | 4 +- .../package.json | 4 +- .../aws-apigatewayv2/lib/http/integration.ts | 6 +- .../aws-apigatewayv2/lib/http/vpc-link.ts | 4 +- .../@aws-cdk/aws-apigatewayv2/package.json | 4 +- packages/@aws-cdk/aws-appconfig/package.json | 4 +- packages/@aws-cdk/aws-appflow/package.json | 6 +- .../lib/base-scalable-attribute.ts | 3 +- .../lib/step-scaling-action.ts | 2 +- .../lib/step-scaling-policy.ts | 4 +- .../lib/target-tracking-scaling-policy.ts | 2 +- .../aws-applicationautoscaling/package.json | 4 +- .../aws-applicationinsights/package.json | 6 +- .../@aws-cdk/aws-appmesh/lib/client-policy.ts | 6 +- .../aws-appmesh/lib/gateway-route-spec.ts | 8 +- .../@aws-cdk/aws-appmesh/lib/gateway-route.ts | 2 +- .../@aws-cdk/aws-appmesh/lib/route-spec.ts | 10 +- .../aws-appmesh/lib/service-discovery.ts | 8 +- .../aws-appmesh/lib/shared-interfaces.ts | 5 +- .../lib/virtual-gateway-listener.ts | 7 +- .../aws-appmesh/lib/virtual-gateway.ts | 2 +- .../aws-appmesh/lib/virtual-node-listener.ts | 5 +- .../lib/virtual-router-listener.ts | 6 +- packages/@aws-cdk/aws-appmesh/package.json | 4 +- packages/@aws-cdk/aws-appstream/package.json | 4 +- .../@aws-cdk/aws-appsync/lib/data-source.ts | 6 +- packages/@aws-cdk/aws-appsync/lib/resolver.ts | 6 +- packages/@aws-cdk/aws-appsync/package.json | 4 +- packages/@aws-cdk/aws-athena/package.json | 4 +- .../aws-autoscaling-common/package.json | 4 +- .../lib/lambda-hook.ts | 2 +- .../lib/queue-hook.ts | 2 +- .../lib/topic-hook.ts | 2 +- .../aws-autoscaling-hooktargets/package.json | 4 +- .../lib/lifecycle-hook-target.ts | 2 +- .../lib/step-scaling-action.ts | 4 +- .../lib/step-scaling-policy.ts | 6 +- .../lib/target-tracking-scaling-policy.ts | 4 +- .../@aws-cdk/aws-autoscaling/package.json | 4 +- .../aws-autoscaling/test/scaling.test.ts | 6 +- .../aws-autoscalingplans/package.json | 4 +- .../lib/backupable-resources-collector.ts | 3 +- packages/@aws-cdk/aws-backup/lib/plan.ts | 4 +- packages/@aws-cdk/aws-backup/lib/resource.ts | 8 +- packages/@aws-cdk/aws-backup/package.json | 4 +- .../aws-backup/test/selection.test.ts | 8 +- .../lib/job-definition-image-config.ts | 6 +- packages/@aws-cdk/aws-batch/package.json | 4 +- packages/@aws-cdk/aws-budgets/package.json | 4 +- packages/@aws-cdk/aws-cassandra/package.json | 6 +- packages/@aws-cdk/aws-ce/package.json | 6 +- .../lib/dns-validated-certificate.ts | 4 +- .../aws-certificatemanager/package.json | 4 +- packages/@aws-cdk/aws-chatbot/package.json | 4 +- packages/@aws-cdk/aws-cloud9/package.json | 4 +- .../aws-cloudformation/lib/custom-resource.ts | 7 +- .../aws-cloudformation/lib/nested-stack.ts | 3 +- .../@aws-cdk/aws-cloudformation/package.json | 4 +- .../test/integ.core-custom-resources.ts | 5 +- .../test/integ.nested-stack.ts | 5 +- .../test/integ.nested-stacks-assets.ts | 3 +- .../test/integ.nested-stacks-multi.ts | 5 +- .../test/integ.nested-stacks-refs1.ts | 3 +- .../test/integ.nested-stacks-refs2.ts | 5 +- .../test/integ.nested-stacks-refs3.ts | 5 +- .../test/integ.trivial-lambda-resource.ts | 5 +- .../test/test.nested-stack.ts | 4 +- .../aws-cloudformation/test/test.resource.ts | 5 +- .../lib/origin-group.ts | 2 +- .../aws-cloudfront-origins/lib/s3-origin.ts | 5 +- .../aws-cloudfront-origins/package.json | 4 +- .../aws-cloudfront/lib/distribution.ts | 8 +- .../lib/experimental/edge-function.ts | 6 +- .../@aws-cdk/aws-cloudfront/lib/origin.ts | 3 +- packages/@aws-cdk/aws-cloudfront/package.json | 4 +- .../aws-cloudfront/test/test-origin.ts | 5 +- packages/@aws-cdk/aws-cloudtrail/package.json | 4 +- .../aws-cloudwatch-actions/lib/appscaling.ts | 4 +- .../aws-cloudwatch-actions/lib/autoscaling.ts | 4 +- .../aws-cloudwatch-actions/lib/sns.ts | 2 +- .../aws-cloudwatch-actions/package.json | 4 +- .../aws-cloudwatch/lib/alarm-action.ts | 2 +- .../@aws-cdk/aws-cloudwatch/lib/metric.ts | 8 +- packages/@aws-cdk/aws-cloudwatch/package.json | 4 +- .../@aws-cdk/aws-codeartifact/package.json | 6 +- .../@aws-cdk/aws-codebuild/lib/artifacts.ts | 11 +- .../aws-codebuild/lib/file-location.ts | 9 +- .../lib/linux-gpu-build-image.ts | 3 +- .../@aws-cdk/aws-codebuild/lib/project.ts | 15 +- packages/@aws-cdk/aws-codebuild/lib/source.ts | 23 +- packages/@aws-cdk/aws-codebuild/package.json | 4 +- packages/@aws-cdk/aws-codecommit/package.json | 4 +- .../lib/ecs/deployment-config.ts | 2 +- .../lib/ecs/deployment-group.ts | 2 +- .../lib/lambda/deployment-config.ts | 2 +- packages/@aws-cdk/aws-codedeploy/package.json | 4 +- .../aws-codeguruprofiler/package.json | 4 +- .../aws-codegurureviewer/package.json | 6 +- .../aws-codepipeline-actions/lib/action.ts | 3 +- .../lib/alexa-ask/deploy-action.ts | 3 +- .../lib/bitbucket/source-action.ts | 2 +- .../lib/cloudformation/pipeline-actions.ts | 17 +- .../lib/codebuild/build-action.ts | 3 +- .../lib/codecommit/source-action.ts | 3 +- .../lib/codedeploy/ecs-deploy-action.ts | 3 +- .../lib/codedeploy/server-deploy-action.ts | 2 +- .../lib/custom-action-registration.ts | 6 +- .../lib/ecr/source-action.ts | 3 +- .../lib/ecs/deploy-action.ts | 3 +- .../lib/github/source-action.ts | 3 +- .../lib/jenkins/jenkins-action.ts | 2 +- .../lib/jenkins/jenkins-provider.ts | 7 +- .../lib/lambda/invoke-action.ts | 3 +- .../lib/manual-approval-action.ts | 4 +- .../lib/s3/deploy-action.ts | 3 +- .../lib/s3/source-action.ts | 3 +- .../lib/servicecatalog/deploy-action.ts | 2 +- .../lib/stepfunctions/invoke-action.ts | 3 +- .../aws-codepipeline-actions/package.json | 4 +- .../cloudformation/test.pipeline-actions.ts | 14 +- .../test/test.pipeline.ts | 8 +- .../@aws-cdk/aws-codepipeline/lib/action.ts | 3 +- .../@aws-cdk/aws-codepipeline/lib/pipeline.ts | 9 +- .../lib/private/cross-region-support-stack.ts | 7 +- .../lib/private/rich-action.ts | 3 +- .../aws-codepipeline/lib/private/stage.ts | 7 +- .../@aws-cdk/aws-codepipeline/package.json | 4 +- .../aws-codepipeline/test/artifacts.test.ts | 33 +- .../test/general-validation.test.ts | 4 +- packages/@aws-cdk/aws-codestar/package.json | 4 +- .../aws-codestarconnections/package.json | 6 +- .../aws-codestarnotifications/package.json | 4 +- packages/@aws-cdk/aws-cognito/package.json | 4 +- packages/@aws-cdk/aws-config/package.json | 4 +- packages/@aws-cdk/aws-databrew/package.json | 6 +- .../@aws-cdk/aws-datapipeline/package.json | 4 +- packages/@aws-cdk/aws-dax/package.json | 4 +- packages/@aws-cdk/aws-detective/package.json | 6 +- packages/@aws-cdk/aws-devopsguru/package.json | 6 +- .../aws-directoryservice/package.json | 4 +- packages/@aws-cdk/aws-dlm/package.json | 4 +- packages/@aws-cdk/aws-dms/package.json | 4 +- packages/@aws-cdk/aws-docdb/package.json | 4 +- .../lib/aws-dynamodb-global.ts | 5 +- .../lib/global-table-coordinator.ts | 3 +- .../@aws-cdk/aws-dynamodb-global/package.json | 4 +- .../aws-dynamodb/lib/replica-provider.ts | 4 +- packages/@aws-cdk/aws-dynamodb/lib/table.ts | 8 +- packages/@aws-cdk/aws-dynamodb/package.json | 4 +- .../aws-dynamodb/test/dynamodb.test.ts | 6 +- packages/@aws-cdk/aws-ec2/lib/cfn-init.ts | 3 +- .../@aws-cdk/aws-ec2/lib/machine-image.ts | 3 +- .../aws-ec2/lib/private/cfn-init-internal.ts | 2 +- packages/@aws-cdk/aws-ec2/lib/volume.ts | 9 +- .../@aws-cdk/aws-ec2/lib/vpc-flow-logs.ts | 10 +- packages/@aws-cdk/aws-ec2/lib/vpc.ts | 16 +- packages/@aws-cdk/aws-ec2/package.json | 4 +- .../aws-ec2/test/integ.share-vpcs.lit.ts | 6 +- .../aws-ecr-assets/lib/image-asset.ts | 4 +- packages/@aws-cdk/aws-ecr-assets/package.json | 4 +- packages/@aws-cdk/aws-ecr/lib/repository.ts | 8 +- packages/@aws-cdk/aws-ecr/package.json | 4 +- .../application-load-balanced-service-base.ts | 4 +- ...ion-multiple-target-groups-service-base.ts | 6 +- .../network-load-balanced-service-base.ts | 4 +- ...ork-multiple-target-groups-service-base.ts | 6 +- .../lib/base/queue-processing-service-base.ts | 6 +- .../lib/base/scheduled-task-base.ts | 8 +- .../@aws-cdk/aws-ecs-patterns/package.json | 4 +- .../aws-ecs/lib/base/task-definition.ts | 5 +- packages/@aws-cdk/aws-ecs/lib/cluster.ts | 10 +- .../aws-ecs/lib/container-definition.ts | 2 +- .../@aws-cdk/aws-ecs/lib/container-image.ts | 10 +- .../lib/drain-hook/instance-drain-hook.ts | 2 +- .../@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts | 6 +- .../@aws-cdk/aws-ecs/lib/environment-file.ts | 2 +- .../aws-ecs/lib/images/asset-image.ts | 7 +- packages/@aws-cdk/aws-ecs/lib/images/ecr.ts | 7 +- .../@aws-cdk/aws-ecs/lib/images/repository.ts | 7 +- .../images/tag-parameter-container-image.ts | 3 +- .../@aws-cdk/aws-ecs/lib/linux-parameters.ts | 2 +- .../aws-ecs/lib/log-drivers/aws-log-driver.ts | 7 +- .../lib/log-drivers/firelens-log-driver.ts | 7 +- .../lib/log-drivers/fluentd-log-driver.ts | 7 +- .../lib/log-drivers/gelf-log-driver.ts | 7 +- .../lib/log-drivers/generic-log-driver.ts | 7 +- .../lib/log-drivers/journald-log-driver.ts | 7 +- .../lib/log-drivers/json-file-log-driver.ts | 7 +- .../aws-ecs/lib/log-drivers/log-driver.ts | 7 +- .../lib/log-drivers/splunk-log-driver.ts | 7 +- .../lib/log-drivers/syslog-log-driver.ts | 7 +- .../app-mesh-proxy-configuration.ts | 7 +- .../proxy-configuration.ts | 7 +- packages/@aws-cdk/aws-ecs/package.json | 4 +- packages/@aws-cdk/aws-efs/package.json | 4 +- .../@aws-cdk/aws-eks-legacy/lib/aws-auth.ts | 3 +- .../aws-eks-legacy/lib/cluster-resource.ts | 3 +- .../@aws-cdk/aws-eks-legacy/lib/cluster.ts | 3 +- .../@aws-cdk/aws-eks-legacy/lib/helm-chart.ts | 3 +- .../aws-eks-legacy/lib/k8s-resource.ts | 3 +- .../aws-eks-legacy/lib/kubectl-layer.ts | 3 +- packages/@aws-cdk/aws-eks-legacy/package.json | 4 +- packages/@aws-cdk/aws-eks/lib/aws-auth.ts | 10 +- .../aws-eks/lib/cluster-resource-provider.ts | 6 +- .../@aws-cdk/aws-eks/lib/cluster-resource.ts | 6 +- packages/@aws-cdk/aws-eks/lib/cluster.ts | 6 +- .../@aws-cdk/aws-eks/lib/fargate-profile.ts | 6 +- packages/@aws-cdk/aws-eks/lib/helm-chart.ts | 6 +- packages/@aws-cdk/aws-eks/lib/k8s-manifest.ts | 6 +- .../@aws-cdk/aws-eks/lib/k8s-object-value.ts | 6 +- packages/@aws-cdk/aws-eks/lib/k8s-patch.ts | 6 +- .../@aws-cdk/aws-eks/lib/kubectl-provider.ts | 6 +- .../aws-eks/lib/private/bottlerocket.ts | 2 +- .../@aws-cdk/aws-eks/lib/service-account.ts | 6 +- packages/@aws-cdk/aws-eks/package.json | 4 +- .../@aws-cdk/aws-eks/test/pinger/pinger.ts | 6 +- .../@aws-cdk/aws-eks/test/test.cluster.ts | 30 +- .../@aws-cdk/aws-eks/test/test.k8s-patch.ts | 2 +- .../@aws-cdk/aws-elasticache/package.json | 4 +- .../aws-elasticbeanstalk/package.json | 4 +- .../aws-elasticloadbalancing/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../lib/alb/application-listener-action.ts | 3 +- .../alb/application-listener-certificate.ts | 3 +- .../lib/alb/application-listener-rule.ts | 6 +- .../lib/alb/application-listener.ts | 4 +- .../lib/alb/application-target-group.ts | 8 +- .../lib/nlb/network-listener-action.ts | 3 +- .../lib/nlb/network-target-group.ts | 4 +- .../lib/shared/base-listener.ts | 3 +- .../lib/shared/base-target-group.ts | 12 +- .../lib/shared/imported.ts | 2 +- .../aws-elasticloadbalancingv2/package.json | 4 +- .../test/alb/listener.test.ts | 8 +- .../test/helpers.ts | 7 +- .../test/integ.alb.dualstack.ts | 5 +- .../test/nlb/listener.test.ts | 8 +- .../lib/elasticsearch-access-policy.ts | 4 +- .../lib/log-group-resource-policy.ts | 4 +- .../@aws-cdk/aws-elasticsearch/package.json | 4 +- packages/@aws-cdk/aws-emr/package.json | 4 +- .../lib/log-group-resource-policy.ts | 3 +- .../aws-events-targets/lib/log-group.ts | 2 +- .../@aws-cdk/aws-events-targets/lib/util.ts | 7 +- .../@aws-cdk/aws-events-targets/package.json | 4 +- packages/@aws-cdk/aws-events/lib/rule.ts | 8 +- packages/@aws-cdk/aws-events/lib/target.ts | 2 +- packages/@aws-cdk/aws-events/package.json | 4 +- .../@aws-cdk/aws-events/test/test.rule.ts | 19 +- .../@aws-cdk/aws-eventschemas/package.json | 4 +- packages/@aws-cdk/aws-fms/package.json | 4 +- packages/@aws-cdk/aws-fsx/package.json | 4 +- packages/@aws-cdk/aws-gamelift/package.json | 4 +- .../lib/accelerator-security-group.ts | 2 +- .../lib/endpoint-group.ts | 2 +- .../aws-globalaccelerator/package.json | 4 +- packages/@aws-cdk/aws-glue/package.json | 4 +- packages/@aws-cdk/aws-greengrass/package.json | 4 +- .../@aws-cdk/aws-greengrassv2/package.json | 4 +- packages/@aws-cdk/aws-guardduty/package.json | 4 +- packages/@aws-cdk/aws-iam/lib/grant.ts | 7 +- .../@aws-cdk/aws-iam/lib/managed-policy.ts | 4 +- packages/@aws-cdk/aws-iam/lib/policy.ts | 4 +- packages/@aws-cdk/aws-iam/lib/role.ts | 8 +- packages/@aws-cdk/aws-iam/package.json | 4 +- .../aws-iam/test/example.attaching.lit.ts | 10 +- .../aws-iam/test/example.external-id.lit.ts | 7 +- .../aws-iam/test/example.managedpolicy.lit.ts | 7 +- .../@aws-cdk/aws-iam/test/example.role.lit.ts | 7 +- .../aws-iam/test/immutable-role.test.ts | 3 +- .../@aws-cdk/aws-imagebuilder/package.json | 6 +- packages/@aws-cdk/aws-inspector/package.json | 4 +- packages/@aws-cdk/aws-iot/package.json | 4 +- packages/@aws-cdk/aws-iot1click/package.json | 4 +- .../@aws-cdk/aws-iotanalytics/package.json | 4 +- packages/@aws-cdk/aws-iotevents/package.json | 4 +- .../@aws-cdk/aws-iotsitewise/package.json | 6 +- .../@aws-cdk/aws-iotthingsgraph/package.json | 4 +- .../@aws-cdk/aws-iotwireless/package.json | 6 +- packages/@aws-cdk/aws-ivs/package.json | 4 +- packages/@aws-cdk/aws-kendra/package.json | 6 +- packages/@aws-cdk/aws-kinesis/package.json | 4 +- .../aws-kinesisanalytics/package.json | 4 +- .../@aws-cdk/aws-kinesisfirehose/package.json | 4 +- packages/@aws-cdk/aws-kms/lib/key.ts | 12 +- packages/@aws-cdk/aws-kms/package.json | 4 +- packages/@aws-cdk/aws-kms/test/alias.test.ts | 3 +- .../@aws-cdk/aws-lakeformation/package.json | 4 +- .../lib/event-bridge.ts | 3 +- .../aws-lambda-destinations/lib/lambda.ts | 2 +- .../aws-lambda-destinations/lib/sns.ts | 2 +- .../aws-lambda-destinations/lib/sqs.ts | 2 +- .../aws-lambda-destinations/package.json | 4 +- .../aws-lambda-event-sources/package.json | 4 +- .../aws-lambda-nodejs/lib/function.ts | 4 +- .../@aws-cdk/aws-lambda-nodejs/package.json | 4 +- .../aws-lambda-python/lib/function.ts | 4 +- .../@aws-cdk/aws-lambda-python/lib/layer.ts | 4 +- .../@aws-cdk/aws-lambda-python/package.json | 4 +- packages/@aws-cdk/aws-lambda/lib/code.ts | 15 +- .../@aws-cdk/aws-lambda/lib/destination.ts | 2 +- .../@aws-cdk/aws-lambda/lib/function-base.ts | 9 +- .../@aws-cdk/aws-lambda/lib/permission.ts | 2 +- .../private/scalable-function-attribute.ts | 3 +- .../aws-lambda/lib/scalable-attribute-api.ts | 3 +- .../aws-lambda/lib/singleton-lambda.ts | 8 +- packages/@aws-cdk/aws-lambda/package.json | 4 +- .../@aws-cdk/aws-licensemanager/package.json | 6 +- .../aws-logs-destinations/lib/kinesis.ts | 2 +- .../aws-logs-destinations/lib/lambda.ts | 2 +- .../aws-logs-destinations/package.json | 4 +- .../aws-logs/lib/cross-account-destination.ts | 2 +- .../@aws-cdk/aws-logs/lib/log-retention.ts | 6 +- .../aws-logs/lib/subscription-filter.ts | 6 +- packages/@aws-cdk/aws-logs/package.json | 4 +- packages/@aws-cdk/aws-macie/package.json | 6 +- .../aws-managedblockchain/package.json | 4 +- .../@aws-cdk/aws-mediaconvert/package.json | 4 +- packages/@aws-cdk/aws-medialive/package.json | 4 +- .../@aws-cdk/aws-mediapackage/package.json | 6 +- packages/@aws-cdk/aws-mediastore/package.json | 4 +- packages/@aws-cdk/aws-msk/package.json | 4 +- packages/@aws-cdk/aws-mwaa/package.json | 6 +- packages/@aws-cdk/aws-neptune/package.json | 4 +- .../@aws-cdk/aws-networkfirewall/package.json | 6 +- .../@aws-cdk/aws-networkmanager/package.json | 6 +- packages/@aws-cdk/aws-opsworks/package.json | 4 +- packages/@aws-cdk/aws-opsworkscm/package.json | 4 +- packages/@aws-cdk/aws-pinpoint/package.json | 4 +- .../@aws-cdk/aws-pinpointemail/package.json | 4 +- packages/@aws-cdk/aws-qldb/package.json | 4 +- packages/@aws-cdk/aws-ram/package.json | 4 +- .../@aws-cdk/aws-rds/lib/cluster-engine.ts | 18 +- .../@aws-cdk/aws-rds/lib/instance-engine.ts | 12 +- packages/@aws-cdk/aws-rds/lib/private/util.ts | 3 +- packages/@aws-cdk/aws-rds/package.json | 4 +- packages/@aws-cdk/aws-redshift/package.json | 4 +- .../@aws-cdk/aws-resourcegroups/package.json | 6 +- packages/@aws-cdk/aws-robomaker/package.json | 4 +- .../lib/website-redirect.ts | 6 +- .../aws-route53-patterns/package.json | 4 +- .../lib/cloudfront-target.ts | 3 +- .../@aws-cdk/aws-route53-targets/package.json | 4 +- packages/@aws-cdk/aws-route53/lib/util.ts | 3 +- .../lib/vpc-endpoint-service-domain-name.ts | 6 +- packages/@aws-cdk/aws-route53/package.json | 4 +- .../@aws-cdk/aws-route53resolver/package.json | 4 +- packages/@aws-cdk/aws-s3-assets/lib/asset.ts | 2 +- packages/@aws-cdk/aws-s3-assets/package.json | 4 +- .../lib/bucket-deployment.ts | 2 +- .../@aws-cdk/aws-s3-deployment/lib/source.ts | 8 +- .../@aws-cdk/aws-s3-deployment/package.json | 4 +- .../aws-s3-notifications/lib/lambda.ts | 5 +- .../@aws-cdk/aws-s3-notifications/lib/sns.ts | 2 +- .../@aws-cdk/aws-s3-notifications/lib/sqs.ts | 2 +- .../aws-s3-notifications/package.json | 4 +- packages/@aws-cdk/aws-s3/lib/bucket.ts | 14 +- packages/@aws-cdk/aws-s3/lib/destination.ts | 3 +- .../notifications-resource-handler.ts | 7 +- .../notifications-resource.ts | 5 +- packages/@aws-cdk/aws-s3/package.json | 4 +- packages/@aws-cdk/aws-sagemaker/package.json | 4 +- packages/@aws-cdk/aws-sam/package.json | 4 +- packages/@aws-cdk/aws-sdb/package.json | 4 +- .../aws-secretsmanager/lib/secret-rotation.ts | 6 +- .../@aws-cdk/aws-secretsmanager/lib/secret.ts | 14 +- .../@aws-cdk/aws-secretsmanager/package.json | 4 +- .../@aws-cdk/aws-securityhub/package.json | 4 +- .../@aws-cdk/aws-servicecatalog/package.json | 4 +- .../aws-servicediscovery/package.json | 4 +- .../@aws-cdk/aws-ses-actions/package.json | 4 +- .../@aws-cdk/aws-ses/lib/receipt-filter.ts | 6 +- packages/@aws-cdk/aws-ses/lib/receipt-rule.ts | 6 +- packages/@aws-cdk/aws-ses/package.json | 4 +- packages/@aws-cdk/aws-signer/package.json | 6 +- .../aws-sns-subscriptions/lib/lambda.ts | 5 +- .../@aws-cdk/aws-sns-subscriptions/lib/sqs.ts | 5 +- .../aws-sns-subscriptions/package.json | 4 +- packages/@aws-cdk/aws-sns/lib/subscriber.ts | 2 +- packages/@aws-cdk/aws-sns/lib/topic-base.ts | 15 +- packages/@aws-cdk/aws-sns/package.json | 4 +- packages/@aws-cdk/aws-sqs/lib/queue-base.ts | 15 +- packages/@aws-cdk/aws-sqs/package.json | 4 +- packages/@aws-cdk/aws-ssm/lib/parameter.ts | 6 +- packages/@aws-cdk/aws-ssm/package.json | 4 +- packages/@aws-cdk/aws-sso/package.json | 6 +- .../aws-stepfunctions-tasks/package.json | 4 +- .../lib/state-machine-fragment.ts | 4 +- .../aws-stepfunctions/lib/states/map.ts | 2 +- .../aws-stepfunctions/lib/states/parallel.ts | 2 +- .../aws-stepfunctions/lib/states/state.ts | 12 +- .../@aws-cdk/aws-stepfunctions/package.json | 4 +- .../test/states-language.test.ts | 10 +- packages/@aws-cdk/aws-synthetics/lib/code.ts | 2 +- packages/@aws-cdk/aws-synthetics/package.json | 4 +- packages/@aws-cdk/aws-timestream/package.json | 6 +- packages/@aws-cdk/aws-transfer/package.json | 4 +- packages/@aws-cdk/aws-waf/package.json | 4 +- .../@aws-cdk/aws-wafregional/package.json | 4 +- packages/@aws-cdk/aws-wafv2/package.json | 4 +- packages/@aws-cdk/aws-workspaces/package.json | 4 +- .../cloudformation-include/lib/cfn-include.ts | 14 +- .../cloudformation-include/package.json | 4 +- packages/@aws-cdk/core/lib/annotations.ts | 9 +- packages/@aws-cdk/core/lib/aspect.ts | 20 +- packages/@aws-cdk/core/lib/asset-staging.ts | 6 +- packages/@aws-cdk/core/lib/cfn-element.ts | 10 +- packages/@aws-cdk/core/lib/cfn-json.ts | 6 +- packages/@aws-cdk/core/lib/cfn-output.ts | 5 +- packages/@aws-cdk/core/lib/cfn-pseudo.ts | 2 +- .../@aws-cdk/core/lib/construct-compat.ts | 549 ------------------ .../custom-resource-provider.ts | 6 +- packages/@aws-cdk/core/lib/dependency.ts | 2 +- packages/@aws-cdk/core/lib/feature-flags.ts | 2 +- packages/@aws-cdk/core/lib/index.ts | 1 - packages/@aws-cdk/core/lib/names.ts | 5 +- packages/@aws-cdk/core/lib/nested-stack.ts | 7 +- .../core/lib/private/asset-parameters.ts | 2 +- .../core/lib/private/cfn-reference.ts | 3 +- .../core/lib/private/cfn-utils-provider.ts | 2 +- .../core/lib/private/metadata-resource.ts | 2 +- .../@aws-cdk/core/lib/private/prepare-app.ts | 35 +- packages/@aws-cdk/core/lib/private/refs.ts | 2 +- packages/@aws-cdk/core/lib/private/resolve.ts | 6 +- .../@aws-cdk/core/lib/private/synthesis.ts | 75 +-- .../core/lib/private/tree-metadata.ts | 3 +- packages/@aws-cdk/core/lib/reference.ts | 2 +- packages/@aws-cdk/core/lib/resolvable.ts | 2 +- packages/@aws-cdk/core/lib/resource.ts | 8 +- packages/@aws-cdk/core/lib/runtime.ts | 2 +- .../core/lib/stack-synthesizers/_shared.ts | 5 +- .../bootstrapless-synthesizer.ts | 2 +- .../stack-synthesizers/default-synthesizer.ts | 2 +- .../core/lib/stack-synthesizers/legacy.ts | 3 +- .../core/lib/stack-synthesizers/nested.ts | 3 +- .../stack-synthesizers/stack-synthesizer.ts | 3 +- .../core/lib/stack-synthesizers/types.ts | 17 +- packages/@aws-cdk/core/lib/stack.ts | 23 +- packages/@aws-cdk/core/lib/stage.ts | 6 +- packages/@aws-cdk/core/lib/tag-aspect.ts | 3 +- packages/@aws-cdk/core/package.json | 4 +- .../@aws-cdk/core/test/annotations.test.ts | 25 +- packages/@aws-cdk/core/test/app.test.ts | 9 +- packages/@aws-cdk/core/test/aspect.test.ts | 2 +- .../@aws-cdk/core/test/cfn-resource.test.ts | 3 +- packages/@aws-cdk/core/test/construct.test.ts | 92 ++- packages/@aws-cdk/core/test/context.test.ts | 3 +- .../core/test/cross-environment-token.test.ts | 3 +- .../@aws-cdk/core/test/logical-id.test.ts | 3 +- packages/@aws-cdk/core/test/output.test.ts | 7 +- packages/@aws-cdk/core/test/parameter.test.ts | 3 +- .../core/test/private/tree-metadata.test.ts | 3 +- packages/@aws-cdk/core/test/resource.test.ts | 3 +- packages/@aws-cdk/core/test/stack.test.ts | 5 +- packages/@aws-cdk/core/test/stage.test.ts | 25 +- packages/@aws-cdk/core/test/synthesis.test.ts | 75 +-- .../@aws-cdk/core/test/tag-aspect.test.ts | 3 +- packages/@aws-cdk/core/test/util.test.ts | 3 +- .../aws-custom-resource.ts | 2 +- .../lib/provider-framework/provider.ts | 6 +- .../waiter-state-machine.ts | 3 +- .../@aws-cdk/custom-resources/package.json | 4 +- .../integration-test-fixtures/s3-assert.ts | 8 +- .../integration-test-fixtures/s3-file.ts | 8 +- .../example-construct-library/package.json | 4 +- .../@aws-cdk/lambda-layer-awscli/package.json | 4 +- .../lambda-layer-kubectl/package.json | 4 +- .../lib/actions/deploy-cdk-stack-action.ts | 8 +- .../lib/actions/publish-assets-action.ts | 8 +- .../lib/actions/update-pipeline-action.ts | 8 +- packages/@aws-cdk/pipelines/lib/pipeline.ts | 12 +- packages/@aws-cdk/pipelines/lib/stage.ts | 6 +- .../lib/synths/simple-synth-action.ts | 3 +- .../pipelines/lib/validation/_files.ts | 2 +- .../lib/validation/shell-script-action.ts | 2 +- packages/@aws-cdk/pipelines/package.json | 4 +- .../@monocdk-experiment/assert/package.json | 2 +- packages/aws-cdk-lib/package.json | 4 +- .../%name.PascalCased%.template.csproj | 1 + .../%name.PascalCased%Stack.template.cs | 1 + .../%name.PascalCased%.template.fsproj | 1 + .../v2/app/java/pom.template.xml | 7 + .../%name.PascalCased%Stack.template.java | 2 +- .../javascript/lib/%name%-stack.template.js | 8 +- .../v2/app/javascript/package.template.json | 2 +- .../%name.PythonModule%_stack.template.py | 8 +- .../v2/app/python/setup.template.py | 1 + .../typescript/lib/%name%-stack.template.ts | 7 +- .../v2/app/typescript/package.template.json | 2 +- .../v2/lib/typescript/lib/index.template.ts | 6 +- .../v2/lib/typescript/package.template.json | 4 +- .../%name.PascalCased%.template.csproj | 1 + .../%name.PascalCased%Stack.template.cs | 1 + .../%name.PascalCased%.template.fsproj | 1 + .../v2/sample-app/java/pom.template.xml | 5 + .../%name.PascalCased%Stack.template.java | 2 +- .../javascript/package.template.json | 2 +- .../%name.PythonModule%_stack.template.py | 10 +- .../v2/sample-app/python/setup.template.py | 1 + .../typescript/lib/%name%-stack.template.ts | 9 +- .../typescript/package.template.json | 2 +- packages/aws-cdk/lib/init.ts | 3 + packages/aws-cdk/package.json | 1 + packages/awslint/lib/rules/construct.ts | 2 +- packages/awslint/lib/rules/core-types.ts | 13 +- packages/cdk-dasm/README.md | 15 +- packages/cdk-dasm/lib/dasm.ts | 3 +- .../test/__snapshots__/dasm.test.js.snap | 12 +- packages/decdk/package.json | 2 +- packages/decdk/test/fixture/tsconfig.json | 2 +- packages/monocdk/package.json | 4 +- tools/cfn2ts/lib/codegen.ts | 5 +- tools/cfn2ts/lib/genspec.ts | 1 + tools/pkglint/lib/rules.ts | 9 +- yarn.lock | 11 +- 545 files changed, 1470 insertions(+), 2148 deletions(-) delete mode 100644 packages/@aws-cdk/core/lib/construct-compat.ts diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/environment.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/environment.ts index dcff0d28960b4..68d4671a83432 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/environment.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/environment.ts @@ -1,6 +1,6 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as ecs from '@aws-cdk/aws-ecs'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { EnvironmentCapacityType } from './extensions/extension-interfaces'; /** @@ -64,11 +64,11 @@ export interface IEnvironment { * or it can create it's own VPC and cluster. By default it will create * a cluster with Fargate capacity. */ -export class Environment extends cdk.Construct implements IEnvironment { +export class Environment extends Construct implements IEnvironment { /** * Import an existing environment from its attributes. */ - public static fromEnvironmentAttributes(scope: cdk.Construct, id: string, attrs: EnvironmentAttributes): IEnvironment { + public static fromEnvironmentAttributes(scope: Construct, id: string, attrs: EnvironmentAttributes): IEnvironment { return new ImportedEnvironment(scope, id, attrs); } @@ -92,9 +92,9 @@ export class Environment extends cdk.Construct implements IEnvironment { */ public readonly capacityType: EnvironmentCapacityType; - private readonly scope: cdk.Construct; + private readonly scope: Construct; - constructor(scope: cdk.Construct, id: string, props?: EnvironmentProps) { + constructor(scope: Construct, id: string, props?: EnvironmentProps) { super(scope, id); this.scope = scope; @@ -139,13 +139,13 @@ export interface EnvironmentAttributes { cluster: ecs.ICluster; } -export class ImportedEnvironment extends cdk.Construct implements IEnvironment { +export class ImportedEnvironment extends Construct implements IEnvironment { public readonly capacityType: EnvironmentCapacityType; public readonly cluster: ecs.ICluster; public readonly id: string; public readonly vpc: ec2.IVpc; - constructor(scope: cdk.Construct, id: string, props: EnvironmentAttributes) { + constructor(scope: Construct, id: string, props: EnvironmentAttributes) { super(scope, id); this.id = id; diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/appmesh.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/appmesh.ts index 65f77a81c9fac..59c653f656b02 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/appmesh.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/appmesh.ts @@ -5,6 +5,7 @@ import * as ecs from '@aws-cdk/aws-ecs'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; import * as regionInfo from '@aws-cdk/region-info'; +import { Construct } from 'constructs'; import { Service } from '../service'; import { Container } from './container'; import { ServiceExtension, ServiceBuild } from './extension-interfaces'; @@ -63,7 +64,7 @@ export class AppMeshExtension extends ServiceExtension { } } - public prehook(service: Service, scope: cdk.Construct) { + public prehook(service: Service, scope: Construct) { this.parentService = service; this.scope = scope; diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/assign-public-ip.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/assign-public-ip.ts index 57f71764019b8..b7501385373b6 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/assign-public-ip.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/assign-public-ip.ts @@ -1,7 +1,7 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as ecs from '@aws-cdk/aws-ecs'; import * as route53 from '@aws-cdk/aws-route53'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Service } from '../../service'; import { Container } from '../container'; import { ServiceExtension, ServiceBuild, EnvironmentCapacityType } from '../extension-interfaces'; @@ -52,7 +52,7 @@ export class AssignPublicIpExtension extends ServiceExtension { return Boolean(this.dns); } - public prehook(service: Service, _scope: cdk.Construct) { + public prehook(service: Service, _scope: Construct) { super.prehook(service, _scope); if (service.capacityType != EnvironmentCapacityType.FARGATE) { diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/task-record-manager.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/task-record-manager.ts index 3772f4432cc04..dd0bd0718d2e9 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/task-record-manager.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/assign-public-ip/task-record-manager.ts @@ -10,6 +10,7 @@ import * as route53 from '@aws-cdk/aws-route53'; import * as sqs from '@aws-cdk/aws-sqs'; import * as cdk from '@aws-cdk/core'; import * as customresources from '@aws-cdk/custom-resources'; +import { Construct } from 'constructs'; export interface TaskRecordManagerProps { service: ecs.Ec2Service | ecs.FargateService; @@ -21,8 +22,8 @@ export interface TaskRecordManagerProps { * An event-driven serverless app to maintain a list of public ips in a Route 53 * hosted zone. */ -export class TaskRecordManager extends cdk.Construct { - constructor(scope: cdk.Construct, id: string, props: TaskRecordManagerProps) { +export class TaskRecordManager extends Construct { + constructor(scope: Construct, id: string, props: TaskRecordManagerProps) { super(scope, id); // Poison pills go here. diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts index cd59b24f27860..a6d6bd19e49c8 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts @@ -1,6 +1,6 @@ import * as ecs from '@aws-cdk/aws-ecs'; import * as iam from '@aws-cdk/aws-iam'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Service } from '../service'; import { ServiceExtension } from './extension-interfaces'; @@ -28,7 +28,7 @@ export class CloudwatchAgentExtension extends ServiceExtension { super('cloudwatchAgent'); } - public prehook(service: Service, scope: cdk.Construct) { + public prehook(service: Service, scope: Construct) { this.parentService = service; this.scope = scope; } diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/extension-interfaces.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/extension-interfaces.ts index bf1b213a25ba3..14bf499d13ce5 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/extension-interfaces.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/extension-interfaces.ts @@ -1,5 +1,6 @@ import * as ecs from '@aws-cdk/aws-ecs'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Service } from '../service'; /** @@ -105,7 +106,7 @@ export abstract class ServiceExtension { * the extension is told what Service it is now working on. */ protected parentService!: Service; - protected scope!: cdk.Construct; + protected scope!: Construct; // A list of other extensions which want to mutate the // container definition for this extension. @@ -154,7 +155,7 @@ export abstract class ServiceExtension { * @param parent - The parent service which this extension has been added to * @param scope - The scope that this extension should create resources in */ - public prehook(parent: Service, scope: cdk.Construct) { + public prehook(parent: Service, scope: Construct) { this.parentService = parent; this.scope = scope; } diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/firelens.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/firelens.ts index 03c23e015eaf7..bb11e3df49a4f 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/firelens.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/firelens.ts @@ -1,6 +1,7 @@ import * as ecs from '@aws-cdk/aws-ecs'; import * as awslogs from '@aws-cdk/aws-logs'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Service } from '../service'; import { Container } from './container'; import { ContainerMutatingHook, ServiceExtension } from './extension-interfaces'; @@ -63,7 +64,7 @@ export class FireLensExtension extends ServiceExtension { super('firelens'); } - public prehook(service: Service, scope: cdk.Construct) { + public prehook(service: Service, scope: Construct) { this.parentService = service; // Create a log group for the service, into which FireLens diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/http-load-balancer.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/http-load-balancer.ts index c00481d1f424c..af54a305cc699 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/http-load-balancer.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/http-load-balancer.ts @@ -1,6 +1,7 @@ import * as ecs from '@aws-cdk/aws-ecs'; import * as alb from '@aws-cdk/aws-elasticloadbalancingv2'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Service } from '../service'; import { ServiceExtension, ServiceBuild } from './extension-interfaces'; @@ -17,7 +18,7 @@ export class HttpLoadBalancerExtension extends ServiceExtension { } // Before the service is created go ahead and create the load balancer itself. - public prehook(service: Service, scope: cdk.Construct) { + public prehook(service: Service, scope: Construct) { this.parentService = service; this.loadBalancer = new alb.ApplicationLoadBalancer(scope, `${this.parentService.id}-load-balancer`, { diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/service.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/service.ts index 29134a8c83260..63af3d586e34a 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/service.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/service.ts @@ -1,6 +1,6 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as ecs from '@aws-cdk/aws-ecs'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IEnvironment } from './environment'; import { EnvironmentCapacityType, ServiceBuild } from './extensions/extension-interfaces'; import { ServiceDescription } from './service-description'; @@ -24,7 +24,7 @@ export interface ServiceProps { * A service builder class. This construct support various extensions * which can construct an ECS service progressively. */ -export class Service extends cdk.Construct { +export class Service extends Construct { /** * The underlying ECS service that was created */ @@ -72,9 +72,9 @@ export class Service extends cdk.Construct { */ private urls: Record = {}; - private readonly scope: cdk.Construct; + private readonly scope: Construct; - constructor(scope: cdk.Construct, id: string, props: ServiceProps) { + constructor(scope: Construct, id: string, props: ServiceProps) { super(scope, id); this.scope = scope; diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index ee31c4a12528b..eea2d3553aa45 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -67,7 +67,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -92,7 +92,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/alexa-ask/package.json b/packages/@aws-cdk/alexa-ask/package.json index bea98e17b1b6b..7758e78a06c8a 100644 --- a/packages/@aws-cdk/alexa-ask/package.json +++ b/packages/@aws-cdk/alexa-ask/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/app-delivery/lib/pipeline-deploy-stack-action.ts b/packages/@aws-cdk/app-delivery/lib/pipeline-deploy-stack-action.ts index 03685cfc9c413..047c006e5dff1 100644 --- a/packages/@aws-cdk/app-delivery/lib/pipeline-deploy-stack-action.ts +++ b/packages/@aws-cdk/app-delivery/lib/pipeline-deploy-stack-action.ts @@ -5,6 +5,7 @@ import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; export interface PipelineDeployStackActionProps { /** @@ -147,7 +148,7 @@ export class PipelineDeployStackAction implements codepipeline.IAction { }); } - public bind(scope: cdk.Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + public bind(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { if (this.stack.environment !== cdk.Stack.of(scope).environment) { // FIXME: Add the necessary to extend to stacks in a different account diff --git a/packages/@aws-cdk/app-delivery/package.json b/packages/@aws-cdk/app-delivery/package.json index e773aeba65a62..7a2c8532f3973 100644 --- a/packages/@aws-cdk/app-delivery/package.json +++ b/packages/@aws-cdk/app-delivery/package.json @@ -57,7 +57,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "devDependencies": { "@aws-cdk/assert": "0.0.0", @@ -95,7 +95,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/assert/lib/synth-utils.ts b/packages/@aws-cdk/assert/lib/synth-utils.ts index bb8d9a437afd9..3cd69d0889aee 100644 --- a/packages/@aws-cdk/assert/lib/synth-utils.ts +++ b/packages/@aws-cdk/assert/lib/synth-utils.ts @@ -7,7 +7,7 @@ export class SynthUtils { /** * Returns the cloud assembly template artifact for a stack. */ - public static synthesize(stack: core.Stack, options: core.SynthesisOptions = { }): cxapi.CloudFormationStackArtifact { + public static synthesize(stack: core.Stack, options: core.StageSynthesisOptions = { }): cxapi.CloudFormationStackArtifact { // always synthesize against the root (be it an App or whatever) so all artifacts will be included const assembly = synthesizeApp(stack, options); return assembly.getStackArtifact(stack.artifactId); @@ -16,7 +16,7 @@ export class SynthUtils { /** * Synthesizes the stack and returns the resulting CloudFormation template. */ - public static toCloudFormation(stack: core.Stack, options: core.SynthesisOptions = { }): any { + public static toCloudFormation(stack: core.Stack, options: core.StageSynthesisOptions = { }): any { const synth = this._synthesizeWithNested(stack, options); if (synth instanceof cxapi.CloudFormationStackArtifact) { return synth.template; @@ -48,7 +48,7 @@ export class SynthUtils { * @return CloudFormationStackArtifact for normal stacks or the actual template for nested stacks * @internal */ - public static _synthesizeWithNested(stack: core.Stack, options: core.SynthesisOptions = { }): cxapi.CloudFormationStackArtifact | object { + public static _synthesizeWithNested(stack: core.Stack, options: core.StageSynthesisOptions = { }): cxapi.CloudFormationStackArtifact | object { // always synthesize against the root (be it an App or whatever) so all artifacts will be included const assembly = synthesizeApp(stack, options); @@ -64,7 +64,7 @@ export class SynthUtils { /** * Synthesizes the app in which a stack resides and returns the cloud assembly object. */ -function synthesizeApp(stack: core.Stack, options: core.SynthesisOptions) { +function synthesizeApp(stack: core.Stack, options: core.StageSynthesisOptions) { const root = stack.node.root; if (!core.Stage.isStage(root)) { throw new Error('unexpected: all stacks must be part of a Stage or an App'); diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 55803a9239517..c2444a9ede633 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -33,11 +33,11 @@ "@aws-cdk/cloudformation-diff": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "jest": "^26.6.3" }, "repository": { diff --git a/packages/@aws-cdk/assets/lib/staging.ts b/packages/@aws-cdk/assets/lib/staging.ts index 3a441a0219f55..34b86f648b251 100644 --- a/packages/@aws-cdk/assets/lib/staging.ts +++ b/packages/@aws-cdk/assets/lib/staging.ts @@ -1,4 +1,5 @@ -import { AssetStaging, Construct } from '@aws-cdk/core'; +import { AssetStaging } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { toSymlinkFollow } from './compat'; import { FingerprintOptions } from './fs/options'; diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index 07dc8502b48eb..b1791d6fa0963 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -84,13 +84,13 @@ "dependencies": { "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-accessanalyzer/package.json b/packages/@aws-cdk/aws-accessanalyzer/package.json index eddb6c5832367..5d1c39ee62e43 100644 --- a/packages/@aws-cdk/aws-accessanalyzer/package.json +++ b/packages/@aws-cdk/aws-accessanalyzer/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-acmpca/package.json b/packages/@aws-cdk/aws-acmpca/package.json index bb5a5446376b1..5422e74d07d87 100644 --- a/packages/@aws-cdk/aws-acmpca/package.json +++ b/packages/@aws-cdk/aws-acmpca/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-amazonmq/package.json b/packages/@aws-cdk/aws-amazonmq/package.json index fbb4e4c24915e..9676bb176e4f2 100644 --- a/packages/@aws-cdk/aws-amazonmq/package.json +++ b/packages/@aws-cdk/aws-amazonmq/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-amplify/lib/basic-auth.ts b/packages/@aws-cdk/aws-amplify/lib/basic-auth.ts index e3ac7c0967aa6..afbe6dd2072fe 100644 --- a/packages/@aws-cdk/aws-amplify/lib/basic-auth.ts +++ b/packages/@aws-cdk/aws-amplify/lib/basic-auth.ts @@ -1,10 +1,7 @@ import * as kms from '@aws-cdk/aws-kms'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import { SecretValue } from '@aws-cdk/core'; - -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Properties for a BasicAuth @@ -82,7 +79,7 @@ export class BasicAuth { /** * Binds this Basic Auth configuration to an App */ - public bind(scope: CoreConstruct, id: string): BasicAuthConfig { + public bind(scope: Construct, id: string): BasicAuthConfig { const config = { enableBasicAuth: true, username: this.props.username, diff --git a/packages/@aws-cdk/aws-amplify/lib/domain.ts b/packages/@aws-cdk/aws-amplify/lib/domain.ts index b657ebdefb247..0e93f4e96c06b 100644 --- a/packages/@aws-cdk/aws-amplify/lib/domain.ts +++ b/packages/@aws-cdk/aws-amplify/lib/domain.ts @@ -116,6 +116,8 @@ export class Domain extends Resource { this.domainAutoSubDomainCreationPatterns = domain.attrAutoSubDomainCreationPatterns; this.domainAutoSubDomainIamRole = domain.attrAutoSubDomainIamRole; this.domainEnableAutoSubDomain = domain.attrEnableAutoSubDomain; + + this.node.addValidation({ validate: () => this.validateDomain() }); } /** @@ -136,7 +138,7 @@ export class Domain extends Resource { return this.mapSubDomain(branch, ''); } - protected validate() { + private validateDomain() { if (this.subDomains.length === 0) { return ['The domain doesn\'t contain any subdomains']; } diff --git a/packages/@aws-cdk/aws-amplify/package.json b/packages/@aws-cdk/aws-amplify/package.json index 2d107216bd591..1fd6faa048cb4 100644 --- a/packages/@aws-cdk/aws-amplify/package.json +++ b/packages/@aws-cdk/aws-amplify/package.json @@ -89,7 +89,7 @@ "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-iam": "0.0.0", @@ -98,7 +98,7 @@ "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-apigateway/lib/api-definition.ts b/packages/@aws-cdk/aws-apigateway/lib/api-definition.ts index 652c531de9c38..7efbe5440779f 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/api-definition.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/api-definition.ts @@ -1,6 +1,6 @@ import * as s3 from '@aws-cdk/aws-s3'; import * as s3_assets from '@aws-cdk/aws-s3-assets'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Represents an OpenAPI definition asset. @@ -80,7 +80,7 @@ export abstract class ApiDefinition { * @param scope The binding scope. Don't be smart about trying to down-cast or * assume it's initialized. You may just use it as a construct scope. */ - public abstract bind(scope: cdk.Construct): ApiDefinitionConfig; + public abstract bind(scope: Construct): ApiDefinitionConfig; } /** @@ -136,7 +136,7 @@ export class S3ApiDefinition extends ApiDefinition { this.bucketName = bucket.bucketName; } - public bind(_scope: cdk.Construct): ApiDefinitionConfig { + public bind(_scope: Construct): ApiDefinitionConfig { return { s3Location: { bucket: this.bucketName, @@ -164,7 +164,7 @@ export class InlineApiDefinition extends ApiDefinition { } } - public bind(_scope: cdk.Construct): ApiDefinitionConfig { + public bind(_scope: Construct): ApiDefinitionConfig { return { inlineDefinition: this.definition, }; @@ -182,7 +182,7 @@ export class AssetApiDefinition extends ApiDefinition { super(); } - public bind(scope: cdk.Construct): ApiDefinitionConfig { + public bind(scope: Construct): ApiDefinitionConfig { // If the same AssetAPIDefinition is used multiple times, retain only the first instantiation. if (this.asset === undefined) { this.asset = new s3_assets.Asset(scope, 'APIDefinition', { diff --git a/packages/@aws-cdk/aws-apigateway/lib/apigatewayv2.ts b/packages/@aws-cdk/aws-apigateway/lib/apigatewayv2.ts index e04bcef476fca..df8213aa37c10 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/apigatewayv2.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/apigatewayv2.ts @@ -4,6 +4,7 @@ /* eslint-disable max-len */ import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Properties for defining a `AWS::ApiGatewayV2::Api` @@ -288,7 +289,7 @@ export class CfnApiV2 extends cdk.CfnResource implements cdk.IInspectable { * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnApiV2Props = {}) { + constructor(scope: Construct, id: string, props: CfnApiV2Props = {}) { super(scope, id, { type: CfnApiV2.CFN_RESOURCE_TYPE_NAME, properties: props }); this.apiKeySelectionExpression = props.apiKeySelectionExpression; @@ -616,7 +617,7 @@ export class CfnApiMappingV2 extends cdk.CfnResource implements cdk.IInspectable * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnApiMappingV2Props) { + constructor(scope: Construct, id: string, props: CfnApiMappingV2Props) { super(scope, id, { type: CfnApiMappingV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'domainName', this); @@ -842,7 +843,7 @@ export class CfnAuthorizerV2 extends cdk.CfnResource implements cdk.IInspectable * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnAuthorizerV2Props) { + constructor(scope: Construct, id: string, props: CfnAuthorizerV2Props) { super(scope, id, { type: CfnAuthorizerV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'authorizerType', this); @@ -1047,7 +1048,7 @@ export class CfnDeploymentV2 extends cdk.CfnResource implements cdk.IInspectable * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnDeploymentV2Props) { + constructor(scope: Construct, id: string, props: CfnDeploymentV2Props) { super(scope, id, { type: CfnDeploymentV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); @@ -1192,7 +1193,7 @@ export class CfnDomainNameV2 extends cdk.CfnResource implements cdk.IInspectable * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnDomainNameV2Props) { + constructor(scope: Construct, id: string, props: CfnDomainNameV2Props) { super(scope, id, { type: CfnDomainNameV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'domainName', this); this.attrRegionalDomainName = cdk.Token.asString(this.getAtt('RegionalDomainName')); @@ -1546,7 +1547,7 @@ export class CfnIntegrationV2 extends cdk.CfnResource implements cdk.IInspectabl * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnIntegrationV2Props) { + constructor(scope: Construct, id: string, props: CfnIntegrationV2Props) { super(scope, id, { type: CfnIntegrationV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'integrationType', this); @@ -1762,7 +1763,7 @@ export class CfnIntegrationResponseV2 extends cdk.CfnResource implements cdk.IIn * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnIntegrationResponseV2Props) { + constructor(scope: Construct, id: string, props: CfnIntegrationResponseV2Props) { super(scope, id, { type: CfnIntegrationResponseV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'integrationId', this); @@ -1937,7 +1938,7 @@ export class CfnModelV2 extends cdk.CfnResource implements cdk.IInspectable { * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnModelV2Props) { + constructor(scope: Construct, id: string, props: CfnModelV2Props) { super(scope, id, { type: CfnModelV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'name', this); @@ -2205,7 +2206,7 @@ export class CfnRouteV2 extends cdk.CfnResource implements cdk.IInspectable { * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnRouteV2Props) { + constructor(scope: Construct, id: string, props: CfnRouteV2Props) { super(scope, id, { type: CfnRouteV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'routeKey', this); @@ -2452,7 +2453,7 @@ export class CfnRouteResponseV2 extends cdk.CfnResource implements cdk.IInspecta * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnRouteResponseV2Props) { + constructor(scope: Construct, id: string, props: CfnRouteResponseV2Props) { super(scope, id, { type: CfnRouteResponseV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'routeId', this); @@ -2757,7 +2758,7 @@ export class CfnStageV2 extends cdk.CfnResource implements cdk.IInspectable { * @param id - scoped id of the resource * @param props - resource properties */ - constructor(scope: cdk.Construct, id: string, props: CfnStageV2Props) { + constructor(scope: Construct, id: string, props: CfnStageV2Props) { super(scope, id, { type: CfnStageV2.CFN_RESOURCE_TYPE_NAME, properties: props }); cdk.requireProperty(props, 'apiId', this); cdk.requireProperty(props, 'stageName', this); diff --git a/packages/@aws-cdk/aws-apigateway/lib/deployment.ts b/packages/@aws-cdk/aws-apigateway/lib/deployment.ts index a286e978fdafb..f62a58f4f59be 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/deployment.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/deployment.ts @@ -1,5 +1,5 @@ import * as crypto from 'crypto'; -import { Construct as CoreConstruct, Lazy, RemovalPolicy, Resource, CfnResource } from '@aws-cdk/core'; +import { Lazy, RemovalPolicy, Resource, CfnResource } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { CfnDeployment } from './apigateway.generated'; import { Method } from './method'; @@ -133,7 +133,7 @@ class LatestDeploymentResource extends CfnDeployment { private readonly originalLogicalId: string; private readonly api: IRestApi; - constructor(scope: CoreConstruct, id: string, props: LatestDeploymentResourceProps) { + constructor(scope: Construct, id: string, props: LatestDeploymentResourceProps) { super(scope, id, { description: props.description, restApiId: props.restApi.restApiId, diff --git a/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts b/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts index 6374bb404902a..5373ba0e6ef46 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/integrations/aws.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { IConstruct } from 'constructs'; import { Integration, IntegrationConfig, IntegrationOptions, IntegrationType } from '../integration'; import { Method } from '../method'; import { parseAwsApiCall } from '../util'; @@ -69,7 +70,7 @@ export interface AwsIntegrationProps { * technology. */ export class AwsIntegration extends Integration { - private scope?: cdk.IConstruct; + private scope?: IConstruct; constructor(props: AwsIntegrationProps) { const backend = props.subdomain ? `${props.subdomain}.${props.service}` : props.service; diff --git a/packages/@aws-cdk/aws-apigateway/lib/restapi.ts b/packages/@aws-cdk/aws-apigateway/lib/restapi.ts index 0911c92dda94b..16b374d8186d7 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/restapi.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/restapi.ts @@ -718,6 +718,8 @@ export class RestApi extends RestApiBase { this.root = new RootResource(this, props, resource.attrRootResourceId); this.restApiRootResourceId = resource.attrRootResourceId; + + this.node.addValidation({ validate: () => this.validateRestApi() }); } /** @@ -783,7 +785,7 @@ export class RestApi extends RestApiBase { /** * Performs validation of the REST API. */ - protected validate() { + private validateRestApi() { if (this.methods.length === 0) { return ["The REST API doesn't contain any methods"]; } diff --git a/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts b/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts index f7d137f2c9e1a..06a168d31e557 100644 --- a/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts +++ b/packages/@aws-cdk/aws-apigateway/lib/vpc-link.ts @@ -80,6 +80,8 @@ export class VpcLink extends Resource implements IVpcLink { if (props.targets) { this.addTargets(...props.targets); } + + this.node.addValidation({ validate: () => this.validateVpcLink() }); } public addTargets(...targets: elbv2.INetworkLoadBalancer[]) { @@ -94,7 +96,7 @@ export class VpcLink extends Resource implements IVpcLink { return this._targets.map(t => t.loadBalancerDnsName); } - protected validate(): string[] { + private validateVpcLink(): string[] { if (this._targets.length === 0) { return ['No targets added to vpc link']; } diff --git a/packages/@aws-cdk/aws-apigateway/package.json b/packages/@aws-cdk/aws-apigateway/package.json index bf61c56adcd9a..109bb8bbf704a 100644 --- a/packages/@aws-cdk/aws-apigateway/package.json +++ b/packages/@aws-cdk/aws-apigateway/package.json @@ -93,7 +93,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -109,7 +109,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json index 2ad49881191d0..49b9cbb3cd2ae 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json @@ -87,7 +87,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-apigatewayv2": "0.0.0", @@ -97,7 +97,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-apigatewayv2/lib/http/integration.ts b/packages/@aws-cdk/aws-apigatewayv2/lib/http/integration.ts index e609c9396c08f..3bb30a1121f9b 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/lib/http/integration.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/lib/http/integration.ts @@ -5,10 +5,6 @@ import { IIntegration } from '../common'; import { IHttpApi } from './api'; import { HttpMethod, IHttpRoute } from './route'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Represents an Integration for an HTTP API. */ @@ -161,7 +157,7 @@ export interface HttpRouteIntegrationBindOptions { * If the `HttpRouteIntegration` being bound creates additional constructs, * this will be used as their parent scope. */ - readonly scope: CoreConstruct; + readonly scope: Construct; } /** diff --git a/packages/@aws-cdk/aws-apigatewayv2/lib/http/vpc-link.ts b/packages/@aws-cdk/aws-apigatewayv2/lib/http/vpc-link.ts index 27d478c335963..1cd87a12eacdb 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/lib/http/vpc-link.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/lib/http/vpc-link.ts @@ -1,5 +1,5 @@ import * as ec2 from '@aws-cdk/aws-ec2'; -import { IResource, Lazy, Resource } from '@aws-cdk/core'; +import { IResource, Lazy, Names, Resource } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { CfnVpcLink } from '../apigatewayv2.generated'; @@ -92,7 +92,7 @@ export class VpcLink extends Resource implements IVpcLink { this.vpc = props.vpc; const cfnResource = new CfnVpcLink(this, 'Resource', { - name: props.vpcLinkName || Lazy.stringValue({ produce: () => this.node.uniqueId }), + name: props.vpcLinkName || Lazy.stringValue({ produce: () => Names.uniqueId(this) }), subnetIds: Lazy.listValue({ produce: () => this.renderSubnets() }), securityGroupIds: Lazy.listValue({ produce: () => this.renderSecurityGroups() }), }); diff --git a/packages/@aws-cdk/aws-apigatewayv2/package.json b/packages/@aws-cdk/aws-apigatewayv2/package.json index 4247ff8b4aca9..2273b4773d06f 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2/package.json @@ -91,7 +91,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-cloudwatch": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-ec2": "0.0.0", @@ -99,7 +99,7 @@ "@aws-cdk/aws-certificatemanager": "0.0.0", "@aws-cdk/aws-cloudwatch": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-appconfig/package.json b/packages/@aws-cdk/aws-appconfig/package.json index 6aecfc8fe8909..2b53f982ac627 100644 --- a/packages/@aws-cdk/aws-appconfig/package.json +++ b/packages/@aws-cdk/aws-appconfig/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-appflow/package.json b/packages/@aws-cdk/aws-appflow/package.json index c958fda9717ae..77ecabd32dfc7 100644 --- a/packages/@aws-cdk/aws-appflow/package.json +++ b/packages/@aws-cdk/aws-appflow/package.json @@ -79,10 +79,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/base-scalable-attribute.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/base-scalable-attribute.ts index ee955d6d120d1..ab79f246c2d08 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/base-scalable-attribute.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/base-scalable-attribute.ts @@ -1,5 +1,4 @@ import * as iam from '@aws-cdk/aws-iam'; -import * as cdk from '@aws-cdk/core'; import { Construct } from 'constructs'; import { ScalableTarget, ScalingSchedule, ServiceNamespace } from './scalable-target'; import { BasicStepScalingPolicyProps } from './step-scaling-policy'; @@ -44,7 +43,7 @@ export interface BaseScalableAttributeProps extends EnableScalingProps { * - Don't expose all scaling methods (for example Dynamo tables don't support * Step Scaling, so the Dynamo subclass won't expose this method). */ -export abstract class BaseScalableAttribute extends cdk.Construct { +export abstract class BaseScalableAttribute extends Construct { private target: ScalableTarget; public constructor(scope: Construct, id: string, protected readonly props: BaseScalableAttributeProps) { diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts index 4cb7aa2328ebc..0ff9f200f263c 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-action.ts @@ -67,7 +67,7 @@ export interface StepScalingActionProps { * * This Action must be used as the target of a CloudWatch alarm to take effect. */ -export class StepScalingAction extends cdk.Construct { +export class StepScalingAction extends Construct { /** * ARN of the scaling policy */ diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts index dcead1cf8e37a..1949e53f771e2 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts @@ -63,7 +63,7 @@ export interface StepScalingPolicyProps extends BasicStepScalingPolicyProps { * * Implemented using one or more CloudWatch alarms and Step Scaling Policies. */ -export class StepScalingPolicy extends cdk.Construct { +export class StepScalingPolicy extends Construct { public readonly lowerAlarm?: cloudwatch.Alarm; public readonly lowerAction?: StepScalingAction; public readonly upperAlarm?: cloudwatch.Alarm; @@ -210,7 +210,7 @@ class StepScalingAlarmAction implements cloudwatch.IAlarmAction { constructor(private readonly stepScalingAction: StepScalingAction) { } - public bind(_scope: cdk.Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { + public bind(_scope: Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { return { alarmActionArn: this.stepScalingAction.scalingPolicyArn }; } } diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/target-tracking-scaling-policy.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/target-tracking-scaling-policy.ts index 65146b754757b..9ce19725958f6 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/target-tracking-scaling-policy.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/target-tracking-scaling-policy.ts @@ -115,7 +115,7 @@ export interface TargetTrackingScalingPolicyProps extends BasicTargetTrackingSca readonly scalingTarget: IScalableTarget; } -export class TargetTrackingScalingPolicy extends cdk.Construct { +export class TargetTrackingScalingPolicy extends Construct { /** * ARN of the scaling policy */ diff --git a/packages/@aws-cdk/aws-applicationautoscaling/package.json b/packages/@aws-cdk/aws-applicationautoscaling/package.json index 8fb1a539756fc..eaf5a6414575a 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/package.json +++ b/packages/@aws-cdk/aws-applicationautoscaling/package.json @@ -86,7 +86,7 @@ "@aws-cdk/aws-cloudwatch": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,7 +94,7 @@ "@aws-cdk/aws-cloudwatch": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-applicationinsights/package.json b/packages/@aws-cdk/aws-applicationinsights/package.json index 14049100acb78..046e2e03399c8 100644 --- a/packages/@aws-cdk/aws-applicationinsights/package.json +++ b/packages/@aws-cdk/aws-applicationinsights/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-appmesh/lib/client-policy.ts b/packages/@aws-cdk/aws-appmesh/lib/client-policy.ts index 03236ee1c8f32..0f3f10c46932c 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/client-policy.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/client-policy.ts @@ -1,5 +1,5 @@ import * as acmpca from '@aws-cdk/aws-acmpca'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; enum CertificateType { @@ -71,7 +71,7 @@ export abstract class ClientPolicy { /** * Returns Trust context based on trust type. */ - public abstract bind(scope: cdk.Construct): ClientPolicyConfig; + public abstract bind(scope: Construct): ClientPolicyConfig; } @@ -81,7 +81,7 @@ class ClientPolicyImpl extends ClientPolicy { private readonly certificateChain: string | undefined, private readonly certificateAuthorityArns: acmpca.ICertificateAuthority[] | undefined) { super(); } - public bind(_scope: cdk.Construct): ClientPolicyConfig { + public bind(_scope: Construct): ClientPolicyConfig { if (this.certificateType === CertificateType.ACMPCA && this.certificateAuthorityArns?.map(certificateArn => certificateArn.certificateAuthorityArn).length === 0) { throw new Error('You must provide at least one Certificate Authority when creating an ACM Trust ClientPolicy'); diff --git a/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts b/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts index 525bc4d2ba7e0..0812f635dfdd2 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/gateway-route-spec.ts @@ -1,4 +1,4 @@ -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnGatewayRoute } from './appmesh.generated'; import { Protocol } from './shared-interfaces'; import { IVirtualService } from './virtual-service'; @@ -119,7 +119,7 @@ export abstract class GatewayRouteSpec { * Called when the GatewayRouteSpec type is initialized. Can be used to enforce * mutual exclusivity with future properties */ - public abstract bind(scope: cdk.Construct): GatewayRouteSpecConfig; + public abstract bind(scope: Construct): GatewayRouteSpecConfig; } class HttpGatewayRouteSpec extends GatewayRouteSpec { @@ -147,7 +147,7 @@ class HttpGatewayRouteSpec extends GatewayRouteSpec { this.match = options.match; } - public bind(_scope: cdk.Construct): GatewayRouteSpecConfig { + public bind(_scope: Construct): GatewayRouteSpecConfig { const prefixPath = this.match ? this.match.prefixPath : '/'; if (prefixPath[0] != '/') { throw new Error(`Prefix Path must start with \'/\', got: ${prefixPath}`); @@ -190,7 +190,7 @@ class GrpcGatewayRouteSpec extends GatewayRouteSpec { this.routeTarget = options.routeTarget; } - public bind(_scope: cdk.Construct): GatewayRouteSpecConfig { + public bind(_scope: Construct): GatewayRouteSpecConfig { return { grpcSpecConfig: { action: { diff --git a/packages/@aws-cdk/aws-appmesh/lib/gateway-route.ts b/packages/@aws-cdk/aws-appmesh/lib/gateway-route.ts index 5bfb3b0ca21cd..d751a6c752e48 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/gateway-route.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/gateway-route.ts @@ -104,7 +104,7 @@ export class GatewayRoute extends cdk.Resource implements IGatewayRoute { constructor(scope: Construct, id: string, props: GatewayRouteProps) { super(scope, id, { - physicalName: props.gatewayRouteName || cdk.Lazy.stringValue({ produce: () => this.node.uniqueId }), + physicalName: props.gatewayRouteName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); this.virtualGateway = props.virtualGateway; diff --git a/packages/@aws-cdk/aws-appmesh/lib/route-spec.ts b/packages/@aws-cdk/aws-appmesh/lib/route-spec.ts index b3ce09f0c0031..ae0f8baf53ede 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/route-spec.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/route-spec.ts @@ -1,4 +1,4 @@ -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnRoute } from './appmesh.generated'; import { Protocol, HttpTimeout, GrpcTimeout, TcpTimeout } from './shared-interfaces'; import { IVirtualNode } from './virtual-node'; @@ -176,7 +176,7 @@ export abstract class RouteSpec { * Called when the GatewayRouteSpec type is initialized. Can be used to enforce * mutual exclusivity with future properties */ - public abstract bind(scope: cdk.Construct): RouteSpecConfig; + public abstract bind(scope: Construct): RouteSpecConfig; } class HttpRouteSpec extends RouteSpec { @@ -208,7 +208,7 @@ class HttpRouteSpec extends RouteSpec { this.timeout = props.timeout; } - public bind(_scope: cdk.Construct): RouteSpecConfig { + public bind(_scope: Construct): RouteSpecConfig { const prefixPath = this.match ? this.match.prefixPath : '/'; if (prefixPath[0] != '/') { throw new Error(`Prefix Path must start with \'/\', got: ${prefixPath}`); @@ -246,7 +246,7 @@ class TcpRouteSpec extends RouteSpec { this.timeout = props.timeout; } - public bind(_scope: cdk.Construct): RouteSpecConfig { + public bind(_scope: Construct): RouteSpecConfig { return { tcpRouteSpec: { action: { @@ -270,7 +270,7 @@ class GrpcRouteSpec extends RouteSpec { this.timeout = props.timeout; } - public bind(_scope: cdk.Construct): RouteSpecConfig { + public bind(_scope: Construct): RouteSpecConfig { return { grpcRouteSpec: { action: { diff --git a/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts b/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts index b5fca6525c851..91884cecb2550 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts @@ -1,5 +1,5 @@ import * as cloudmap from '@aws-cdk/aws-servicediscovery'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; @@ -63,7 +63,7 @@ export abstract class ServiceDiscovery { /** * Binds the current object when adding Service Discovery to a VirtualNode */ - public abstract bind(scope: cdk.Construct): ServiceDiscoveryConfig; + public abstract bind(scope: Construct): ServiceDiscoveryConfig; } class DnsServiceDiscovery extends ServiceDiscovery { @@ -74,7 +74,7 @@ class DnsServiceDiscovery extends ServiceDiscovery { this.hostname = hostname; } - public bind(_scope: cdk.Construct): ServiceDiscoveryConfig { + public bind(_scope: Construct): ServiceDiscoveryConfig { return { dns: { hostname: this.hostname, @@ -93,7 +93,7 @@ class CloudMapServiceDiscovery extends ServiceDiscovery { this.instanceAttributes = options.instanceAttributes; } - public bind(_scope: cdk.Construct): ServiceDiscoveryConfig { + public bind(_scope: Construct): ServiceDiscoveryConfig { return { cloudmap: { namespaceName: this.service.namespace.namespaceName, diff --git a/packages/@aws-cdk/aws-appmesh/lib/shared-interfaces.ts b/packages/@aws-cdk/aws-appmesh/lib/shared-interfaces.ts index cbd574489f9c4..01a103cb2dee9 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/shared-interfaces.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/shared-interfaces.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnVirtualGateway, CfnVirtualNode } from './appmesh.generated'; /** @@ -155,7 +156,7 @@ export abstract class AccessLog { * Called when the AccessLog type is initialized. Can be used to enforce * mutual exclusivity with future properties */ - public abstract bind(scope: cdk.Construct): AccessLogConfig; + public abstract bind(scope: Construct): AccessLogConfig; } /** @@ -174,7 +175,7 @@ class FileAccessLog extends AccessLog { this.filePath = filePath; } - public bind(_scope: cdk.Construct): AccessLogConfig { + public bind(_scope: Construct): AccessLogConfig { return { virtualNodeAccessLog: { file: { diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts index 7b111dbc0a67d..0fdcbbf7e256a 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnVirtualGateway } from './appmesh.generated'; import { validateHealthChecks } from './private/utils'; import { HealthCheck, Protocol } from './shared-interfaces'; @@ -80,7 +81,7 @@ export abstract class VirtualGatewayListener { * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ - public abstract bind(scope: cdk.Construct): VirtualGatewayListenerConfig; + public abstract bind(scope: Construct): VirtualGatewayListenerConfig; } /** @@ -116,7 +117,7 @@ class HttpGatewayListener extends VirtualGatewayListener { * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ - public bind(_scope: cdk.Construct): VirtualGatewayListenerConfig { + public bind(_scope: Construct): VirtualGatewayListenerConfig { return { listener: { portMapping: { @@ -172,7 +173,7 @@ class GrpcGatewayListener extends VirtualGatewayListener { * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ - public bind(_scope: cdk.Construct): VirtualGatewayListenerConfig { + public bind(_scope: Construct): VirtualGatewayListenerConfig { return { listener: { portMapping: { diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts index 1e1144fed1038..6c544f0b657a0 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway.ts @@ -161,7 +161,7 @@ export class VirtualGateway extends VirtualGatewayBase { constructor(scope: Construct, id: string, props: VirtualGatewayProps) { super(scope, id, { - physicalName: props.virtualGatewayName || cdk.Lazy.stringValue({ produce: () => this.node.uniqueId }), + physicalName: props.virtualGatewayName || cdk.Lazy.string({ produce: () => cdk.Names.uniqueId(this) }), }); this.mesh = props.mesh; diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts index 5793a746ee968..af690970ab192 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; import { validateHealthChecks } from './private/utils'; import { HealthCheck, Protocol, HttpTimeout, GrpcTimeout, TcpTimeout } from './shared-interfaces'; @@ -103,7 +104,7 @@ export abstract class VirtualNodeListener { /** * Binds the current object when adding Listener to a VirtualNode */ - public abstract bind(scope: cdk.Construct): VirtualNodeListenerConfig; + public abstract bind(scope: Construct): VirtualNodeListenerConfig; } @@ -113,7 +114,7 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { private readonly timeout: HttpTimeout | undefined, private readonly port: number = 8080) { super(); } - public bind(_scope: cdk.Construct): VirtualNodeListenerConfig { + public bind(_scope: Construct): VirtualNodeListenerConfig { return { listener: { portMapping: { diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-router-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-router-listener.ts index 7a5e867d0b7c9..a1faac006b357 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-router-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-router-listener.ts @@ -1,4 +1,4 @@ -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnVirtualRouter } from './appmesh.generated'; import { Protocol } from './shared-interfaces'; @@ -56,7 +56,7 @@ export abstract class VirtualRouterListener { * Called when the VirtualRouterListener type is initialized. Can be used to enforce * mutual exclusivity */ - public abstract bind(scope: cdk.Construct): VirtualRouterListenerConfig; + public abstract bind(scope: Construct): VirtualRouterListenerConfig; } class VirtualRouterListenerImpl extends VirtualRouterListener { @@ -69,7 +69,7 @@ class VirtualRouterListenerImpl extends VirtualRouterListener { this.port = port ?? 8080; } - bind(_scope: cdk.Construct): VirtualRouterListenerConfig { + bind(_scope: Construct): VirtualRouterListenerConfig { return { listener: { portMapping: { diff --git a/packages/@aws-cdk/aws-appmesh/package.json b/packages/@aws-cdk/aws-appmesh/package.json index fd2df36f62c83..d684ac2641dc2 100644 --- a/packages/@aws-cdk/aws-appmesh/package.json +++ b/packages/@aws-cdk/aws-appmesh/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-acmpca": "0.0.0", @@ -100,7 +100,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-appstream/package.json b/packages/@aws-cdk/aws-appstream/package.json index fdd8597fafa86..dc58f32d7dfe0 100644 --- a/packages/@aws-cdk/aws-appstream/package.json +++ b/packages/@aws-cdk/aws-appstream/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-appsync/lib/data-source.ts b/packages/@aws-cdk/aws-appsync/lib/data-source.ts index 96c578390dfbc..70e0576687de7 100644 --- a/packages/@aws-cdk/aws-appsync/lib/data-source.ts +++ b/packages/@aws-cdk/aws-appsync/lib/data-source.ts @@ -10,10 +10,6 @@ import { CfnDataSource } from './appsync.generated'; import { IGraphqlApi } from './graphqlapi-base'; import { BaseResolverProps, Resolver } from './resolver'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Base properties for an AppSync datasource */ @@ -91,7 +87,7 @@ export interface ExtendedDataSourceProps { /** * Abstract AppSync datasource implementation. Do not use directly but use subclasses for concrete datasources */ -export abstract class BaseDataSource extends CoreConstruct { +export abstract class BaseDataSource extends Construct { /** * the name of the data source */ diff --git a/packages/@aws-cdk/aws-appsync/lib/resolver.ts b/packages/@aws-cdk/aws-appsync/lib/resolver.ts index eb65a59f494fd..274783afd2dc4 100644 --- a/packages/@aws-cdk/aws-appsync/lib/resolver.ts +++ b/packages/@aws-cdk/aws-appsync/lib/resolver.ts @@ -5,10 +5,6 @@ import { BaseDataSource } from './data-source'; import { IGraphqlApi } from './graphqlapi-base'; import { MappingTemplate } from './mapping-template'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Basic properties for an AppSync resolver */ @@ -67,7 +63,7 @@ export interface ResolverProps extends ExtendedResolverProps { /** * An AppSync resolver */ -export class Resolver extends CoreConstruct { +export class Resolver extends Construct { /** * the ARN of the resolver */ diff --git a/packages/@aws-cdk/aws-appsync/package.json b/packages/@aws-cdk/aws-appsync/package.json index 4a0e001f03c80..675b7dd08f3a7 100644 --- a/packages/@aws-cdk/aws-appsync/package.json +++ b/packages/@aws-cdk/aws-appsync/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -105,7 +105,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-rds": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-athena/package.json b/packages/@aws-cdk/aws-athena/package.json index 714baad7c5ddf..60190909b1eb7 100644 --- a/packages/@aws-cdk/aws-athena/package.json +++ b/packages/@aws-cdk/aws-athena/package.json @@ -83,12 +83,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-autoscaling-common/package.json b/packages/@aws-cdk/aws-autoscaling-common/package.json index e467648f913c5..245c7aaed0a1b 100644 --- a/packages/@aws-cdk/aws-autoscaling-common/package.json +++ b/packages/@aws-cdk/aws-autoscaling-common/package.json @@ -76,13 +76,13 @@ "dependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/lambda-hook.ts b/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/lambda-hook.ts index 6c3c9cd4caae2..ef96772f6791e 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/lambda-hook.ts +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/lambda-hook.ts @@ -3,7 +3,7 @@ import * as kms from '@aws-cdk/aws-kms'; import * as lambda from '@aws-cdk/aws-lambda'; import * as sns from '@aws-cdk/aws-sns'; import * as subs from '@aws-cdk/aws-sns-subscriptions'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { TopicHook } from './topic-hook'; /** diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/queue-hook.ts b/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/queue-hook.ts index 640cd2a8b0ac6..a8d97df650b3a 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/queue-hook.ts +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/queue-hook.ts @@ -1,6 +1,6 @@ import * as autoscaling from '@aws-cdk/aws-autoscaling'; import * as sqs from '@aws-cdk/aws-sqs'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an SQS queue as a hook target diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/topic-hook.ts b/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/topic-hook.ts index 1f6546ebd75ac..5c6571fa90dfa 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/topic-hook.ts +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/lib/topic-hook.ts @@ -1,6 +1,6 @@ import * as autoscaling from '@aws-cdk/aws-autoscaling'; import * as sns from '@aws-cdk/aws-sns'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an SNS topic as a hook target diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index b6a51e18dc5c6..92243308c0f6f 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -82,7 +82,7 @@ "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,7 +94,7 @@ "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-autoscaling/lib/lifecycle-hook-target.ts b/packages/@aws-cdk/aws-autoscaling/lib/lifecycle-hook-target.ts index b72a3245eb4d5..539b4e55481c8 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/lifecycle-hook-target.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/lifecycle-hook-target.ts @@ -1,4 +1,4 @@ -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ILifecycleHook } from './lifecycle-hook'; /** diff --git a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts index 9b9939d740d16..78e64b28cb429 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-action.ts @@ -1,4 +1,4 @@ -import { Construct as CoreConstruct, Duration, Lazy } from '@aws-cdk/core'; +import { Duration, Lazy } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { IAutoScalingGroup } from './auto-scaling-group'; import { CfnScalingPolicy } from './autoscaling.generated'; @@ -60,7 +60,7 @@ export interface StepScalingActionProps { * * This Action must be used as the target of a CloudWatch alarm to take effect. */ -export class StepScalingAction extends CoreConstruct { +export class StepScalingAction extends Construct { /** * ARN of the scaling policy */ diff --git a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-policy.ts b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-policy.ts index a3a417bd126d5..01d8d715d8153 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-policy.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/step-scaling-policy.ts @@ -1,6 +1,6 @@ import { findAlarmThresholds, normalizeIntervals } from '@aws-cdk/aws-autoscaling-common'; import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; -import { Construct as CoreConstruct, Duration } from '@aws-cdk/core'; +import { Duration } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { IAutoScalingGroup } from './auto-scaling-group'; import { AdjustmentType, MetricAggregationType, StepScalingAction } from './step-scaling-action'; @@ -64,7 +64,7 @@ export interface StepScalingPolicyProps extends BasicStepScalingPolicyProps { * * Implemented using one or more CloudWatch alarms and Step Scaling Policies. */ -export class StepScalingPolicy extends CoreConstruct { +export class StepScalingPolicy extends Construct { public readonly lowerAlarm?: cloudwatch.Alarm; public readonly lowerAction?: StepScalingAction; public readonly upperAlarm?: cloudwatch.Alarm; @@ -211,7 +211,7 @@ class StepScalingAlarmAction implements cloudwatch.IAlarmAction { constructor(private readonly stepScalingAction: StepScalingAction) { } - public bind(_scope: CoreConstruct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { + public bind(_scope: Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { return { alarmActionArn: this.stepScalingAction.scalingPolicyArn }; } } diff --git a/packages/@aws-cdk/aws-autoscaling/lib/target-tracking-scaling-policy.ts b/packages/@aws-cdk/aws-autoscaling/lib/target-tracking-scaling-policy.ts index 5631016066761..1533821459cd2 100644 --- a/packages/@aws-cdk/aws-autoscaling/lib/target-tracking-scaling-policy.ts +++ b/packages/@aws-cdk/aws-autoscaling/lib/target-tracking-scaling-policy.ts @@ -1,5 +1,5 @@ import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; -import { Construct as CoreConstruct, Duration } from '@aws-cdk/core'; +import { Duration } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { IAutoScalingGroup } from './auto-scaling-group'; import { CfnScalingPolicy } from './autoscaling.generated'; @@ -98,7 +98,7 @@ export interface TargetTrackingScalingPolicyProps extends BasicTargetTrackingSca readonly autoScalingGroup: IAutoScalingGroup; } -export class TargetTrackingScalingPolicy extends CoreConstruct { +export class TargetTrackingScalingPolicy extends Construct { /** * ARN of the scaling policy */ diff --git a/packages/@aws-cdk/aws-autoscaling/package.json b/packages/@aws-cdk/aws-autoscaling/package.json index 3f1b109a6b447..d3ae544c25854 100644 --- a/packages/@aws-cdk/aws-autoscaling/package.json +++ b/packages/@aws-cdk/aws-autoscaling/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -104,7 +104,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-autoscaling/test/scaling.test.ts b/packages/@aws-cdk/aws-autoscaling/test/scaling.test.ts index 86604a52d3404..b5f395540dcd0 100644 --- a/packages/@aws-cdk/aws-autoscaling/test/scaling.test.ts +++ b/packages/@aws-cdk/aws-autoscaling/test/scaling.test.ts @@ -3,7 +3,7 @@ import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2'; import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; import * as autoscaling from '../lib'; @@ -273,11 +273,11 @@ nodeunitShim({ }, }); -class ASGFixture extends cdk.Construct { +class ASGFixture extends Construct { public readonly vpc: ec2.Vpc; public readonly asg: autoscaling.AutoScalingGroup; - constructor(scope: constructs.Construct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id); this.vpc = new ec2.Vpc(this, 'VPC'); diff --git a/packages/@aws-cdk/aws-autoscalingplans/package.json b/packages/@aws-cdk/aws-autoscalingplans/package.json index c641e68043713..dc3f19ca4eacb 100644 --- a/packages/@aws-cdk/aws-autoscalingplans/package.json +++ b/packages/@aws-cdk/aws-autoscalingplans/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-backup/lib/backupable-resources-collector.ts b/packages/@aws-cdk/aws-backup/lib/backupable-resources-collector.ts index c363ab6424812..a4a0729d62d0f 100644 --- a/packages/@aws-cdk/aws-backup/lib/backupable-resources-collector.ts +++ b/packages/@aws-cdk/aws-backup/lib/backupable-resources-collector.ts @@ -2,7 +2,8 @@ import * as dynamodb from '@aws-cdk/aws-dynamodb'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as efs from '@aws-cdk/aws-efs'; import * as rds from '@aws-cdk/aws-rds'; -import { IAspect, IConstruct, Stack } from '@aws-cdk/core'; +import { IAspect, Stack } from '@aws-cdk/core'; +import { IConstruct } from 'constructs'; export class BackupableResourcesCollector implements IAspect { public readonly resources: string[] = []; diff --git a/packages/@aws-cdk/aws-backup/lib/plan.ts b/packages/@aws-cdk/aws-backup/lib/plan.ts index 70240e778969b..84174909a724c 100644 --- a/packages/@aws-cdk/aws-backup/lib/plan.ts +++ b/packages/@aws-cdk/aws-backup/lib/plan.ts @@ -138,6 +138,8 @@ export class BackupPlan extends Resource implements IBackupPlan { for (const rule of props.backupPlanRules || []) { this.addRule(rule); } + + this.node.addValidation({ validate: () => this.validatePlan() }); } /** @@ -192,7 +194,7 @@ export class BackupPlan extends Resource implements IBackupPlan { }); } - protected validate() { + private validatePlan() { if (this.rules.length === 0) { return ['A backup plan must have at least 1 rule.']; } diff --git a/packages/@aws-cdk/aws-backup/lib/resource.ts b/packages/@aws-cdk/aws-backup/lib/resource.ts index 46323f6838370..07ac3f2103ec0 100644 --- a/packages/@aws-cdk/aws-backup/lib/resource.ts +++ b/packages/@aws-cdk/aws-backup/lib/resource.ts @@ -5,10 +5,6 @@ import * as rds from '@aws-cdk/aws-rds'; import { Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * An operation that is applied to a key-value pair */ @@ -134,11 +130,11 @@ export class BackupResource { /** * A construct */ - public readonly construct?: CoreConstruct; + public readonly construct?: Construct; constructor(resource?: string, tagCondition?: TagCondition, construct?: Construct) { this.resource = resource; this.tagCondition = tagCondition; - this.construct = construct as CoreConstruct; + this.construct = construct; } } diff --git a/packages/@aws-cdk/aws-backup/package.json b/packages/@aws-cdk/aws-backup/package.json index 0c7724fdefaf6..73e4aea43bad6 100644 --- a/packages/@aws-cdk/aws-backup/package.json +++ b/packages/@aws-cdk/aws-backup/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-rds": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-dynamodb": "0.0.0", @@ -104,7 +104,7 @@ "@aws-cdk/aws-rds": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-backup/test/selection.test.ts b/packages/@aws-cdk/aws-backup/test/selection.test.ts index b5523b963c20e..25b0816721e39 100644 --- a/packages/@aws-cdk/aws-backup/test/selection.test.ts +++ b/packages/@aws-cdk/aws-backup/test/selection.test.ts @@ -6,10 +6,6 @@ import { Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { BackupPlan, BackupResource, BackupSelection } from '../lib'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - let stack: Stack; let plan: BackupPlan; beforeEach(() => { @@ -125,13 +121,13 @@ test('allow restores', () => { test('fromConstruct', () => { // GIVEN - class EfsConstruct extends CoreConstruct { + class EfsConstruct extends Construct { constructor(scope: Construct, id: string) { super(scope, id); new efs.CfnFileSystem(this, 'FileSystem'); } } - class MyConstruct extends CoreConstruct { + class MyConstruct extends Construct { constructor(scope: Construct, id: string) { super(scope, id); diff --git a/packages/@aws-cdk/aws-batch/lib/job-definition-image-config.ts b/packages/@aws-cdk/aws-batch/lib/job-definition-image-config.ts index 191024a197a11..55b9b5c4ca86e 100644 --- a/packages/@aws-cdk/aws-batch/lib/job-definition-image-config.ts +++ b/packages/@aws-cdk/aws-batch/lib/job-definition-image-config.ts @@ -3,10 +3,6 @@ import * as iam from '@aws-cdk/aws-iam'; import { Construct } from 'constructs'; import { JobDefinitionContainer } from './job-definition'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * TaskDefinitionRole * @@ -68,7 +64,7 @@ export class JobDefinitionImageConfig { } private bindImageConfig(scope: Construct, container: JobDefinitionContainer): ecs.ContainerImageConfig { - return container.image.bind(scope as CoreConstruct, new ecs.ContainerDefinition(scope, 'Resource-Batch-Job-Container-Definition', { + return container.image.bind(scope, new ecs.ContainerDefinition(scope, 'Resource-Batch-Job-Container-Definition', { command: container.command, cpu: container.vcpus, image: container.image, diff --git a/packages/@aws-cdk/aws-batch/package.json b/packages/@aws-cdk/aws-batch/package.json index 042d8aeb0527d..1138c735829cb 100644 --- a/packages/@aws-cdk/aws-batch/package.json +++ b/packages/@aws-cdk/aws-batch/package.json @@ -89,7 +89,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -100,7 +100,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-budgets/package.json b/packages/@aws-cdk/aws-budgets/package.json index d9aeac45b03b0..9e6337dacca2e 100644 --- a/packages/@aws-cdk/aws-budgets/package.json +++ b/packages/@aws-cdk/aws-budgets/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cassandra/package.json b/packages/@aws-cdk/aws-cassandra/package.json index bed68c8549024..260bf21b88421 100644 --- a/packages/@aws-cdk/aws-cassandra/package.json +++ b/packages/@aws-cdk/aws-cassandra/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ce/package.json b/packages/@aws-cdk/aws-ce/package.json index 50829a75d7b0c..cea361aa5330e 100644 --- a/packages/@aws-cdk/aws-ce/package.json +++ b/packages/@aws-cdk/aws-ce/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts b/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts index f1a5cd442e9d1..aecf5d93c0d9a 100644 --- a/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts +++ b/packages/@aws-cdk/aws-certificatemanager/lib/dns-validated-certificate.ts @@ -106,9 +106,11 @@ export class DnsValidatedCertificate extends cdk.Resource implements ICertificat }); this.certificateArn = certificate.getAtt('Arn').toString(); + + this.node.addValidation({ validate: () => this.validateDnsValidatedCertificate() }); } - protected validate(): string[] { + private validateDnsValidatedCertificate(): string[] { const errors: string[] = []; // Ensure the zone name is a parent zone of the certificate domain name if (!cdk.Token.isUnresolved(this.normalizedZoneName) && diff --git a/packages/@aws-cdk/aws-certificatemanager/package.json b/packages/@aws-cdk/aws-certificatemanager/package.json index c23ef5b023e4c..1408d12da5030 100644 --- a/packages/@aws-cdk/aws-certificatemanager/package.json +++ b/packages/@aws-cdk/aws-certificatemanager/package.json @@ -84,7 +84,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-route53": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -92,7 +92,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-route53": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-chatbot/package.json b/packages/@aws-cdk/aws-chatbot/package.json index f262b9afaae3f..411d86b8decf6 100644 --- a/packages/@aws-cdk/aws-chatbot/package.json +++ b/packages/@aws-cdk/aws-chatbot/package.json @@ -88,7 +88,7 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-cloudwatch": "0.0.0", @@ -96,7 +96,7 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cloud9/package.json b/packages/@aws-cdk/aws-cloud9/package.json index fd9b1c282c8aa..75392c444cc7b 100644 --- a/packages/@aws-cdk/aws-cloud9/package.json +++ b/packages/@aws-cdk/aws-cloud9/package.json @@ -85,14 +85,14 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts b/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts index 93ac7d4b9913a..cc59db35c6c0f 100644 --- a/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts +++ b/packages/@aws-cdk/aws-cloudformation/lib/custom-resource.ts @@ -1,6 +1,7 @@ import * as lambda from '@aws-cdk/aws-lambda'; import * as sns from '@aws-cdk/aws-sns'; import * as core from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Collection of arbitrary properties @@ -28,7 +29,7 @@ export interface ICustomResourceProvider { * @param scope The resource that uses this provider. * @returns provider configuration */ - bind(scope: core.Construct): CustomResourceProviderConfig; + bind(scope: Construct): CustomResourceProviderConfig; } /** @@ -68,7 +69,7 @@ export class CustomResourceProvider implements ICustomResourceProvider { */ private constructor(public readonly serviceToken: string) { } - public bind(_: core.Construct): CustomResourceProviderConfig { + public bind(_: Construct): CustomResourceProviderConfig { return { serviceToken: this.serviceToken }; } } @@ -151,7 +152,7 @@ export interface CustomResourceProps { * @deprecated use `core.CustomResource` */ export class CustomResource extends core.CustomResource { - constructor(scope: core.Construct, id: string, props: CustomResourceProps) { + constructor(scope: Construct, id: string, props: CustomResourceProps) { super(scope, id, { pascalCaseProperties: true, properties: props.properties, diff --git a/packages/@aws-cdk/aws-cloudformation/lib/nested-stack.ts b/packages/@aws-cdk/aws-cloudformation/lib/nested-stack.ts index bb9481d2a75c2..0f32579101427 100644 --- a/packages/@aws-cdk/aws-cloudformation/lib/nested-stack.ts +++ b/packages/@aws-cdk/aws-cloudformation/lib/nested-stack.ts @@ -1,5 +1,6 @@ import * as sns from '@aws-cdk/aws-sns'; import * as core from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Initialization props for the `NestedStack` construct. @@ -63,7 +64,7 @@ export interface NestedStackProps { * @experimental */ export class NestedStack extends core.NestedStack { - constructor(scope: core.Construct, id: string, props: NestedStackProps = { }) { + constructor(scope: Construct, id: string, props: NestedStackProps = { }) { super(scope, id, { parameters: props.parameters, timeout: props.timeout, diff --git a/packages/@aws-cdk/aws-cloudformation/package.json b/packages/@aws-cdk/aws-cloudformation/package.json index 3fcb01b4ff44d..5eb0f585689bb 100644 --- a/packages/@aws-cdk/aws-cloudformation/package.json +++ b/packages/@aws-cdk/aws-cloudformation/package.json @@ -91,7 +91,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -101,7 +101,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.core-custom-resources.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.core-custom-resources.ts index 41029448ec1dc..9400f00769c20 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.core-custom-resources.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.core-custom-resources.ts @@ -7,9 +7,8 @@ * - GetAtt.Attribute1: "foo" * - GetAtt.Attribute2: 1234 */ -import { App, CfnOutput, Construct, CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, Stack, Token } from '@aws-cdk/core'; - -/* eslint-disable cdk/no-core-construct */ +import { App, CfnOutput, CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, Stack, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; class TestStack extends Stack { constructor(scope: Construct, id: string) { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.ts index 650609c0e6d40..0bbacd4e35fd3 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.ts @@ -2,11 +2,10 @@ import * as lambda from '@aws-cdk/aws-lambda'; import * as sns from '@aws-cdk/aws-sns'; import * as sns_subscriptions from '@aws-cdk/aws-sns-subscriptions'; import * as sqs from '@aws-cdk/aws-sqs'; -import { App, CfnParameter, Construct, Stack } from '@aws-cdk/core'; +import { App, CfnParameter, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as cfn from '../lib'; -/* eslint-disable cdk/no-core-construct */ - interface MyNestedStackProps { readonly subscriber?: sqs.Queue; readonly siblingTopic?: sns.Topic; // a topic defined in a sibling nested stack diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.ts index 4a6599c289928..56b13a8984e75 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.ts @@ -1,7 +1,8 @@ /// !cdk-integ pragma:ignore-assets import * as path from 'path'; import * as lambda from '@aws-cdk/aws-lambda'; -import { App, Construct, Stack } from '@aws-cdk/core'; +import { App, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as cfn from '../lib'; /* eslint-disable cdk/no-core-construct */ diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.ts index 109b151138b19..86c4c7bb05099 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.ts @@ -1,10 +1,9 @@ /// !cdk-integ pragma:ignore-assets import * as sns from '@aws-cdk/aws-sns'; -import { App, Construct, Stack } from '@aws-cdk/core'; +import { App, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as cfn from '../lib'; -/* eslint-disable cdk/no-core-construct */ - class YourNestedStack extends cfn.NestedStack { constructor(scope: Construct, id: string) { super(scope, id); diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.ts index b6ca8b087f7ad..dec8c6099a8f2 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.ts @@ -5,7 +5,8 @@ /* eslint-disable cdk/no-core-construct */ import * as sns from '@aws-cdk/aws-sns'; -import { App, Construct, Stack } from '@aws-cdk/core'; +import { App, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as cfn from '../lib'; class ConsumerNestedStack extends cfn.NestedStack { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.ts index 5b884b209786b..887588446e6a3 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.ts @@ -1,12 +1,11 @@ /// !cdk-integ * import * as sns from '@aws-cdk/aws-sns'; -import { App, Construct, Fn, Stack } from '@aws-cdk/core'; +import { App, Fn, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as cfn from '../lib'; // non-nested non-parent stack consumes a resource from a nested stack -/* eslint-disable cdk/no-core-construct */ - class ProducerNestedStack extends cfn.NestedStack { public readonly topic: sns.Topic; diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.ts index ab1f51be91330..356242cdceb42 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.ts @@ -1,12 +1,11 @@ /// !cdk-integ * import * as sns from '@aws-cdk/aws-sns'; -import { App, Construct, Fn, Stack } from '@aws-cdk/core'; +import { App, Fn, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as cfn from '../lib'; // references between siblings -/* eslint-disable cdk/no-core-construct */ - class ProducerNestedStack extends cfn.NestedStack { public readonly topic: sns.Topic; diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.trivial-lambda-resource.ts b/packages/@aws-cdk/aws-cloudformation/test/integ.trivial-lambda-resource.ts index e18bafe3736a8..9870d063f5cba 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.trivial-lambda-resource.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.trivial-lambda-resource.ts @@ -1,6 +1,7 @@ import * as fs from 'fs'; import * as lambda from '@aws-cdk/aws-lambda'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CustomResource, CustomResourceProvider } from '../lib'; /* eslint-disable cdk/no-core-construct */ @@ -17,10 +18,10 @@ interface DemoResourceProps { failCreate?: boolean; } -class DemoResource extends cdk.Construct { +class DemoResource extends Construct { public readonly response: string; - constructor(scope: cdk.Construct, id: string, props: DemoResourceProps) { + constructor(scope: Construct, id: string, props: DemoResourceProps) { super(scope, id); const resource = new CustomResource(this, 'Resource', { diff --git a/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts b/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts index 056849c1dc12b..a1fa1839a2e7b 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts @@ -3,11 +3,11 @@ import * as path from 'path'; import { expect, haveResource, matchTemplate, SynthUtils } from '@aws-cdk/assert'; import * as s3_assets from '@aws-cdk/aws-s3-assets'; import * as sns from '@aws-cdk/aws-sns'; -import { App, CfnParameter, CfnResource, Construct, ContextProvider, LegacyStackSynthesizer, Names, Stack } from '@aws-cdk/core'; +import { App, CfnParameter, CfnResource, ContextProvider, LegacyStackSynthesizer, Names, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Test } from 'nodeunit'; import { NestedStack } from '../lib/nested-stack'; -/* eslint-disable cdk/no-core-construct */ /* eslint-disable max-len */ export = { diff --git a/packages/@aws-cdk/aws-cloudformation/test/test.resource.ts b/packages/@aws-cdk/aws-cloudformation/test/test.resource.ts index 9f90779190d71..566978ec0d4d9 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/test.resource.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/test.resource.ts @@ -2,6 +2,7 @@ import { expect, haveResource, ResourcePart } from '@aws-cdk/assert'; import * as lambda from '@aws-cdk/aws-lambda'; import * as sns from '@aws-cdk/aws-sns'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Test, testCase } from 'nodeunit'; import { CustomResource, CustomResourceProvider } from '../lib'; @@ -212,10 +213,10 @@ export = testCase({ }, }); -class TestCustomResource extends cdk.Construct { +class TestCustomResource extends Construct { public readonly resource: CustomResource; - constructor(scope: cdk.Construct, id: string, opts: { removalPolicy?: cdk.RemovalPolicy } = {}) { + constructor(scope: Construct, id: string, opts: { removalPolicy?: cdk.RemovalPolicy } = {}) { super(scope, id); const singletonLambda = new lambda.SingletonFunction(this, 'Lambda', { diff --git a/packages/@aws-cdk/aws-cloudfront-origins/lib/origin-group.ts b/packages/@aws-cdk/aws-cloudfront-origins/lib/origin-group.ts index 8fa8284e62ea9..7b49d8501f17f 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/lib/origin-group.ts +++ b/packages/@aws-cdk/aws-cloudfront-origins/lib/origin-group.ts @@ -1,5 +1,5 @@ import * as cloudfront from '@aws-cdk/aws-cloudfront'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** Construction properties for {@link OriginGroup}. */ export interface OriginGroupProps { diff --git a/packages/@aws-cdk/aws-cloudfront-origins/lib/s3-origin.ts b/packages/@aws-cdk/aws-cloudfront-origins/lib/s3-origin.ts index 948b3390ebea1..c71e47507b1c7 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/lib/s3-origin.ts +++ b/packages/@aws-cdk/aws-cloudfront-origins/lib/s3-origin.ts @@ -1,6 +1,7 @@ import * as cloudfront from '@aws-cdk/aws-cloudfront'; import * as s3 from '@aws-cdk/aws-s3'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { HttpOrigin } from './http-origin'; /** @@ -41,7 +42,7 @@ export class S3Origin implements cloudfront.IOrigin { new S3BucketOrigin(bucket, props); } - public bind(scope: cdk.Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig { + public bind(scope: Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig { return this.origin.bind(scope, options); } } @@ -61,7 +62,7 @@ class S3BucketOrigin extends cloudfront.OriginBase { } } - public bind(scope: cdk.Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig { + public bind(scope: Construct, options: cloudfront.OriginBindOptions): cloudfront.OriginBindConfig { if (!this.originAccessIdentity) { // Using a bucket from another stack creates a cyclic reference with // the bucket taking a dependency on the generated S3CanonicalUserId when `grantRead` is called, diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index d685bad68abb8..10dc2a8e8a64e 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -84,12 +84,12 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "@aws-cdk/aws-cloudfront": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0" diff --git a/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts b/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts index 05534862026ae..cebb3b7ddf596 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/distribution.ts @@ -10,10 +10,6 @@ import { IOrigin, OriginBindConfig, OriginBindOptions } from './origin'; import { IOriginRequestPolicy } from './origin-request-policy'; import { CacheBehavior } from './private/cache-behavior'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Interface for CloudFront distributions */ @@ -327,7 +323,7 @@ export class Distribution extends Resource implements IDistribution { return existingOrigin.originGroupId ?? existingOrigin.originId; } else { const originIndex = this.boundOrigins.length + 1; - const scope = new CoreConstruct(this, `Origin${originIndex}`); + const scope = new Construct(this, `Origin${originIndex}`); const originId = Names.uniqueId(scope).slice(-ORIGIN_ID_MAX_LENGTH); const originBindConfig = origin.bind(scope, { originId }); if (!originBindConfig.failoverConfig) { @@ -337,7 +333,7 @@ export class Distribution extends Resource implements IDistribution { throw new Error('An Origin cannot use an Origin with its own failover configuration as its fallback origin!'); } const groupIndex = this.originGroups.length + 1; - const originGroupId = Names.uniqueId(new CoreConstruct(this, `OriginGroup${groupIndex}`)).slice(-ORIGIN_ID_MAX_LENGTH); + const originGroupId = Names.uniqueId(new Construct(this, `OriginGroup${groupIndex}`)).slice(-ORIGIN_ID_MAX_LENGTH); this.boundOrigins.push({ origin, originId, originGroupId, ...originBindConfig }); const failoverOriginId = this.addOrigin(originBindConfig.failoverConfig.failoverOrigin, true); diff --git a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts index 2d62fe984f9b9..b8faabd9ba974 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/experimental/edge-function.ts @@ -6,11 +6,11 @@ import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as ssm from '@aws-cdk/aws-ssm'; import { - BootstraplessSynthesizer, CfnResource, ConstructNode, + BootstraplessSynthesizer, CfnResource, CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, DefaultStackSynthesizer, IStackSynthesizer, Resource, Stack, Stage, Token, } from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Construct, Node } from 'constructs'; /** * Properties for creating a Lambda@Edge function @@ -43,7 +43,7 @@ export class EdgeFunction extends Resource implements lambda.IVersion { public readonly functionArn: string; public readonly grantPrincipal: iam.IPrincipal; public readonly isBoundToVpc = false; - public readonly permissionsNode: ConstructNode; + public readonly permissionsNode: Node; public readonly role?: iam.IRole; public readonly version: string; diff --git a/packages/@aws-cdk/aws-cloudfront/lib/origin.ts b/packages/@aws-cdk/aws-cloudfront/lib/origin.ts index 0722dff17099d..8902099408556 100644 --- a/packages/@aws-cdk/aws-cloudfront/lib/origin.ts +++ b/packages/@aws-cdk/aws-cloudfront/lib/origin.ts @@ -1,4 +1,5 @@ -import { Construct, Duration, Token } from '@aws-cdk/core'; +import { Duration, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnDistribution } from './cloudfront.generated'; /** diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index e176e1453a50f..eebfd5a857c68 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -105,7 +105,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cloudfront/test/test-origin.ts b/packages/@aws-cdk/aws-cloudfront/test/test-origin.ts index 1c6d3762add4f..4a485c2ab092c 100644 --- a/packages/@aws-cdk/aws-cloudfront/test/test-origin.ts +++ b/packages/@aws-cdk/aws-cloudfront/test/test-origin.ts @@ -1,9 +1,6 @@ +import { Construct } from 'constructs'; import { CfnDistribution, IOrigin, OriginBase, OriginBindConfig, OriginBindOptions, OriginProps, OriginProtocolPolicy } from '../lib'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct } from '@aws-cdk/core'; - /** Used for testing common Origin functionality */ export class TestOrigin extends OriginBase { constructor(domainName: string, props: OriginProps = {}) { super(domainName, props); } diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index 0b4dd66ab11b9..153f0f6afe9fe 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -104,7 +104,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/lib/appscaling.ts b/packages/@aws-cdk/aws-cloudwatch-actions/lib/appscaling.ts index 2241796f47d2b..d548120e1c716 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/lib/appscaling.ts +++ b/packages/@aws-cdk/aws-cloudwatch-actions/lib/appscaling.ts @@ -1,6 +1,6 @@ import * as appscaling from '@aws-cdk/aws-applicationautoscaling'; import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an ApplicationAutoScaling StepScalingAction as an Alarm Action @@ -13,7 +13,7 @@ export class ApplicationScalingAction implements cloudwatch.IAlarmAction { * Returns an alarm action configuration to use an ApplicationScaling StepScalingAction * as an alarm action */ - public bind(_scope: cdk.Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { + public bind(_scope: Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { return { alarmActionArn: this.stepScalingAction.scalingPolicyArn }; } } diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/lib/autoscaling.ts b/packages/@aws-cdk/aws-cloudwatch-actions/lib/autoscaling.ts index 5ec6e62fe246c..0c4ad825572c9 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/lib/autoscaling.ts +++ b/packages/@aws-cdk/aws-cloudwatch-actions/lib/autoscaling.ts @@ -1,6 +1,6 @@ import * as autoscaling from '@aws-cdk/aws-autoscaling'; import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an AutoScaling StepScalingAction as an Alarm Action @@ -13,7 +13,7 @@ export class AutoScalingAction implements cloudwatch.IAlarmAction { * Returns an alarm action configuration to use an AutoScaling StepScalingAction * as an alarm action */ - public bind(_scope: cdk.Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { + public bind(_scope: Construct, _alarm: cloudwatch.IAlarm): cloudwatch.AlarmActionConfig { return { alarmActionArn: this.stepScalingAction.scalingPolicyArn }; } } diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/lib/sns.ts b/packages/@aws-cdk/aws-cloudwatch-actions/lib/sns.ts index deb882be507b3..a7c11f9dba918 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/lib/sns.ts +++ b/packages/@aws-cdk/aws-cloudwatch-actions/lib/sns.ts @@ -1,6 +1,6 @@ import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; import * as sns from '@aws-cdk/aws-sns'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an SNS topic as an alarm action diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index 5a834bc9325c7..a500201df2b70 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -80,7 +80,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -90,7 +90,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/alarm-action.ts b/packages/@aws-cdk/aws-cloudwatch/lib/alarm-action.ts index 7b48d0f055873..66e47e8568d5f 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/alarm-action.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/alarm-action.ts @@ -1,4 +1,4 @@ -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IAlarm } from './alarm-base'; /** diff --git a/packages/@aws-cdk/aws-cloudwatch/lib/metric.ts b/packages/@aws-cdk/aws-cloudwatch/lib/metric.ts index 3cc51050341b0..d378f22c7f393 100644 --- a/packages/@aws-cdk/aws-cloudwatch/lib/metric.ts +++ b/packages/@aws-cdk/aws-cloudwatch/lib/metric.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct, IConstruct } from 'constructs'; import { Alarm, ComparisonOperator, TreatMissingData } from './alarm'; import { Dimension, IMetric, MetricAlarmConfig, MetricConfig, MetricGraphConfig, Unit } from './metric-types'; import { dispatchMetric, metricKey } from './private/metric-util'; @@ -273,7 +273,7 @@ export class Metric implements IMetric { * If the scope we attach to is in an environment-agnostic stack, * nothing is done and the same Metric object is returned. */ - public attachTo(scope: constructs.IConstruct): Metric { + public attachTo(scope: IConstruct): Metric { const stack = cdk.Stack.of(scope); return this.with({ @@ -351,7 +351,7 @@ export class Metric implements IMetric { * Combines both properties that may adjust the metric (aggregation) as well * as alarm properties. */ - public createAlarm(scope: cdk.Construct, id: string, props: CreateAlarmOptions): Alarm { + public createAlarm(scope: Construct, id: string, props: CreateAlarmOptions): Alarm { return new Alarm(scope, id, { metric: this.with({ statistic: props.statistic, @@ -503,7 +503,7 @@ export class MathExpression implements IMetric { * Combines both properties that may adjust the metric (aggregation) as well * as alarm properties. */ - public createAlarm(scope: cdk.Construct, id: string, props: CreateAlarmOptions): Alarm { + public createAlarm(scope: Construct, id: string, props: CreateAlarmOptions): Alarm { return new Alarm(scope, id, { metric: this.with({ period: props.period, diff --git a/packages/@aws-cdk/aws-cloudwatch/package.json b/packages/@aws-cdk/aws-cloudwatch/package.json index 83a7602567f75..145245299dde3 100644 --- a/packages/@aws-cdk/aws-cloudwatch/package.json +++ b/packages/@aws-cdk/aws-cloudwatch/package.json @@ -84,13 +84,13 @@ "dependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codeartifact/package.json b/packages/@aws-cdk/aws-codeartifact/package.json index b23dea03c7ebe..f7ecfab89b381 100644 --- a/packages/@aws-cdk/aws-codeartifact/package.json +++ b/packages/@aws-cdk/aws-codeartifact/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codebuild/lib/artifacts.ts b/packages/@aws-cdk/aws-codebuild/lib/artifacts.ts index 397f5e08a5ef5..bbf84ed26c4b3 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/artifacts.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/artifacts.ts @@ -1,11 +1,8 @@ import * as s3 from '@aws-cdk/aws-s3'; +import { Construct } from 'constructs'; import { CfnProject } from './codebuild.generated'; import { IProject } from './project'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The type returned from {@link IArtifacts#bind}. */ @@ -38,7 +35,7 @@ export interface IArtifacts { * @param scope a root Construct that allows creating new Constructs * @param project the Project this Artifacts is used in */ - bind(scope: CoreConstruct, project: IProject): ArtifactsConfig; + bind(scope: Construct, project: IProject): ArtifactsConfig; } /** @@ -67,7 +64,7 @@ export abstract class Artifacts implements IArtifacts { this.identifier = props.identifier; } - public bind(_scope: CoreConstruct, _project: IProject): ArtifactsConfig { + public bind(_scope: Construct, _project: IProject): ArtifactsConfig { return { artifactsProperty: { artifactIdentifier: this.identifier, @@ -143,7 +140,7 @@ class S3Artifacts extends Artifacts { super(props); } - public bind(_scope: CoreConstruct, project: IProject): ArtifactsConfig { + public bind(_scope: Construct, project: IProject): ArtifactsConfig { this.props.bucket.grantReadWrite(project); const superConfig = super.bind(_scope, project); return { diff --git a/packages/@aws-cdk/aws-codebuild/lib/file-location.ts b/packages/@aws-cdk/aws-codebuild/lib/file-location.ts index eabfd95570b06..fc57f64e3a61b 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/file-location.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/file-location.ts @@ -1,10 +1,7 @@ +import { Construct } from 'constructs'; import { CfnProject } from './codebuild.generated'; import { IProject } from './project'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The type returned from {@link IFileSystemLocation#bind}. */ @@ -25,7 +22,7 @@ export interface IFileSystemLocation { * Called by the project when a file system is added so it can perform * binding operations on this file system location. */ - bind(scope: CoreConstruct, project: IProject): FileSystemConfig; + bind(scope: Construct, project: IProject): FileSystemConfig; } /** @@ -47,7 +44,7 @@ export class FileSystemLocation { class EfsFileSystemLocation implements IFileSystemLocation { constructor(private readonly props: EfsFileSystemLocationProps) {} - public bind(_scope: CoreConstruct, _project: IProject): FileSystemConfig { + public bind(_scope: Construct, _project: IProject): FileSystemConfig { return { location: { identifier: this.props.identifier, diff --git a/packages/@aws-cdk/aws-codebuild/lib/linux-gpu-build-image.ts b/packages/@aws-cdk/aws-codebuild/lib/linux-gpu-build-image.ts index b3f4c1d6dad61..b96beebc4c3c5 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/linux-gpu-build-image.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/linux-gpu-build-image.ts @@ -1,6 +1,7 @@ import * as ecr from '@aws-cdk/aws-ecr'; import * as core from '@aws-cdk/core'; import { FactName, RegionInfo } from '@aws-cdk/region-info'; +import { Construct } from 'constructs'; import { BuildSpec } from './build-spec'; import { runScriptLinuxBuildSpec } from './private/run-script-linux-build-spec'; import { @@ -99,7 +100,7 @@ export class LinuxGpuBuildImage implements IBindableBuildImage { this.imageId = `${this.accountExpression}.dkr.ecr.${core.Aws.REGION}.${core.Aws.URL_SUFFIX}/${repositoryName}:${tag}`; } - public bind(scope: core.Construct, project: IProject, _options: BuildImageBindOptions): BuildImageConfig { + public bind(scope: Construct, project: IProject, _options: BuildImageBindOptions): BuildImageConfig { if (!this.account) { const scopeStack = core.Stack.of(scope); // Unfortunately, the account IDs of the DLC repositories are not the same in all regions. diff --git a/packages/@aws-cdk/aws-codebuild/lib/project.ts b/packages/@aws-cdk/aws-codebuild/lib/project.ts index 461bb8fd5e233..656772bd6b188 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/project.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/project.ts @@ -24,10 +24,6 @@ import { renderReportGroupArn } from './report-group-utils'; import { ISource } from './source'; import { CODEPIPELINE_SOURCE_ARTIFACTS_TYPE, NO_SOURCE_TYPE } from './source-types'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - export interface IProject extends IResource, iam.IGrantable, ec2.IConnectable { /** * The ARN of this Project. @@ -851,6 +847,8 @@ export class Project extends ProjectBase { if (bindFunction) { bindFunction.call(this.buildImage, this, this, {}); } + + this.node.addValidation({ validate: () => this.validateProject() }); } /** @@ -902,7 +900,7 @@ export class Project extends ProjectBase { * @param _scope the construct the binding is taking place in * @param options additional options for the binding */ - public bindToCodePipeline(_scope: CoreConstruct, options: BindToCodePipelineOptions): void { + public bindToCodePipeline(_scope: Construct, options: BindToCodePipelineOptions): void { // work around a bug in CodeBuild: it ignores the KMS key set on the pipeline, // and always uses its own, project-level key if (options.artifactBucket.encryptionKey && !this._encryptionKey) { @@ -918,10 +916,7 @@ export class Project extends ProjectBase { } } - /** - * @override - */ - protected validate(): string[] { + private validateProject(): string[] { const ret = new Array(); if (this.source.type === CODEPIPELINE_SOURCE_ARTIFACTS_TYPE) { if (this._secondarySources.length > 0) { @@ -1361,7 +1356,7 @@ export interface BuildImageConfig {} /** A variant of {@link IBuildImage} that allows binding to the project. */ export interface IBindableBuildImage extends IBuildImage { /** Function that allows the build image access to the construct tree. */ - bind(scope: CoreConstruct, project: IProject, options: BuildImageBindOptions): BuildImageConfig; + bind(scope: Construct, project: IProject, options: BuildImageBindOptions): BuildImageConfig; } class ArmBuildImage implements IBuildImage { diff --git a/packages/@aws-cdk/aws-codebuild/lib/source.ts b/packages/@aws-cdk/aws-codebuild/lib/source.ts index b8002f2db9e36..8455ac16ea5c5 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/source.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/source.ts @@ -1,6 +1,7 @@ import * as codecommit from '@aws-cdk/aws-codecommit'; import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; +import { Construct } from 'constructs'; import { CfnProject } from './codebuild.generated'; import { IProject } from './project'; import { @@ -11,10 +12,6 @@ import { S3_SOURCE_TYPE, } from './source-types'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The type returned from {@link ISource#bind}. */ @@ -42,7 +39,7 @@ export interface ISource { readonly badgeSupported: boolean; - bind(scope: CoreConstruct, project: IProject): SourceConfig; + bind(scope: Construct, project: IProject): SourceConfig; } /** @@ -93,7 +90,7 @@ export abstract class Source implements ISource { * binding operations on the source. For example, it can grant permissions to the * code build project to read from the S3 bucket. */ - public bind(_scope: CoreConstruct, _project: IProject): SourceConfig { + public bind(_scope: Construct, _project: IProject): SourceConfig { return { sourceProperty: { sourceIdentifier: this.identifier, @@ -147,7 +144,7 @@ abstract class GitSource extends Source { this.fetchSubmodules = props.fetchSubmodules; } - public bind(_scope: CoreConstruct, _project: IProject): SourceConfig { + public bind(_scope: Construct, _project: IProject): SourceConfig { const superConfig = super.bind(_scope, _project); return { sourceVersion: this.branchOrRef, @@ -518,7 +515,7 @@ abstract class ThirdPartyGitSource extends GitSource { this.webhookTriggersBatchBuild = props.webhookTriggersBatchBuild; } - public bind(_scope: CoreConstruct, _project: IProject): SourceConfig { + public bind(_scope: Construct, _project: IProject): SourceConfig { const anyFilterGroupsProvided = this.webhookFilters.length > 0; const webhook = this.webhook === undefined ? (anyFilterGroupsProvided ? true : undefined) : this.webhook; @@ -566,7 +563,7 @@ class CodeCommitSource extends GitSource { this.repo = props.repository; } - public bind(_scope: CoreConstruct, project: IProject): SourceConfig { + public bind(_scope: Construct, project: IProject): SourceConfig { // https://docs.aws.amazon.com/codebuild/latest/userguide/setting-up.html project.addToRolePolicy(new iam.PolicyStatement({ actions: ['codecommit:GitPull'], @@ -615,7 +612,7 @@ class S3Source extends Source { this.version = props.version; } - public bind(_scope: CoreConstruct, project: IProject): SourceConfig { + public bind(_scope: Construct, project: IProject): SourceConfig { this.bucket.grantRead(project); const superConfig = super.bind(_scope, project); @@ -660,7 +657,7 @@ class GitHubSource extends ThirdPartyGitSource { this.httpsCloneUrl = `https://github.com/${props.owner}/${props.repo}.git`; } - public bind(_scope: CoreConstruct, project: IProject): SourceConfig { + public bind(_scope: Construct, project: IProject): SourceConfig { const superConfig = super.bind(_scope, project); return { sourceProperty: { @@ -704,7 +701,7 @@ class GitHubEnterpriseSource extends ThirdPartyGitSource { this.ignoreSslErrors = props.ignoreSslErrors; } - public bind(_scope: CoreConstruct, _project: IProject): SourceConfig { + public bind(_scope: Construct, _project: IProject): SourceConfig { if (this.hasCommitMessageFilterAndPrEvent()) { throw new Error('COMMIT_MESSAGE filters cannot be used with GitHub Enterprise Server pull request events'); } @@ -775,7 +772,7 @@ class BitBucketSource extends ThirdPartyGitSource { this.httpsCloneUrl = `https://bitbucket.org/${props.owner}/${props.repo}.git`; } - public bind(_scope: CoreConstruct, _project: IProject): SourceConfig { + public bind(_scope: Construct, _project: IProject): SourceConfig { // BitBucket sources don't support the PULL_REQUEST_REOPENED event action if (this.anyWebhookFilterContainsPrReopenedEventAction()) { throw new Error('BitBucket sources do not support the PULL_REQUEST_REOPENED webhook event action'); diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index dc30533726f51..1ba4f832a420e 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -104,7 +104,7 @@ "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -123,7 +123,7 @@ "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index b564d9bdf23eb..0e198a197e57a 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -92,14 +92,14 @@ "@aws-cdk/aws-events": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-events": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-config.ts b/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-config.ts index c531cdd56c965..f9f41e12202a7 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-config.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-config.ts @@ -20,7 +20,7 @@ export interface IEcsDeploymentConfig { * * Note: This class currently stands as namespaced container of the default configurations * until CloudFormation supports custom ECS Deployment Configs. Until then it is closed - * (private constructor) and does not extend {@link cdk.Construct} + * (private constructor) and does not extend {@link Construct} * * @resource AWS::CodeDeploy::DeploymentConfig */ diff --git a/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-group.ts b/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-group.ts index 5b893bc9f4f6e..4a432631375e5 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-group.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/ecs/deployment-group.ts @@ -35,7 +35,7 @@ export interface IEcsDeploymentGroup extends cdk.IResource { * Note: This class currently stands as a namespaced container for importing an ECS * Deployment Group defined outside the CDK app until CloudFormation supports provisioning * ECS Deployment Groups. Until then it is closed (private constructor) and does not - * extend {@link cdk.Construct}. + * extend {@link Construct}. * * @resource AWS::CodeDeploy::DeploymentGroup */ diff --git a/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-config.ts b/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-config.ts index ebbd4df337529..594d994942f46 100644 --- a/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-config.ts +++ b/packages/@aws-cdk/aws-codedeploy/lib/lambda/deployment-config.ts @@ -33,7 +33,7 @@ export interface LambdaDeploymentConfigImportProps { * * Note: This class currently stands as namespaced container of the default configurations * until CloudFormation supports custom Lambda Deployment Configs. Until then it is closed - * (private constructor) and does not extend {@link cdk.Construct} + * (private constructor) and does not extend {@link Construct} * * @resource AWS::CodeDeploy::DeploymentConfig */ diff --git a/packages/@aws-cdk/aws-codedeploy/package.json b/packages/@aws-cdk/aws-codedeploy/package.json index 51bd5f3c296dc..f148fda75d9a7 100644 --- a/packages/@aws-cdk/aws-codedeploy/package.json +++ b/packages/@aws-cdk/aws-codedeploy/package.json @@ -95,7 +95,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -109,7 +109,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codeguruprofiler/package.json b/packages/@aws-cdk/aws-codeguruprofiler/package.json index c5efc4a76ec04..de619dff0c1ce 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/package.json +++ b/packages/@aws-cdk/aws-codeguruprofiler/package.json @@ -85,12 +85,12 @@ "dependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codegurureviewer/package.json b/packages/@aws-cdk/aws-codegurureviewer/package.json index 4fcf8488772aa..ff9b04bf1dcca 100644 --- a/packages/@aws-cdk/aws-codegurureviewer/package.json +++ b/packages/@aws-cdk/aws-codegurureviewer/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts index b3ce90e2aa793..262cc5cc2ba03 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/action.ts @@ -1,6 +1,7 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as events from '@aws-cdk/aws-events'; -import { Construct, Lazy } from '@aws-cdk/core'; +import { Lazy } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Low-level class for generic CodePipeline Actions. diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/alexa-ask/deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/alexa-ask/deploy-action.ts index ebbe9fd060168..d36d11d27fddb 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/alexa-ask/deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/alexa-ask/deploy-action.ts @@ -1,5 +1,6 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; -import { Construct, SecretValue } from '@aws-cdk/core'; +import { SecretValue } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; /** diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/bitbucket/source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/bitbucket/source-action.ts index 75f34777471e5..1343e98d54e65 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/bitbucket/source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/bitbucket/source-action.ts @@ -1,6 +1,6 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { sourceArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/cloudformation/pipeline-actions.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/cloudformation/pipeline-actions.ts index 1ba14d469120d..ad73e1465b9dd 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/cloudformation/pipeline-actions.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/cloudformation/pipeline-actions.ts @@ -2,6 +2,7 @@ import * as cloudformation from '@aws-cdk/aws-cloudformation'; import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; /** @@ -82,7 +83,7 @@ abstract class CloudFormationAction extends Action { this.props = props; } - protected bound(_scope: cdk.Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(_scope: Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { const singletonPolicy = SingletonPolicy.forRole(options.role); @@ -123,7 +124,7 @@ export class CloudFormationExecuteChangeSetAction extends CloudFormationAction { this.props2 = props; } - protected bound(scope: cdk.Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { SingletonPolicy.forRole(options.role).grantExecuteChangeSet(this.props2); @@ -259,7 +260,7 @@ abstract class CloudFormationDeployAction extends CloudFormationAction { return this.getDeploymentRole('property role()'); } - protected bound(scope: cdk.Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { if (this.props2.deploymentRole) { this._deploymentRole = this.props2.deploymentRole; @@ -359,7 +360,7 @@ export class CloudFormationCreateReplaceChangeSetAction extends CloudFormationDe this.props3 = props; } - protected bound(scope: cdk.Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { // the super call order is to preserve the existing order of statements in policies const actionConfig = super.bound(scope, stage, options); @@ -428,7 +429,7 @@ export class CloudFormationCreateUpdateStackAction extends CloudFormationDeployA this.props3 = props; } - protected bound(scope: cdk.Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { // the super call order is to preserve the existing order of statements in policies const actionConfig = super.bound(scope, stage, options); @@ -467,7 +468,7 @@ export class CloudFormationDeleteStackAction extends CloudFormationDeployAction this.props3 = props; } - protected bound(scope: cdk.Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { // the super call order is to preserve the existing order of statements in policies const actionConfig = super.bound(scope, stage, options); @@ -493,7 +494,7 @@ export class CloudFormationDeleteStackAction extends CloudFormationDeployAction * Statements created outside of this class are not considered when adding new * permissions. */ -class SingletonPolicy extends cdk.Construct implements iam.IGrantable { +class SingletonPolicy extends Construct implements iam.IGrantable { /** * Obtain a SingletonPolicy for a given role. * @param role the Role this policy is bound to. @@ -511,7 +512,7 @@ class SingletonPolicy extends cdk.Construct implements iam.IGrantable { private statements: { [key: string]: iam.PolicyStatement } = {}; private constructor(private readonly role: iam.IRole) { - super(role as unknown as cdk.Construct, SingletonPolicy.UUID); + super(role as unknown as Construct, SingletonPolicy.UUID); this.grantPrincipal = role; } diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts index aa2d3be190029..f3b8d0e15463a 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codebuild/build-action.ts @@ -2,6 +2,7 @@ import * as codebuild from '@aws-cdk/aws-codebuild'; import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { BitBucketSourceAction } from '..'; import { Action } from '../action'; @@ -132,7 +133,7 @@ export class CodeBuildAction extends Action { return this.variableExpression(variableName); } - protected bound(scope: cdk.Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { // check for a cross-account action if there are any outputs if ((this.actionProperties.outputs || []).length > 0) { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codecommit/source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codecommit/source-action.ts index 9935bcb5be4d7..752f6abb333c9 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codecommit/source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codecommit/source-action.ts @@ -2,7 +2,8 @@ import * as codecommit from '@aws-cdk/aws-codecommit'; import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as targets from '@aws-cdk/aws-events-targets'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct, Names, Token } from '@aws-cdk/core'; +import { Names, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { sourceArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts index 33bc07c148b1e..049efe79e2043 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/ecs-deploy-action.ts @@ -1,7 +1,8 @@ import * as codedeploy from '@aws-cdk/aws-codedeploy'; import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct, Lazy } from '@aws-cdk/core'; +import { Lazy } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; /** diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/server-deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/server-deploy-action.ts index 07c0662824481..7195fb81453e8 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/server-deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codedeploy/server-deploy-action.ts @@ -1,7 +1,7 @@ import * as codedeploy from '@aws-cdk/aws-codedeploy'; import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { deployArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/custom-action-registration.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/custom-action-registration.ts index ae75a1adeb5c0..b15ede245f4d4 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/custom-action-registration.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/custom-action-registration.ts @@ -1,5 +1,5 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * The creation attributes used for defining a configuration property @@ -109,8 +109,8 @@ export interface CustomActionRegistrationProps { * representing your custom Action, extending the Action class, * and taking the `actionProperties` as properly typed, construction properties. */ -export class CustomActionRegistration extends cdk.Construct { - constructor(parent: cdk.Construct, id: string, props: CustomActionRegistrationProps) { +export class CustomActionRegistration extends Construct { + constructor(parent: Construct, id: string, props: CustomActionRegistrationProps) { super(parent, id); new codepipeline.CfnCustomActionType(this, 'Resource', { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/ecr/source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/ecr/source-action.ts index f788c60d6aeea..125e4b81daef1 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/ecr/source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/ecr/source-action.ts @@ -2,7 +2,8 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as ecr from '@aws-cdk/aws-ecr'; import * as targets from '@aws-cdk/aws-events-targets'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct, Names } from '@aws-cdk/core'; +import { Names } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { sourceArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/ecs/deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/ecs/deploy-action.ts index ec5dfb7ad2999..3e566d87a5a06 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/ecs/deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/ecs/deploy-action.ts @@ -1,7 +1,8 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as ecs from '@aws-cdk/aws-ecs'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct, Duration } from '@aws-cdk/core'; +import { Duration } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { deployArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/github/source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/github/source-action.ts index 82ca0b033120c..2471648f94fef 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/github/source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/github/source-action.ts @@ -1,5 +1,6 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; -import { Construct, SecretValue } from '@aws-cdk/core'; +import { SecretValue } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { sourceArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-action.ts index 5ebb614ea4ee7..c7a9a63b808f6 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-action.ts @@ -1,5 +1,5 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { IJenkinsProvider, jenkinsArtifactsBounds } from './jenkins-provider'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-provider.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-provider.ts index a739fc2f0ec6a..9b8e84e37d375 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-provider.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/jenkins/jenkins-provider.ts @@ -1,6 +1,5 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; -import * as cdk from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Construct, IConstruct } from 'constructs'; import { CustomActionRegistration } from '../custom-action-registration'; /** @@ -12,7 +11,7 @@ import { CustomActionRegistration } from '../custom-action-registration'; * If you want to reference an already registered provider, * use the {@link JenkinsProvider#fromJenkinsProviderAttributes} method. */ -export interface IJenkinsProvider extends cdk.IConstruct { +export interface IJenkinsProvider extends IConstruct { readonly providerName: string; readonly serverUrl: string; readonly version: string; @@ -103,7 +102,7 @@ export interface JenkinsProviderProps { readonly forTest?: boolean; } -export abstract class BaseJenkinsProvider extends cdk.Construct implements IJenkinsProvider { +export abstract class BaseJenkinsProvider extends Construct implements IJenkinsProvider { public abstract readonly providerName: string; public abstract readonly serverUrl: string; public readonly version: string; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/lambda/invoke-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/lambda/invoke-action.ts index 987968728cb4d..dd827c7f0deaa 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/lambda/invoke-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/lambda/invoke-action.ts @@ -1,7 +1,8 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; /** diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/manual-approval-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/manual-approval-action.ts index 5ddfdb974c4e9..678e8b34f2035 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/manual-approval-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/manual-approval-action.ts @@ -1,7 +1,7 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as sns from '@aws-cdk/aws-sns'; import * as subs from '@aws-cdk/aws-sns-subscriptions'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from './action'; /** @@ -60,7 +60,7 @@ export class ManualApprovalAction extends Action { return this._notificationTopic; } - protected bound(scope: cdk.Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(scope: Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { if (this.props.notificationTopic) { this._notificationTopic = this.props.notificationTopic; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts index 3f3364ae69a3a..0273a1cafe827 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts @@ -1,7 +1,8 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as s3 from '@aws-cdk/aws-s3'; -import { Construct, Duration } from '@aws-cdk/core'; +import { Duration } from '@aws-cdk/core'; import { kebab as toKebabCase } from 'case'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { deployArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/source-action.ts index 2470ea6cca25f..03a9b4d079f01 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/source-action.ts @@ -1,7 +1,8 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as targets from '@aws-cdk/aws-events-targets'; import * as s3 from '@aws-cdk/aws-s3'; -import { Construct, Names, Token } from '@aws-cdk/core'; +import { Names, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; import { sourceArtifactBounds } from '../common'; diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/servicecatalog/deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/servicecatalog/deploy-action.ts index f55766315c070..fc21286e9a81c 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/servicecatalog/deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/servicecatalog/deploy-action.ts @@ -1,6 +1,6 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; /** diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/stepfunctions/invoke-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/stepfunctions/invoke-action.ts index ae05cd093892f..7332bb861be3c 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/stepfunctions/invoke-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/stepfunctions/invoke-action.ts @@ -2,6 +2,7 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import * as iam from '@aws-cdk/aws-iam'; import * as stepfunction from '@aws-cdk/aws-stepfunctions'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Action } from '../action'; /** @@ -121,7 +122,7 @@ export class StepFunctionInvokeAction extends Action { this.props = props; } - protected bound(_scope: cdk.Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + protected bound(_scope: Construct, _stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { // allow pipeline to invoke this step function options.role.addToPolicy(new iam.PolicyStatement({ diff --git a/packages/@aws-cdk/aws-codepipeline-actions/package.json b/packages/@aws-cdk/aws-codepipeline-actions/package.json index 8ebb434020da5..68bb54a9ccf74 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/package.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/package.json @@ -99,7 +99,7 @@ "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/core": "0.0.0", "case": "1.6.3", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -121,7 +121,7 @@ "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "bundledDependencies": [ "case" diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/cloudformation/test.pipeline-actions.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/cloudformation/test.pipeline-actions.ts index 66e23dcfe0584..2eaebd5992ecf 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/cloudformation/test.pipeline-actions.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/cloudformation/test.pipeline-actions.ts @@ -3,7 +3,7 @@ import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct, IConstruct, Node } from 'constructs'; import * as _ from 'lodash'; import * as nodeunit from 'nodeunit'; import * as cpactions from '../../lib'; @@ -315,7 +315,7 @@ function _isOrContains(stack: cdk.Stack, entity: string | string[], value: strin return false; } -function _stackArn(stackName: string, scope: constructs.IConstruct): string { +function _stackArn(stackName: string, scope: IConstruct): string { return cdk.Stack.of(scope).formatArn({ service: 'cloudformation', resource: 'stack', @@ -329,7 +329,7 @@ class PipelineDouble extends cdk.Resource implements codepipeline.IPipeline { public readonly role: iam.Role; public readonly artifactBucket: s3.IBucket; - constructor(scope: constructs.Construct, id: string, { pipelineName, role }: { pipelineName?: string, role: iam.Role }) { + constructor(scope: Construct, id: string, { pipelineName, role }: { pipelineName?: string, role: iam.Role }) { super(scope, id); this.pipelineName = pipelineName || 'TestPipeline'; this.pipelineArn = cdk.Stack.of(this).formatArn({ service: 'codepipeline', resource: 'pipeline', resourceName: this.pipelineName }); @@ -359,7 +359,7 @@ class StageDouble implements codepipeline.IStage { public readonly actions: codepipeline.IAction[] = []; public readonly fullActions: FullAction[]; - public get node(): cdk.ConstructNode { + public get node(): Node { throw new Error('StageDouble is not a real construct'); } @@ -367,10 +367,10 @@ class StageDouble implements codepipeline.IStage { this.stageName = name || 'TestStage'; this.pipeline = pipeline; - const stageParent = new cdk.Construct(pipeline, this.stageName); + const stageParent = new Construct(pipeline, this.stageName); const fullActions = new Array(); for (const action of actions) { - const actionParent = new cdk.Construct(stageParent, action.actionProperties.actionName); + const actionParent = new Construct(stageParent, action.actionProperties.actionName); fullActions.push(new FullAction(action.actionProperties, action.bind(actionParent, this, { role: pipeline.role, bucket: pipeline.artifactBucket, @@ -392,7 +392,7 @@ class StageDouble implements codepipeline.IStage { class RoleDouble extends iam.Role { public readonly statements = new Array(); - constructor(scope: constructs.Construct, id: string, props: iam.RoleProps = { assumedBy: new iam.ServicePrincipal('test') }) { + constructor(scope: Construct, id: string, props: iam.RoleProps = { assumedBy: new iam.ServicePrincipal('test') }) { super(scope, id, props); } diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/test.pipeline.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/test.pipeline.ts index 242e55b40e039..df77a1bf64f89 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/test.pipeline.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/test.pipeline.ts @@ -7,7 +7,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as s3 from '@aws-cdk/aws-s3'; import * as sns from '@aws-cdk/aws-sns'; -import { App, Aws, CfnParameter, ConstructNode, SecretValue, Stack } from '@aws-cdk/core'; +import { App, Aws, CfnParameter, SecretValue, Stack } from '@aws-cdk/core'; import { Test } from 'nodeunit'; import * as cpactions from '../lib'; @@ -46,7 +46,7 @@ export = { }); test.notDeepEqual(SynthUtils.toCloudFormation(stack), {}); - test.deepEqual([], ConstructNode.validate(pipeline.node)); + test.deepEqual([], pipeline.node.validate()); test.done(); }, @@ -276,7 +276,7 @@ export = { ], })); - test.deepEqual([], ConstructNode.validate(p.node)); + test.deepEqual([], p.node.validate()); test.done(); }, @@ -367,7 +367,7 @@ export = { ], })); - test.deepEqual([], ConstructNode.validate(pipeline.node)); + test.deepEqual([], pipeline.node.validate()); test.done(); }, diff --git a/packages/@aws-cdk/aws-codepipeline/lib/action.ts b/packages/@aws-cdk/aws-codepipeline/lib/action.ts index b2b6e79154699..d217d1e42bf4b 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/action.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/action.ts @@ -1,7 +1,8 @@ import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; -import { Construct, IResource } from '@aws-cdk/core'; +import { IResource } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Artifact } from './artifact'; export enum ActionCategory { diff --git a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts index ba7fd8d87233d..09ece0dfc81f9 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts @@ -3,7 +3,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import * as s3 from '@aws-cdk/aws-s3'; import { - App, BootstraplessSynthesizer, Construct as CoreConstruct, DefaultStackSynthesizer, + App, BootstraplessSynthesizer, DefaultStackSynthesizer, IStackSynthesizer, Lazy, Names, PhysicalName, RemovalPolicy, Resource, Stack, Token, } from '@aws-cdk/core'; import { Construct } from 'constructs'; @@ -315,6 +315,8 @@ export class Pipeline extends PipelineBase { for (const stage of props.stages || []) { this.addStage(stage); } + + this.node.addValidation({ validate: () => this.validatePipeline() }); } /** @@ -393,7 +395,7 @@ export class Pipeline extends PipelineBase { } /** @internal */ - public _attachActionToPipeline(stage: Stage, action: IAction, actionScope: CoreConstruct): FullActionDescriptor { + public _attachActionToPipeline(stage: Stage, action: IAction, actionScope: Construct): FullActionDescriptor { const richAction = new RichAction(action, this); // handle cross-region actions here @@ -429,9 +431,8 @@ export class Pipeline extends PipelineBase { * Validation happens according to the rules documented at * * https://docs.aws.amazon.com/codepipeline/latest/userguide/reference-pipeline-structure.html#pipeline-requirements - * @override */ - protected validate(): string[] { + private validatePipeline(): string[] { return [ ...this.validateSourceActionLocations(), ...this.validateHasStages(), diff --git a/packages/@aws-cdk/aws-codepipeline/lib/private/cross-region-support-stack.ts b/packages/@aws-cdk/aws-codepipeline/lib/private/cross-region-support-stack.ts index 33a81467a23d9..ee3a4958f32a5 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/private/cross-region-support-stack.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/private/cross-region-support-stack.ts @@ -1,6 +1,7 @@ import * as kms from '@aws-cdk/aws-kms'; import * as s3 from '@aws-cdk/aws-s3'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; const REQUIRED_ALIAS_PREFIX = 'alias/'; @@ -42,10 +43,10 @@ export interface CrossRegionSupportConstructProps { readonly createKmsKey?: boolean; } -export class CrossRegionSupportConstruct extends cdk.Construct { +export class CrossRegionSupportConstruct extends Construct { public readonly replicationBucket: s3.IBucket; - constructor(scope: cdk.Construct, id: string, props: CrossRegionSupportConstructProps = {}) { + constructor(scope: Construct, id: string, props: CrossRegionSupportConstructProps = {}) { super(scope, id); const createKmsKey = props.createKmsKey ?? true; @@ -114,7 +115,7 @@ export class CrossRegionSupportStack extends cdk.Stack { */ public readonly replicationBucket: s3.IBucket; - constructor(scope: cdk.Construct, id: string, props: CrossRegionSupportStackProps) { + constructor(scope: Construct, id: string, props: CrossRegionSupportStackProps) { super(scope, id, { stackName: generateStackName(props), env: { diff --git a/packages/@aws-cdk/aws-codepipeline/lib/private/rich-action.ts b/packages/@aws-cdk/aws-codepipeline/lib/private/rich-action.ts index f218344da61fa..2b6499013c06d 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/private/rich-action.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/private/rich-action.ts @@ -1,5 +1,6 @@ import * as events from '@aws-cdk/aws-events'; -import { Construct, ResourceEnvironment, Stack, Token, TokenComparison } from '@aws-cdk/core'; +import { ResourceEnvironment, Stack, Token, TokenComparison } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ActionBindOptions, ActionConfig, ActionProperties, IAction, IPipeline, IStage } from '../action'; /** diff --git a/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts b/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts index e9ed5a6995f02..954394d9a2c46 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/private/stage.ts @@ -1,5 +1,6 @@ import * as events from '@aws-cdk/aws-events'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IAction, IPipeline, IStage } from '../action'; import { Artifact } from '../artifact'; import { CfnPipeline } from '../codepipeline.generated'; @@ -20,7 +21,7 @@ export class Stage implements IStage { * The Pipeline this Stage is a part of. */ public readonly stageName: string; - private readonly scope: cdk.Construct; + private readonly scope: Construct; private readonly _pipeline: Pipeline; private readonly _actions = new Array(); @@ -32,7 +33,7 @@ export class Stage implements IStage { this.stageName = props.stageName; this._pipeline = pipeline; - this.scope = new cdk.Construct(pipeline, this.stageName); + this.scope = new Construct(pipeline, this.stageName); for (const action of props.actions || []) { this.addAction(action); @@ -137,7 +138,7 @@ export class Stage implements IStage { private attachActionToPipeline(action: IAction): FullActionDescriptor { // notify the Pipeline of the new Action - const actionScope = new cdk.Construct(this.scope, action.actionProperties.actionName); + const actionScope = new Construct(this.scope, action.actionProperties.actionName); return this._pipeline._attachActionToPipeline(this, action, actionScope); } diff --git a/packages/@aws-cdk/aws-codepipeline/package.json b/packages/@aws-cdk/aws-codepipeline/package.json index 26d18df69bf86..26bce804351c9 100644 --- a/packages/@aws-cdk/aws-codepipeline/package.json +++ b/packages/@aws-cdk/aws-codepipeline/package.json @@ -95,7 +95,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -104,7 +104,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codepipeline/test/artifacts.test.ts b/packages/@aws-cdk/aws-codepipeline/test/artifacts.test.ts index c67176d1e13ae..e63b7e9860336 100644 --- a/packages/@aws-cdk/aws-codepipeline/test/artifacts.test.ts +++ b/packages/@aws-cdk/aws-codepipeline/test/artifacts.test.ts @@ -1,4 +1,4 @@ -import { expect, haveResourceLike } from '@aws-cdk/assert'; +import { expect, haveResourceLike, SynthUtils } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; import { nodeunitShim, Test } from 'nodeunit-shim'; import * as codepipeline from '../lib'; @@ -41,12 +41,14 @@ nodeunitShim({ ], }); - const errors = validate(stack); + // synthesize - this is where names for artifact without names are allocated + SynthUtils.synthesize(stack, { skipValidation: true }); + + const errors = pipeline.node.validate(); test.equal(errors.length, 1); const error = errors[0]; - test.same(error.source, pipeline); - test.equal(error.message, "Action 'Build' is using an unnamed input Artifact, which is not being produced in this pipeline"); + test.equal(error, "Action 'Build' is using an unnamed input Artifact, which is not being produced in this pipeline"); test.done(); }, @@ -77,12 +79,11 @@ nodeunitShim({ ], }); - const errors = validate(stack); + const errors = pipeline.node.validate(); test.equal(errors.length, 1); const error = errors[0]; - test.same(error.source, pipeline); - test.equal(error.message, "Action 'Build' is using input Artifact 'named', which is not being produced in this pipeline"); + test.equal(error, "Action 'Build' is using input Artifact 'named', which is not being produced in this pipeline"); test.done(); }, @@ -114,12 +115,12 @@ nodeunitShim({ ], }); - const errors = validate(stack); + SynthUtils.synthesize(stack, { skipValidation: true }); + const errors = pipeline.node.validate(); test.equal(errors.length, 1); const error = errors[0]; - test.same(error.source, pipeline); - test.equal(error.message, "Both Actions 'Source' and 'Build' are producting Artifact 'Artifact_Source_Source'. Every artifact can only be produced once."); + test.equal(error, "Both Actions 'Source' and 'Build' are producting Artifact 'Artifact_Source_Source'. Every artifact can only be produced once."); test.done(); }, @@ -216,12 +217,11 @@ nodeunitShim({ ], }); - const errors = validate(stack); + const errors = pipeline.node.validate(); test.equal(errors.length, 1); const error = errors[0]; - test.same(error.source, pipeline); - test.equal(error.message, "Stage 2 Action 2 ('Build'/'build2') is consuming input Artifact 'buildOutput1' before it is being produced at Stage 2 Action 3 ('Build'/'build1')"); + test.equal(error, "Stage 2 Action 2 ('Build'/'build2') is consuming input Artifact 'buildOutput1' before it is being produced at Stage 2 Action 3 ('Build'/'build1')"); test.done(); }, @@ -284,10 +284,3 @@ nodeunitShim({ }, }, }); - -/* eslint-disable cdk/no-core-construct */ -function validate(construct: cdk.IConstruct): cdk.ValidationError[] { - cdk.ConstructNode.prepare(construct.node); - return cdk.ConstructNode.validate(construct.node); -} -/* eslint-enable cdk/no-core-construct */ diff --git a/packages/@aws-cdk/aws-codepipeline/test/general-validation.test.ts b/packages/@aws-cdk/aws-codepipeline/test/general-validation.test.ts index 76cd9b71a6941..130f91d75ef31 100644 --- a/packages/@aws-cdk/aws-codepipeline/test/general-validation.test.ts +++ b/packages/@aws-cdk/aws-codepipeline/test/general-validation.test.ts @@ -49,7 +49,7 @@ nodeunitShim({ const stack = new cdk.Stack(); const pipeline = new Pipeline(stack, 'Pipeline'); - test.deepEqual(cdk.ConstructNode.validate(pipeline.node).length, 1); + test.deepEqual(pipeline.node.validate().length, 1); test.done(); }, @@ -68,7 +68,7 @@ nodeunitShim({ ], }); - test.deepEqual(cdk.ConstructNode.validate(pipeline.node).length, 1); + test.deepEqual(pipeline.node.validate().length, 1); test.done(); }, diff --git a/packages/@aws-cdk/aws-codestar/package.json b/packages/@aws-cdk/aws-codestar/package.json index afdb7d47a5234..56bac132e6acf 100644 --- a/packages/@aws-cdk/aws-codestar/package.json +++ b/packages/@aws-cdk/aws-codestar/package.json @@ -85,12 +85,12 @@ "dependencies": { "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codestarconnections/package.json b/packages/@aws-cdk/aws-codestarconnections/package.json index 383c06a776eef..761c8e42b7df2 100644 --- a/packages/@aws-cdk/aws-codestarconnections/package.json +++ b/packages/@aws-cdk/aws-codestarconnections/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-codestarnotifications/package.json b/packages/@aws-cdk/aws-codestarnotifications/package.json index 892b4e66b2894..9c8feaf505dc3 100644 --- a/packages/@aws-cdk/aws-codestarnotifications/package.json +++ b/packages/@aws-cdk/aws-codestarnotifications/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 692822619dc27..26064cc93dce1 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -88,7 +88,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "punycode": "^2.1.1" }, "homepage": "https://github.com/aws/aws-cdk", @@ -98,7 +98,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "bundledDependencies": [ "punycode" diff --git a/packages/@aws-cdk/aws-config/package.json b/packages/@aws-cdk/aws-config/package.json index 1ba715b167a58..5b8812acb1d8f 100644 --- a/packages/@aws-cdk/aws-config/package.json +++ b/packages/@aws-cdk/aws-config/package.json @@ -88,7 +88,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -97,7 +97,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json index b744a9064e710..6a42329c36617 100644 --- a/packages/@aws-cdk/aws-databrew/package.json +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-datapipeline/package.json b/packages/@aws-cdk/aws-datapipeline/package.json index b603f17c9df2a..377bace5f77f4 100644 --- a/packages/@aws-cdk/aws-datapipeline/package.json +++ b/packages/@aws-cdk/aws-datapipeline/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-dax/package.json b/packages/@aws-cdk/aws-dax/package.json index 8e2e1dcabfb80..b61cf80ba6694 100644 --- a/packages/@aws-cdk/aws-dax/package.json +++ b/packages/@aws-cdk/aws-dax/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-detective/package.json b/packages/@aws-cdk/aws-detective/package.json index 134d3e503441a..c1f1e091807c4 100644 --- a/packages/@aws-cdk/aws-detective/package.json +++ b/packages/@aws-cdk/aws-detective/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-devopsguru/package.json b/packages/@aws-cdk/aws-devopsguru/package.json index 6600550c84247..409a0d2a6b9c6 100644 --- a/packages/@aws-cdk/aws-devopsguru/package.json +++ b/packages/@aws-cdk/aws-devopsguru/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-directoryservice/package.json b/packages/@aws-cdk/aws-directoryservice/package.json index fcb2d5c625d3a..948fac3e84ef0 100644 --- a/packages/@aws-cdk/aws-directoryservice/package.json +++ b/packages/@aws-cdk/aws-directoryservice/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-dlm/package.json b/packages/@aws-cdk/aws-dlm/package.json index a04c8f3324194..6a816e5ee5590 100644 --- a/packages/@aws-cdk/aws-dlm/package.json +++ b/packages/@aws-cdk/aws-dlm/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-dms/package.json b/packages/@aws-cdk/aws-dms/package.json index b9f30ab23ca61..1c3ff387a3029 100644 --- a/packages/@aws-cdk/aws-dms/package.json +++ b/packages/@aws-cdk/aws-dms/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index a0ee51bb69b07..f16c155a95439 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -88,7 +88,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-efs": "0.0.0", @@ -96,7 +96,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-dynamodb-global/lib/aws-dynamodb-global.ts b/packages/@aws-cdk/aws-dynamodb-global/lib/aws-dynamodb-global.ts index a76e2b8940abc..576228502bb27 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/lib/aws-dynamodb-global.ts +++ b/packages/@aws-cdk/aws-dynamodb-global/lib/aws-dynamodb-global.ts @@ -1,5 +1,6 @@ import * as dynamodb from '@aws-cdk/aws-dynamodb'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { GlobalTableCoordinator } from './global-table-coordinator'; /** @@ -26,7 +27,7 @@ export interface GlobalTableProps extends cdk.StackProps, dynamodb.TableOptions * * @deprecated use `@aws-cdk/aws-dynamodb.Table.replicationRegions` instead */ -export class GlobalTable extends cdk.Construct { +export class GlobalTable extends Construct { /** * Creates the cloudformation custom resource that launches a lambda to tie it all together */ @@ -37,7 +38,7 @@ export class GlobalTable extends cdk.Construct { */ private readonly _regionalTables = new Array(); - constructor(scope: cdk.Construct, id: string, props: GlobalTableProps) { + constructor(scope: Construct, id: string, props: GlobalTableProps) { super(scope, id); cdk.Annotations.of(this).addWarning('The @aws-cdk/aws-dynamodb-global module has been deprecated in favor of @aws-cdk/aws-dynamodb.Table.replicationRegions'); diff --git a/packages/@aws-cdk/aws-dynamodb-global/lib/global-table-coordinator.ts b/packages/@aws-cdk/aws-dynamodb-global/lib/global-table-coordinator.ts index 0d1f8c3b42835..520e44fe12067 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/lib/global-table-coordinator.ts +++ b/packages/@aws-cdk/aws-dynamodb-global/lib/global-table-coordinator.ts @@ -2,6 +2,7 @@ import * as path from 'path'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { GlobalTableProps } from './aws-dynamodb-global'; /** @@ -9,7 +10,7 @@ import { GlobalTableProps } from './aws-dynamodb-global'; * together all the DynamoDB tables into a global table */ export class GlobalTableCoordinator extends cdk.Stack { - constructor(scope: cdk.Construct, id: string, props: GlobalTableProps) { + constructor(scope: Construct, id: string, props: GlobalTableProps) { super(scope, id, props); const lambdaFunction = new lambda.SingletonFunction(this, 'SingletonLambda', { code: lambda.Code.fromAsset(path.resolve(__dirname, '../', 'lambda-packages', 'aws-global-table-coordinator', 'lib')), diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index b1b456f8ea5e1..8bfdc673ae756 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -56,7 +56,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "devDependencies": { "@aws-cdk/assert": "0.0.0", @@ -71,7 +71,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "scripts": { "build": "cdk-build", diff --git a/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts b/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts index 45182672e45a0..f81318a021d49 100644 --- a/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts +++ b/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts @@ -1,7 +1,7 @@ import * as path from 'path'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct as CoreConstruct, Duration, NestedStack, Stack } from '@aws-cdk/core'; +import { Duration, NestedStack, Stack } from '@aws-cdk/core'; import * as cr from '@aws-cdk/custom-resources'; import { Construct } from 'constructs'; @@ -31,7 +31,7 @@ export class ReplicaProvider extends NestedStack { public readonly isCompleteHandler: lambda.Function; private constructor(scope: Construct, id: string) { - super(scope as CoreConstruct, id); + super(scope, id); const code = lambda.Code.fromAsset(path.join(__dirname, 'replica-handler')); diff --git a/packages/@aws-cdk/aws-dynamodb/lib/table.ts b/packages/@aws-cdk/aws-dynamodb/lib/table.ts index 792f68f4cca3e..e650938c045c4 100644 --- a/packages/@aws-cdk/aws-dynamodb/lib/table.ts +++ b/packages/@aws-cdk/aws-dynamodb/lib/table.ts @@ -3,7 +3,7 @@ import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import { - Aws, CfnCondition, CfnCustomResource, Construct as CoreConstruct, CustomResource, Fn, + Aws, CfnCondition, CfnCustomResource, CustomResource, Fn, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token, } from '@aws-cdk/core'; import { Construct } from 'constructs'; @@ -1133,6 +1133,8 @@ export class Table extends TableBase { if (props.replicationRegions && props.replicationRegions.length > 0) { this.createReplicaTables(props.replicationRegions); } + + this.node.addValidation({ validate: () => this.validateTable() }); } /** @@ -1292,7 +1294,7 @@ export class Table extends TableBase { * * @returns an array of validation error message */ - protected validate(): string[] { + private validateTable(): string[] { const errors = new Array(); if (!this.tablePartitionKey) { @@ -1664,7 +1666,7 @@ interface ScalableAttributePair { * policy resource), new permissions are in effect before clean up happens, and so replicas that * need to be dropped can no longer be due to lack of permissions. */ -class SourceTableAttachedPolicy extends CoreConstruct implements iam.IGrantable { +class SourceTableAttachedPolicy extends Construct implements iam.IGrantable { public readonly grantPrincipal: iam.IPrincipal; public readonly policy: iam.IPolicy; diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index 925d505521fc0..c4ebf45d9e1f4 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -94,7 +94,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -105,7 +105,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts b/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts index 119043b54464a..9965a2763490b 100644 --- a/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts +++ b/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts @@ -3,7 +3,7 @@ import '@aws-cdk/assert/jest'; import * as appscaling from '@aws-cdk/aws-applicationautoscaling'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; -import { App, CfnDeletionPolicy, ConstructNode, Duration, PhysicalName, RemovalPolicy, Stack, Tags } from '@aws-cdk/core'; +import { App, CfnDeletionPolicy, Duration, PhysicalName, RemovalPolicy, Stack, Tags } from '@aws-cdk/core'; import { Attribute, AttributeType, @@ -1407,10 +1407,10 @@ test('error when validating construct if a local secondary index exists without sortKey: LSI_SORT_KEY, }); - const errors = ConstructNode.validate(table.node); + const errors = table.node.validate(); expect(errors.length).toBe(1); - expect(errors[0]?.message).toBe('a sort key of the table must be specified to add local secondary indexes'); + expect(errors[0]).toBe('a sort key of the table must be specified to add local secondary indexes'); }); test('can enable Read AutoScaling', () => { diff --git a/packages/@aws-cdk/aws-ec2/lib/cfn-init.ts b/packages/@aws-cdk/aws-ec2/lib/cfn-init.ts index 324847845849b..2fa8912eff925 100644 --- a/packages/@aws-cdk/aws-ec2/lib/cfn-init.ts +++ b/packages/@aws-cdk/aws-ec2/lib/cfn-init.ts @@ -1,6 +1,7 @@ import * as crypto from 'crypto'; import * as iam from '@aws-cdk/aws-iam'; -import { Aws, CfnResource, Construct } from '@aws-cdk/core'; +import { Aws, CfnResource } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { InitElement } from './cfn-init-elements'; import { OperatingSystemType } from './machine-image'; import { InitBindOptions, InitElementConfig, InitElementType, InitPlatform } from './private/cfn-init-internal'; diff --git a/packages/@aws-cdk/aws-ec2/lib/machine-image.ts b/packages/@aws-cdk/aws-ec2/lib/machine-image.ts index 34405181774a1..07b9b89d5ee72 100644 --- a/packages/@aws-cdk/aws-ec2/lib/machine-image.ts +++ b/packages/@aws-cdk/aws-ec2/lib/machine-image.ts @@ -1,7 +1,8 @@ import * as ssm from '@aws-cdk/aws-ssm'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; -import { Construct, ContextProvider, Stack, Token } from '@aws-cdk/core'; +import { ContextProvider, Stack, Token } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { UserData } from './user-data'; import { WindowsVersion } from './windows-versions'; diff --git a/packages/@aws-cdk/aws-ec2/lib/private/cfn-init-internal.ts b/packages/@aws-cdk/aws-ec2/lib/private/cfn-init-internal.ts index ff7fc407eedf2..75e6c57175b93 100644 --- a/packages/@aws-cdk/aws-ec2/lib/private/cfn-init-internal.ts +++ b/packages/@aws-cdk/aws-ec2/lib/private/cfn-init-internal.ts @@ -1,5 +1,5 @@ import * as iam from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * The type of the init element. diff --git a/packages/@aws-cdk/aws-ec2/lib/volume.ts b/packages/@aws-cdk/aws-ec2/lib/volume.ts index 3f9c8f3cac0dd..22a944271061f 100644 --- a/packages/@aws-cdk/aws-ec2/lib/volume.ts +++ b/packages/@aws-cdk/aws-ec2/lib/volume.ts @@ -7,11 +7,6 @@ import { Construct } from 'constructs'; import { CfnInstance, CfnVolume } from './ec2.generated'; import { IInstance } from './instance'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - - /** * Block device */ @@ -514,7 +509,7 @@ abstract class VolumeBase extends Resource implements IVolume { // The ResourceTag condition requires that all resources involved in the operation have // the given tag, so we tag this and all constructs given. Tags.of(this).add(tagKey, tagValue); - constructs.forEach(construct => Tags.of(construct as CoreConstruct).add(tagKey, tagValue)); + constructs.forEach(construct => Tags.of(construct).add(tagKey, tagValue)); return result; } @@ -543,7 +538,7 @@ abstract class VolumeBase extends Resource implements IVolume { // The ResourceTag condition requires that all resources involved in the operation have // the given tag, so we tag this and all constructs given. Tags.of(this).add(tagKey, tagValue); - constructs.forEach(construct => Tags.of(construct as CoreConstruct).add(tagKey, tagValue)); + constructs.forEach(construct => Tags.of(construct).add(tagKey, tagValue)); return result; } diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc-flow-logs.ts b/packages/@aws-cdk/aws-ec2/lib/vpc-flow-logs.ts index 0edf1867236a7..7a01c8580d5e7 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc-flow-logs.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc-flow-logs.ts @@ -6,10 +6,6 @@ import { Construct } from 'constructs'; import { CfnFlowLog } from './ec2.generated'; import { ISubnet, IVpc } from './vpc'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * A FlowLog * @@ -140,7 +136,7 @@ export abstract class FlowLogDestination { /** * Generates a flow log destination configuration */ - public abstract bind(scope: CoreConstruct, flowLog: FlowLog): FlowLogDestinationConfig; + public abstract bind(scope: Construct, flowLog: FlowLog): FlowLogDestinationConfig; } /** @@ -193,7 +189,7 @@ class S3Destination extends FlowLogDestination { super(); } - public bind(scope: CoreConstruct, _flowLog: FlowLog): FlowLogDestinationConfig { + public bind(scope: Construct, _flowLog: FlowLog): FlowLogDestinationConfig { let s3Bucket: s3.IBucket; if (this.props.s3Bucket === undefined) { s3Bucket = new s3.Bucket(scope, 'Bucket', { @@ -219,7 +215,7 @@ class CloudWatchLogsDestination extends FlowLogDestination { super(); } - public bind(scope: CoreConstruct, _flowLog: FlowLog): FlowLogDestinationConfig { + public bind(scope: Construct, _flowLog: FlowLog): FlowLogDestinationConfig { let iamRole: iam.IRole; let logGroup: logs.ILogGroup; if (this.props.iamRole === undefined) { diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc.ts b/packages/@aws-cdk/aws-ec2/lib/vpc.ts index f642f131d5a70..5e6babee65112 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc.ts @@ -1,10 +1,10 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { - Annotations, ConcreteDependable, ContextProvider, DependableTrait, IConstruct, + Annotations, ConcreteDependable, ContextProvider, DependableTrait, IDependable, IResource, Lazy, Resource, Stack, Token, Tags, Names, } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; -import { Construct, Node } from 'constructs'; +import { Construct, IConstruct, Node } from 'constructs'; import { CfnEIP, CfnInternetGateway, CfnNatGateway, CfnRoute, CfnRouteTable, CfnSubnet, CfnSubnetRouteTableAssociation, CfnVPC, CfnVPCGatewayAttachment, CfnVPNGatewayRoutePropagation, @@ -19,10 +19,6 @@ import { FlowLog, FlowLogOptions, FlowLogResourceType } from './vpc-flow-logs'; import { VpcLookupOptions } from './vpc-lookup'; import { EnableVpnGatewayOptions, VpnConnection, VpnConnectionOptions, VpnConnectionType, VpnGateway } from './vpn'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - const VPC_SUBNET_SYMBOL = Symbol.for('@aws-cdk/aws-ec2.VpcSubnet'); export interface ISubnet extends IResource { @@ -1631,8 +1627,8 @@ export class Subnet extends Resource implements ISubnet { public associateNetworkAcl(id: string, networkAcl: INetworkAcl) { this._networkAcl = networkAcl; - const scope = CoreConstruct.isConstruct(networkAcl) ? networkAcl : this; - const other = CoreConstruct.isConstruct(networkAcl) ? this : networkAcl; + const scope = networkAcl instanceof Construct ? networkAcl : this; + const other = networkAcl instanceof Construct ? this : networkAcl; new SubnetNetworkAclAssociation(scope, id + Names.nodeUniqueId(other.node), { networkAcl, subnet: this, @@ -1983,8 +1979,8 @@ class ImportedSubnet extends Resource implements ISubnet, IPublicSubnet, IPrivat } public associateNetworkAcl(id: string, networkAcl: INetworkAcl): void { - const scope = CoreConstruct.isConstruct(networkAcl) ? networkAcl : this; - const other = CoreConstruct.isConstruct(networkAcl) ? this : networkAcl; + const scope = networkAcl instanceof Construct ? networkAcl : this; + const other = networkAcl instanceof Construct ? this : networkAcl; new SubnetNetworkAclAssociation(scope, id + Names.nodeUniqueId(other.node), { networkAcl, subnet: this, diff --git a/packages/@aws-cdk/aws-ec2/package.json b/packages/@aws-cdk/aws-ec2/package.json index 4fe7d753d8b2c..afd9d1ae25081 100644 --- a/packages/@aws-cdk/aws-ec2/package.json +++ b/packages/@aws-cdk/aws-ec2/package.json @@ -94,7 +94,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -110,7 +110,7 @@ "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ec2/test/integ.share-vpcs.lit.ts b/packages/@aws-cdk/aws-ec2/test/integ.share-vpcs.lit.ts index 0ea254d29afa7..805830d3f8fa8 100644 --- a/packages/@aws-cdk/aws-ec2/test/integ.share-vpcs.lit.ts +++ b/packages/@aws-cdk/aws-ec2/test/integ.share-vpcs.lit.ts @@ -1,6 +1,6 @@ /// !cdk-integ * import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import * as ec2 from '../lib'; const app = new cdk.App(); @@ -9,8 +9,8 @@ interface ConstructThatTakesAVpcProps { vpc: ec2.IVpc; } -class ConstructThatTakesAVpc extends cdk.Construct { - constructor(scope: constructs.Construct, id: string, _props: ConstructThatTakesAVpcProps) { +class ConstructThatTakesAVpc extends Construct { + constructor(scope: Construct, id: string, _props: ConstructThatTakesAVpcProps) { super(scope, id); // new ec2.CfnInstance(this, 'Instance', { diff --git a/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts b/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts index 2f6f5ff436baa..25aaa1f39f6f5 100644 --- a/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts +++ b/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as assets from '@aws-cdk/assets'; import * as ecr from '@aws-cdk/aws-ecr'; -import { Annotations, Construct as CoreConstruct, FeatureFlags, IgnoreMode, Stack, Token } from '@aws-cdk/core'; +import { Annotations, FeatureFlags, IgnoreMode, Stack, Token } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; import { Construct } from 'constructs'; @@ -65,7 +65,7 @@ export interface DockerImageAssetProps extends DockerImageAssetOptions { * * The image will be created in build time and uploaded to an ECR repository. */ -export class DockerImageAsset extends CoreConstruct implements assets.IAsset { +export class DockerImageAsset extends Construct implements assets.IAsset { /** * The full URI of the image (including a tag). Use this reference to pull * the asset. diff --git a/packages/@aws-cdk/aws-ecr-assets/package.json b/packages/@aws-cdk/aws-ecr-assets/package.json index c6cdfc200f78f..0fa09d212e9b2 100644 --- a/packages/@aws-cdk/aws-ecr-assets/package.json +++ b/packages/@aws-cdk/aws-ecr-assets/package.json @@ -84,7 +84,7 @@ "@aws-cdk/assets": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "minimatch": "^3.0.4", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,7 +94,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "nyc": { "statements": 70 diff --git a/packages/@aws-cdk/aws-ecr/lib/repository.ts b/packages/@aws-cdk/aws-ecr/lib/repository.ts index 36e14cf861adc..2d43b69259a74 100644 --- a/packages/@aws-cdk/aws-ecr/lib/repository.ts +++ b/packages/@aws-cdk/aws-ecr/lib/repository.ts @@ -437,6 +437,8 @@ export class Repository extends RepositoryBase { resource: 'repository', resourceName: this.physicalName, }); + + this.node.addValidation({ validate: () => this.policyDocument?.validateForResourcePolicy() ?? [] }); } public addToResourcePolicy(statement: iam.PolicyStatement): iam.AddToResourcePolicyResult { @@ -447,12 +449,6 @@ export class Repository extends RepositoryBase { return { statementAdded: false, policyDependable: this.policyDocument }; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.policyDocument?.validateForResourcePolicy() || []); - return errors; - } - /** * Add a life cycle rule to the repository * diff --git a/packages/@aws-cdk/aws-ecr/package.json b/packages/@aws-cdk/aws-ecr/package.json index 906e5aebdf6eb..396c853a88c17 100644 --- a/packages/@aws-cdk/aws-ecr/package.json +++ b/packages/@aws-cdk/aws-ecr/package.json @@ -89,14 +89,14 @@ "@aws-cdk/aws-events": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-events": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-load-balanced-service-base.ts b/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-load-balanced-service-base.ts index 3bcade2f49a73..07fdb64f03075 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-load-balanced-service-base.ts +++ b/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-load-balanced-service-base.ts @@ -306,7 +306,7 @@ export interface ApplicationLoadBalancedTaskImageOptions { /** * The base class for ApplicationLoadBalancedEc2Service and ApplicationLoadBalancedFargateService services. */ -export abstract class ApplicationLoadBalancedServiceBase extends cdk.Construct { +export abstract class ApplicationLoadBalancedServiceBase extends Construct { /** * The desired number of instantiations of the task definition to keep running on the service. @@ -467,7 +467,7 @@ export abstract class ApplicationLoadBalancedServiceBase extends cdk.Construct { /** * Returns the default cluster. */ - protected getDefaultCluster(scope: cdk.Construct, vpc?: IVpc): Cluster { + protected getDefaultCluster(scope: Construct, vpc?: IVpc): Cluster { // magic string to avoid collision with user-defined constructs const DEFAULT_CLUSTER_ID = `EcsDefaultClusterMnL3mNNYN${vpc ? vpc.node.id : ''}`; const stack = cdk.Stack.of(scope); diff --git a/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-multiple-target-groups-service-base.ts b/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-multiple-target-groups-service-base.ts index 67ce9a02e77b6..8931cd0744566 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-multiple-target-groups-service-base.ts +++ b/packages/@aws-cdk/aws-ecs-patterns/lib/base/application-multiple-target-groups-service-base.ts @@ -11,10 +11,6 @@ import { LoadBalancerTarget } from '@aws-cdk/aws-route53-targets'; import { CfnOutput, Duration, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The properties for the base ApplicationMultipleTargetGroupsEc2Service or ApplicationMultipleTargetGroupsFargateService service. */ @@ -328,7 +324,7 @@ export interface ApplicationListenerProps { /** * The base class for ApplicationMultipleTargetGroupsEc2Service and ApplicationMultipleTargetGroupsFargateService classes. */ -export abstract class ApplicationMultipleTargetGroupsServiceBase extends CoreConstruct { +export abstract class ApplicationMultipleTargetGroupsServiceBase extends Construct { /** * The desired number of instantiations of the task definition to keep running on the service. diff --git a/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-load-balanced-service-base.ts b/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-load-balanced-service-base.ts index 8329db85f2792..a793f97c50347 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-load-balanced-service-base.ts +++ b/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-load-balanced-service-base.ts @@ -256,7 +256,7 @@ export interface NetworkLoadBalancedTaskImageOptions { /** * The base class for NetworkLoadBalancedEc2Service and NetworkLoadBalancedFargateService services. */ -export abstract class NetworkLoadBalancedServiceBase extends cdk.Construct { +export abstract class NetworkLoadBalancedServiceBase extends Construct { /** * The desired number of instantiations of the task definition to keep running on the service. */ @@ -361,7 +361,7 @@ export abstract class NetworkLoadBalancedServiceBase extends cdk.Construct { /** * Returns the default cluster. */ - protected getDefaultCluster(scope: cdk.Construct, vpc?: IVpc): Cluster { + protected getDefaultCluster(scope: Construct, vpc?: IVpc): Cluster { // magic string to avoid collision with user-defined constructs const DEFAULT_CLUSTER_ID = `EcsDefaultClusterMnL3mNNYN${vpc ? vpc.node.id : ''}`; const stack = cdk.Stack.of(scope); diff --git a/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-multiple-target-groups-service-base.ts b/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-multiple-target-groups-service-base.ts index d3f74588fd341..390e080b32b36 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-multiple-target-groups-service-base.ts +++ b/packages/@aws-cdk/aws-ecs-patterns/lib/base/network-multiple-target-groups-service-base.ts @@ -10,10 +10,6 @@ import { LoadBalancerTarget } from '@aws-cdk/aws-route53-targets'; import { CfnOutput, Duration, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The properties for the base NetworkMultipleTargetGroupsEc2Service or NetworkMultipleTargetGroupsFargateService service. */ @@ -261,7 +257,7 @@ export interface NetworkTargetProps { /** * The base class for NetworkMultipleTargetGroupsEc2Service and NetworkMultipleTargetGroupsFargateService classes. */ -export abstract class NetworkMultipleTargetGroupsServiceBase extends CoreConstruct { +export abstract class NetworkMultipleTargetGroupsServiceBase extends Construct { /** * The desired number of instantiations of the task definition to keep running on the service. */ diff --git a/packages/@aws-cdk/aws-ecs-patterns/lib/base/queue-processing-service-base.ts b/packages/@aws-cdk/aws-ecs-patterns/lib/base/queue-processing-service-base.ts index 66bdea9619629..db8f78dd53feb 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/lib/base/queue-processing-service-base.ts +++ b/packages/@aws-cdk/aws-ecs-patterns/lib/base/queue-processing-service-base.ts @@ -5,10 +5,6 @@ import { IQueue, Queue } from '@aws-cdk/aws-sqs'; import { CfnOutput, Duration, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The properties for the base QueueProcessingEc2Service or QueueProcessingFargateService service. */ @@ -183,7 +179,7 @@ export interface QueueProcessingServiceBaseProps { /** * The base class for QueueProcessingEc2Service and QueueProcessingFargateService services. */ -export abstract class QueueProcessingServiceBase extends CoreConstruct { +export abstract class QueueProcessingServiceBase extends Construct { /** * The SQS queue that the service will process from */ diff --git a/packages/@aws-cdk/aws-ecs-patterns/lib/base/scheduled-task-base.ts b/packages/@aws-cdk/aws-ecs-patterns/lib/base/scheduled-task-base.ts index 259e375b1973c..b5d1e6d8ee264 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/lib/base/scheduled-task-base.ts +++ b/packages/@aws-cdk/aws-ecs-patterns/lib/base/scheduled-task-base.ts @@ -6,10 +6,6 @@ import { EcsTask } from '@aws-cdk/aws-events-targets'; import { Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The properties for the base ScheduledEc2Task or ScheduledFargateTask task. */ @@ -105,7 +101,7 @@ export interface ScheduledTaskImageProps { /** * The base class for ScheduledEc2Task and ScheduledFargateTask tasks. */ -export abstract class ScheduledTaskBase extends CoreConstruct { +export abstract class ScheduledTaskBase extends Construct { /** * The name of the cluster that hosts the service. */ @@ -173,7 +169,7 @@ export abstract class ScheduledTaskBase extends CoreConstruct { /** * Returns the default cluster. */ - protected getDefaultCluster(scope: CoreConstruct, vpc?: IVpc): Cluster { + protected getDefaultCluster(scope: Construct, vpc?: IVpc): Cluster { // magic string to avoid collision with user-defined constructs const DEFAULT_CLUSTER_ID = `EcsDefaultClusterMnL3mNNYN${vpc ? vpc.node.id : ''}`; const stack = Stack.of(scope); diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index fdeab74d898bd..5aa12690e1955 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -89,7 +89,7 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -106,7 +106,7 @@ "@aws-cdk/aws-servicediscovery": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts b/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts index ff27f00cb79a8..5596fd18a6f18 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/task-definition.ts @@ -333,6 +333,7 @@ export class TaskDefinition extends TaskDefinitionBase { } this.taskDefinitionArn = taskDef.ref; + this.node.addValidation({ validate: () => this.validateTaskDefinition() }); } public get executionRole(): iam.IRole | undefined { @@ -500,8 +501,8 @@ export class TaskDefinition extends TaskDefinitionBase { /** * Validates the task definition. */ - protected validate(): string[] { - const ret = super.validate(); + private validateTaskDefinition(): string[] { + const ret = new Array(); if (isEc2Compatible(this.compatibility)) { // EC2 mode validations diff --git a/packages/@aws-cdk/aws-ecs/lib/cluster.ts b/packages/@aws-cdk/aws-ecs/lib/cluster.ts index ae3b3d0a6c163..4b1f3cbc56aec 100644 --- a/packages/@aws-cdk/aws-ecs/lib/cluster.ts +++ b/packages/@aws-cdk/aws-ecs/lib/cluster.ts @@ -11,10 +11,6 @@ import { InstanceDrainHook } from './drain-hook/instance-drain-hook'; import { ECSMetrics } from './ecs-canned-metrics.generated'; import { CfnCluster } from './ecs.generated'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The properties used to define an ECS cluster. */ @@ -484,7 +480,7 @@ export class EcsOptimizedAmi implements ec2.IMachineImage { /** * Return the correct image */ - public getImage(scope: CoreConstruct): ec2.MachineImageConfig { + public getImage(scope: Construct): ec2.MachineImageConfig { const ami = ssm.StringParameter.valueForTypedStringParameter(scope, this.amiParameterName, ssm.ParameterType.AWS_EC2_IMAGE_ID); const osType = this.windowsVersion ? ec2.OperatingSystemType.WINDOWS : ec2.OperatingSystemType.LINUX; return { @@ -557,7 +553,7 @@ export class EcsOptimizedImage implements ec2.IMachineImage { /** * Return the correct image */ - public getImage(scope: CoreConstruct): ec2.MachineImageConfig { + public getImage(scope: Construct): ec2.MachineImageConfig { const ami = ssm.StringParameter.valueForTypedStringParameter(scope, this.amiParameterName, ssm.ParameterType.AWS_EC2_IMAGE_ID); const osType = this.windowsVersion ? ec2.OperatingSystemType.WINDOWS : ec2.OperatingSystemType.LINUX; return { @@ -615,7 +611,7 @@ export class BottleRocketImage implements ec2.IMachineImage { /** * Return the correct image */ - public getImage(scope: CoreConstruct): ec2.MachineImageConfig { + public getImage(scope: Construct): ec2.MachineImageConfig { const ami = ssm.StringParameter.valueForStringParameter(scope, this.amiParameterName); return { imageId: ami, diff --git a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts index 1ac4ec541df85..f385f2b9bb96a 100644 --- a/packages/@aws-cdk/aws-ecs/lib/container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/lib/container-definition.ts @@ -301,7 +301,7 @@ export interface ContainerDefinitionProps extends ContainerDefinitionOptions { /** * A container definition is used in a task definition to describe the containers that are launched as part of a task. */ -export class ContainerDefinition extends cdk.Construct { +export class ContainerDefinition extends Construct { /** * The Linux-specific modifications that are applied to the container, such as Linux kernel capabilities. */ diff --git a/packages/@aws-cdk/aws-ecs/lib/container-image.ts b/packages/@aws-cdk/aws-ecs/lib/container-image.ts index 52ca23dcb5aed..b2a01fca50d4e 100644 --- a/packages/@aws-cdk/aws-ecs/lib/container-image.ts +++ b/packages/@aws-cdk/aws-ecs/lib/container-image.ts @@ -1,11 +1,8 @@ import * as ecr from '@aws-cdk/aws-ecr'; +import { Construct } from 'constructs'; import { ContainerDefinition } from './container-definition'; import { CfnTaskDefinition } from './ecs.generated'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Constructs for types of container images */ @@ -43,7 +40,7 @@ export abstract class ContainerImage { */ public static fromDockerImageAsset(asset: DockerImageAsset): ContainerImage { return { - bind(_scope: CoreConstruct, containerDefinition: ContainerDefinition): ContainerImageConfig { + bind(_scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig { asset.repository.grantPull(containerDefinition.taskDefinition.obtainExecutionRole()); return { imageName: asset.imageUri, @@ -55,7 +52,7 @@ export abstract class ContainerImage { /** * Called when the image is used by a ContainerDefinition */ - public abstract bind(scope: CoreConstruct, containerDefinition: ContainerDefinition): ContainerImageConfig; + public abstract bind(scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig; } /** @@ -77,3 +74,4 @@ import { DockerImageAsset } from '@aws-cdk/aws-ecr-assets'; import { AssetImage, AssetImageProps } from './images/asset-image'; import { EcrImage } from './images/ecr'; import { RepositoryImage, RepositoryImageProps } from './images/repository'; + diff --git a/packages/@aws-cdk/aws-ecs/lib/drain-hook/instance-drain-hook.ts b/packages/@aws-cdk/aws-ecs/lib/drain-hook/instance-drain-hook.ts index a11b6dce3bbb8..eda62a301dfe0 100644 --- a/packages/@aws-cdk/aws-ecs/lib/drain-hook/instance-drain-hook.ts +++ b/packages/@aws-cdk/aws-ecs/lib/drain-hook/instance-drain-hook.ts @@ -49,7 +49,7 @@ export interface InstanceDrainHookProps { /** * A hook to drain instances from ECS traffic before they're terminated */ -export class InstanceDrainHook extends cdk.Construct { +export class InstanceDrainHook extends Construct { /** * Constructs a new instance of the InstanceDrainHook class. diff --git a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts index aa2dd8adbdc43..e8b86ec808e01 100644 --- a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts @@ -233,6 +233,8 @@ export class Ec2Service extends BaseService implements IEc2Service { if (!this.taskDefinition.defaultContainer) { throw new Error('A TaskDefinition must have at least one essential container'); } + + this.node.addValidation({ validate: () => this.validateEc2Service() }); } /** @@ -262,8 +264,8 @@ export class Ec2Service extends BaseService implements IEc2Service { /** * Validates this Ec2Service. */ - protected validate(): string[] { - const ret = super.validate(); + private validateEc2Service(): string[] { + const ret = new Array(); if (!this.cluster.hasEc2Capacity) { ret.push('Cluster for this service needs Ec2 capacity. Call addXxxCapacity() on the cluster.'); } diff --git a/packages/@aws-cdk/aws-ecs/lib/environment-file.ts b/packages/@aws-cdk/aws-ecs/lib/environment-file.ts index 0a5c8bb9de9cb..daaaf7db98d78 100644 --- a/packages/@aws-cdk/aws-ecs/lib/environment-file.ts +++ b/packages/@aws-cdk/aws-ecs/lib/environment-file.ts @@ -1,6 +1,6 @@ import { IBucket, Location } from '@aws-cdk/aws-s3'; import { Asset, AssetOptions } from '@aws-cdk/aws-s3-assets'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Constructs for types of environment files diff --git a/packages/@aws-cdk/aws-ecs/lib/images/asset-image.ts b/packages/@aws-cdk/aws-ecs/lib/images/asset-image.ts index c17f56d7cfdee..2b2a9e039bdb9 100644 --- a/packages/@aws-cdk/aws-ecs/lib/images/asset-image.ts +++ b/packages/@aws-cdk/aws-ecs/lib/images/asset-image.ts @@ -1,11 +1,8 @@ import { DockerImageAsset, DockerImageAssetOptions } from '@aws-cdk/aws-ecr-assets'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { ContainerImage, ContainerImageConfig } from '../container-image'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The properties for building an AssetImage. */ @@ -25,7 +22,7 @@ export class AssetImage extends ContainerImage { super(); } - public bind(scope: CoreConstruct, containerDefinition: ContainerDefinition): ContainerImageConfig { + public bind(scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig { const asset = new DockerImageAsset(scope, 'AssetImage', { directory: this.directory, ...this.props, diff --git a/packages/@aws-cdk/aws-ecs/lib/images/ecr.ts b/packages/@aws-cdk/aws-ecs/lib/images/ecr.ts index e8dc339bf9e82..fb349ad4367d7 100644 --- a/packages/@aws-cdk/aws-ecs/lib/images/ecr.ts +++ b/packages/@aws-cdk/aws-ecs/lib/images/ecr.ts @@ -1,11 +1,8 @@ import * as ecr from '@aws-cdk/aws-ecr'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { ContainerImage, ContainerImageConfig } from '../container-image'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * An image from an Amazon ECR repository. */ @@ -28,7 +25,7 @@ export class EcrImage extends ContainerImage { this.imageName = this.repository.repositoryUriForTag(this.tag); } - public bind(_scope: CoreConstruct, containerDefinition: ContainerDefinition): ContainerImageConfig { + public bind(_scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig { this.repository.grantPull(containerDefinition.taskDefinition.obtainExecutionRole()); return { diff --git a/packages/@aws-cdk/aws-ecs/lib/images/repository.ts b/packages/@aws-cdk/aws-ecs/lib/images/repository.ts index bf014fb18cb68..7e232a8cbdf36 100644 --- a/packages/@aws-cdk/aws-ecs/lib/images/repository.ts +++ b/packages/@aws-cdk/aws-ecs/lib/images/repository.ts @@ -1,12 +1,9 @@ import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import { Annotations, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { ContainerImage, ContainerImageConfig } from '../container-image'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Regex pattern to check if it is an ECR image URL. * @@ -38,7 +35,7 @@ export class RepositoryImage extends ContainerImage { super(); } - public bind(scope: CoreConstruct, containerDefinition: ContainerDefinition): ContainerImageConfig { + public bind(scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig { // name could be a Token - in that case, skip validation altogether if (!Token.isUnresolved(this.imageName) && ECR_IMAGE_REGEX.test(this.imageName)) { Annotations.of(scope).addWarning("Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'."); diff --git a/packages/@aws-cdk/aws-ecs/lib/images/tag-parameter-container-image.ts b/packages/@aws-cdk/aws-ecs/lib/images/tag-parameter-container-image.ts index de738d3c562e3..42ddbb2769943 100644 --- a/packages/@aws-cdk/aws-ecs/lib/images/tag-parameter-container-image.ts +++ b/packages/@aws-cdk/aws-ecs/lib/images/tag-parameter-container-image.ts @@ -1,5 +1,6 @@ import * as ecr from '@aws-cdk/aws-ecr'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { ContainerImage, ContainerImageConfig } from '../container-image'; @@ -21,7 +22,7 @@ export class TagParameterContainerImage extends ContainerImage { this.repository = repository; } - public bind(scope: cdk.Construct, containerDefinition: ContainerDefinition): ContainerImageConfig { + public bind(scope: Construct, containerDefinition: ContainerDefinition): ContainerImageConfig { this.repository.grantPull(containerDefinition.taskDefinition.obtainExecutionRole()); const imageTagParameter = new cdk.CfnParameter(scope, 'ImageTagParam'); this.imageTagParameter = imageTagParameter; diff --git a/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts b/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts index 45e792126fd20..7185527184694 100644 --- a/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts +++ b/packages/@aws-cdk/aws-ecs/lib/linux-parameters.ts @@ -24,7 +24,7 @@ export interface LinuxParametersProps { /** * Linux-specific options that are applied to the container. */ -export class LinuxParameters extends cdk.Construct { +export class LinuxParameters extends Construct { /** * Whether the init process is enabled */ diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/aws-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/aws-log-driver.ts index 705c4ed7fcb72..dffe40822281f 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/aws-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/aws-log-driver.ts @@ -1,13 +1,10 @@ import * as logs from '@aws-cdk/aws-logs'; import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { LogDriver, LogDriverConfig } from './log-driver'; import { removeEmpty } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Specifies the awslogs log driver configuration options. */ @@ -91,7 +88,7 @@ export class AwsLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(scope: CoreConstruct, containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(scope: Construct, containerDefinition: ContainerDefinition): LogDriverConfig { this.logGroup = this.props.logGroup || new logs.LogGroup(scope, 'LogGroup', { retention: this.props.logRetention || Infinity, }); diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/firelens-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/firelens-log-driver.ts index caba29cafaf3a..a664ea63de9c3 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/firelens-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/firelens-log-driver.ts @@ -1,12 +1,9 @@ +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { removeEmpty } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Specifies the firelens log driver configuration options. */ @@ -42,7 +39,7 @@ export class FireLensLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'awsfirelens', ...(this.options && { options: removeEmpty(this.options) }), diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/fluentd-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/fluentd-log-driver.ts index 30800bb022b86..26f33c16f84e6 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/fluentd-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/fluentd-log-driver.ts @@ -1,13 +1,10 @@ import { Duration } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { renderCommonLogDriverOptions, stringifyOptions } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Specifies the fluentd log driver configuration options. * @@ -76,7 +73,7 @@ export class FluentdLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'fluentd', options: stringifyOptions({ diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/gelf-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/gelf-log-driver.ts index 120bcb0d4545f..e16d499ff3c63 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/gelf-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/gelf-log-driver.ts @@ -1,13 +1,10 @@ import { Duration } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { ensureInRange, ensurePositiveInteger, renderCommonLogDriverOptions, stringifyOptions } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The type of compression the GELF driver uses to compress each log message. */ @@ -88,7 +85,7 @@ export class GelfLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'gelf', options: stringifyOptions({ diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/generic-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/generic-log-driver.ts index 7389887afddd0..90e7b5a005d28 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/generic-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/generic-log-driver.ts @@ -1,11 +1,8 @@ +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { LogDriver, LogDriverConfig } from '../index'; import { removeEmpty } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The configuration to use when creating a log driver. */ @@ -64,7 +61,7 @@ export class GenericLogDriver extends LogDriver { /** * Called when the log driver is configured on a container. */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: this.logDriver, options: removeEmpty(this.options), diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/journald-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/journald-log-driver.ts index 2f958dc00dc33..80eb842c06f0a 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/journald-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/journald-log-driver.ts @@ -1,12 +1,9 @@ +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { renderCommonLogDriverOptions, stringifyOptions } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Specifies the journald log driver configuration options. * @@ -30,7 +27,7 @@ export class JournaldLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'journald', options: stringifyOptions({ diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/json-file-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/json-file-log-driver.ts index 75652cfd416ae..d5a5ee2d0651c 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/json-file-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/json-file-log-driver.ts @@ -1,12 +1,9 @@ +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { joinWithCommas, stringifyOptions } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Specifies the json-file log driver configuration options. * @@ -59,7 +56,7 @@ export class JsonFileLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'json-file', options: stringifyOptions({ diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/log-driver.ts index 59d7bfe6e417a..ce7cc80f1e677 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/log-driver.ts @@ -1,10 +1,7 @@ +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { AwsLogDriver, AwsLogDriverProps } from './aws-log-driver'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The base class for log drivers. */ @@ -19,7 +16,7 @@ export abstract class LogDriver { /** * Called when the log driver is configured on a container */ - public abstract bind(scope: CoreConstruct, containerDefinition: ContainerDefinition): LogDriverConfig; + public abstract bind(scope: Construct, containerDefinition: ContainerDefinition): LogDriverConfig; } /** diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/splunk-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/splunk-log-driver.ts index ecb4d9f0dd9c1..ee630695cf11c 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/splunk-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/splunk-log-driver.ts @@ -1,13 +1,10 @@ import { SecretValue } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { ensureInRange, renderCommonLogDriverOptions, stringifyOptions } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Log Message Format */ @@ -129,7 +126,7 @@ export class SplunkLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'splunk', options: stringifyOptions({ diff --git a/packages/@aws-cdk/aws-ecs/lib/log-drivers/syslog-log-driver.ts b/packages/@aws-cdk/aws-ecs/lib/log-drivers/syslog-log-driver.ts index 82f006c47bde8..7ae1eb2f90891 100644 --- a/packages/@aws-cdk/aws-ecs/lib/log-drivers/syslog-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/lib/log-drivers/syslog-log-driver.ts @@ -1,12 +1,9 @@ +import { Construct } from 'constructs'; import { ContainerDefinition } from '../container-definition'; import { BaseLogDriverProps } from './base-log-driver'; import { LogDriver, LogDriverConfig } from './log-driver'; import { renderCommonLogDriverOptions, stringifyOptions } from './utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Specifies the syslog log driver configuration options. * @@ -89,7 +86,7 @@ export class SyslogLogDriver extends LogDriver { /** * Called when the log driver is configured on a container */ - public bind(_scope: CoreConstruct, _containerDefinition: ContainerDefinition): LogDriverConfig { + public bind(_scope: Construct, _containerDefinition: ContainerDefinition): LogDriverConfig { return { logDriver: 'syslog', options: stringifyOptions({ diff --git a/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/app-mesh-proxy-configuration.ts b/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/app-mesh-proxy-configuration.ts index 7b10ce325506a..12d09bc68737d 100644 --- a/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/app-mesh-proxy-configuration.ts +++ b/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/app-mesh-proxy-configuration.ts @@ -1,11 +1,8 @@ +import { Construct } from 'constructs'; import { TaskDefinition } from '../base/task-definition'; import { CfnTaskDefinition } from '../ecs.generated'; import { ProxyConfiguration } from './proxy-configuration'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Interface for setting the properties of proxy configuration. */ @@ -90,7 +87,7 @@ export class AppMeshProxyConfiguration extends ProxyConfiguration { /** * Called when the proxy configuration is configured on a task definition. */ - public bind(_scope: CoreConstruct, _taskDefinition: TaskDefinition): CfnTaskDefinition.ProxyConfigurationProperty { + public bind(_scope: Construct, _taskDefinition: TaskDefinition): CfnTaskDefinition.ProxyConfigurationProperty { const configProps = this.props.properties; const configType = 'APPMESH'; return { diff --git a/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/proxy-configuration.ts b/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/proxy-configuration.ts index ef457a6e18b41..2bb30545785bb 100644 --- a/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/proxy-configuration.ts +++ b/packages/@aws-cdk/aws-ecs/lib/proxy-configuration/proxy-configuration.ts @@ -1,10 +1,7 @@ +import { Construct } from 'constructs'; import { TaskDefinition } from '../base/task-definition'; import { CfnTaskDefinition } from '../ecs.generated'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * The base class for proxy configurations. */ @@ -12,5 +9,5 @@ export abstract class ProxyConfiguration { /** * Called when the proxy configuration is configured on a task definition. */ - public abstract bind(_scope: CoreConstruct, _taskDefinition: TaskDefinition): CfnTaskDefinition.ProxyConfigurationProperty; + public abstract bind(_scope: Construct, _taskDefinition: TaskDefinition): CfnTaskDefinition.ProxyConfigurationProperty; } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index 2788cf3d91c92..b1a530e41c624 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -110,7 +110,7 @@ "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -140,7 +140,7 @@ "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-efs/package.json b/packages/@aws-cdk/aws-efs/package.json index d63f2f0c043c2..559a961679bc1 100644 --- a/packages/@aws-cdk/aws-efs/package.json +++ b/packages/@aws-cdk/aws-efs/package.json @@ -86,7 +86,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -95,7 +95,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts b/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts index 276937847d558..d136ae68af845 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/aws-auth.ts @@ -1,5 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; -import { Construct, Lazy, Stack } from '@aws-cdk/core'; +import { Lazy, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Mapping } from './aws-auth-mapping'; import { Cluster } from './cluster'; import { KubernetesResource } from './k8s-resource'; diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/cluster-resource.ts b/packages/@aws-cdk/aws-eks-legacy/lib/cluster-resource.ts index 8c7600d3a1d34..14296205ec3ca 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/cluster-resource.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/cluster-resource.ts @@ -2,7 +2,8 @@ import * as path from 'path'; import * as cfn from '@aws-cdk/aws-cloudformation'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct, Duration, Token } from '@aws-cdk/core'; +import { Duration, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnClusterProps } from './eks.generated'; import { KubectlLayer } from './kubectl-layer'; diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/cluster.ts b/packages/@aws-cdk/aws-eks-legacy/lib/cluster.ts index 61f3ccc01fe3d..b58bd0ae8ae44 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/cluster.ts @@ -4,7 +4,8 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as ssm from '@aws-cdk/aws-ssm'; -import { Annotations, CfnOutput, Construct, Duration, IResource, Resource, Stack, Token, Tags } from '@aws-cdk/core'; +import { Annotations, CfnOutput, Duration, IResource, Resource, Stack, Token, Tags } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { AwsAuth } from './aws-auth'; import { ClusterResource } from './cluster-resource'; import { CfnCluster, CfnClusterProps } from './eks.generated'; diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/helm-chart.ts b/packages/@aws-cdk/aws-eks-legacy/lib/helm-chart.ts index 9be42e435123c..a43f9bde3c475 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/helm-chart.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/helm-chart.ts @@ -1,7 +1,8 @@ import * as path from 'path'; import { CustomResource, CustomResourceProvider } from '@aws-cdk/aws-cloudformation'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct, Duration, Names, Stack } from '@aws-cdk/core'; +import { Duration, Names, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Cluster } from './cluster'; import { KubectlLayer } from './kubectl-layer'; diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/k8s-resource.ts b/packages/@aws-cdk/aws-eks-legacy/lib/k8s-resource.ts index d5fd29d272903..dc9c6b9dab21d 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/k8s-resource.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/k8s-resource.ts @@ -1,5 +1,6 @@ import * as cfn from '@aws-cdk/aws-cloudformation'; -import { Construct, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Cluster } from './cluster'; export interface KubernetesResourceProps { diff --git a/packages/@aws-cdk/aws-eks-legacy/lib/kubectl-layer.ts b/packages/@aws-cdk/aws-eks-legacy/lib/kubectl-layer.ts index 33aebc224d6ce..34319eb1c0a10 100644 --- a/packages/@aws-cdk/aws-eks-legacy/lib/kubectl-layer.ts +++ b/packages/@aws-cdk/aws-eks-legacy/lib/kubectl-layer.ts @@ -1,6 +1,7 @@ import * as crypto from 'crypto'; import * as lambda from '@aws-cdk/aws-lambda'; -import { CfnResource, Construct, Resource, Stack, Token } from '@aws-cdk/core'; +import { CfnResource, Resource, Stack, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; const KUBECTL_APP_ARN = 'arn:aws:serverlessrepo:us-east-1:903779448426:applications/lambda-layer-kubectl'; const KUBECTL_APP_VERSION = '1.13.7'; diff --git a/packages/@aws-cdk/aws-eks-legacy/package.json b/packages/@aws-cdk/aws-eks-legacy/package.json index 5125951d96c80..ca92246e41c7c 100644 --- a/packages/@aws-cdk/aws-eks-legacy/package.json +++ b/packages/@aws-cdk/aws-eks-legacy/package.json @@ -86,7 +86,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -97,7 +97,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-eks/lib/aws-auth.ts b/packages/@aws-cdk/aws-eks/lib/aws-auth.ts index c1c405bf2dc29..0a8a6d9051a6d 100644 --- a/packages/@aws-cdk/aws-eks/lib/aws-auth.ts +++ b/packages/@aws-cdk/aws-eks/lib/aws-auth.ts @@ -1,14 +1,10 @@ import * as iam from '@aws-cdk/aws-iam'; -import { Lazy, Stack, IConstruct } from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Lazy, Stack } from '@aws-cdk/core'; +import { Construct, IConstruct } from 'constructs'; import { AwsAuthMapping } from './aws-auth-mapping'; import { Cluster } from './cluster'; import { KubernetesManifest } from './k8s-manifest'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Configuration props for the AwsAuth construct. */ @@ -26,7 +22,7 @@ export interface AwsAuthProps { * * @see https://docs.aws.amazon.com/en_us/eks/latest/userguide/add-user-role.html */ -export class AwsAuth extends CoreConstruct { +export class AwsAuth extends Construct { private readonly stack: Stack; private readonly roleMappings = new Array<{ role: iam.IRole, mapping: AwsAuthMapping }>(); private readonly userMappings = new Array<{ user: iam.IUser, mapping: AwsAuthMapping }>(); diff --git a/packages/@aws-cdk/aws-eks/lib/cluster-resource-provider.ts b/packages/@aws-cdk/aws-eks/lib/cluster-resource-provider.ts index 12839a3ee6044..0fcb1a20c0b79 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster-resource-provider.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster-resource-provider.ts @@ -6,10 +6,6 @@ import { Duration, NestedStack, Stack } from '@aws-cdk/core'; import * as cr from '@aws-cdk/custom-resources'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - const HANDLER_DIR = path.join(__dirname, 'cluster-resource-handler'); const HANDLER_RUNTIME = lambda.Runtime.NODEJS_12_X; @@ -56,7 +52,7 @@ export class ClusterResourceProvider extends NestedStack { public readonly provider: cr.Provider; private constructor(scope: Construct, id: string, props: ClusterResourceProviderProps) { - super(scope as CoreConstruct, id); + super(scope, id); const onEvent = new lambda.Function(this, 'OnEventHandler', { code: lambda.Code.fromAsset(HANDLER_DIR), diff --git a/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts b/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts index 5d89741026aa9..36dd788a8bc0e 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster-resource.ts @@ -7,10 +7,6 @@ import { CLUSTER_RESOURCE_TYPE } from './cluster-resource-handler/consts'; import { ClusterResourceProvider } from './cluster-resource-provider'; import { CfnCluster } from './eks.generated'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - export interface ClusterResourceProps { readonly resourcesVpcConfig: CfnCluster.ResourcesVpcConfigProperty; readonly roleArn: string; @@ -36,7 +32,7 @@ export interface ClusterResourceProps { * cluster via `kubectl` to enable Kubernetes management capabilities like apply * manifest and IAM role/user RBAC mapping. */ -export class ClusterResource extends CoreConstruct { +export class ClusterResource extends Construct { public readonly attrEndpoint: string; public readonly attrArn: string; public readonly attrCertificateAuthorityData: string; diff --git a/packages/@aws-cdk/aws-eks/lib/cluster.ts b/packages/@aws-cdk/aws-eks/lib/cluster.ts index 5e7fb32ecacd3..cb35a3c719283 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster.ts @@ -24,10 +24,6 @@ import { BottleRocketImage } from './private/bottlerocket'; import { ServiceAccount, ServiceAccountOptions } from './service-account'; import { LifecycleLabel, renderAmazonLinuxUserData, renderBottlerocketUserData } from './user-data'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - // defaults are based on https://eksctl.io const DEFAULT_CAPACITY_COUNT = 2; const DEFAULT_CAPACITY_TYPE = ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.LARGE); @@ -1822,7 +1818,7 @@ export class EksOptimizedImage implements ec2.IMachineImage { /** * Return the correct image */ - public getImage(scope: CoreConstruct): ec2.MachineImageConfig { + public getImage(scope: Construct): ec2.MachineImageConfig { const ami = ssm.StringParameter.valueForStringParameter(scope, this.amiParameterName); return { imageId: ami, diff --git a/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts b/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts index 4ce6f094909bd..1fd6a3ff8c7d6 100644 --- a/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts +++ b/packages/@aws-cdk/aws-eks/lib/fargate-profile.ts @@ -6,10 +6,6 @@ import { Cluster } from './cluster'; import { FARGATE_PROFILE_RESOURCE_TYPE } from './cluster-resource-handler/consts'; import { ClusterResourceProvider } from './cluster-resource-provider'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Options for defining EKS Fargate Profiles. */ @@ -113,7 +109,7 @@ export interface Selector { * eks.amazonaws.com/fargate-profile: profile_name. However, the pod must still * match a selector in that profile in order to be scheduled onto Fargate. */ -export class FargateProfile extends CoreConstruct implements ITaggable { +export class FargateProfile extends Construct implements ITaggable { /** * The full Amazon Resource Name (ARN) of the Fargate profile. diff --git a/packages/@aws-cdk/aws-eks/lib/helm-chart.ts b/packages/@aws-cdk/aws-eks/lib/helm-chart.ts index 9e981bf449793..0c8eaaeb1455d 100644 --- a/packages/@aws-cdk/aws-eks/lib/helm-chart.ts +++ b/packages/@aws-cdk/aws-eks/lib/helm-chart.ts @@ -3,10 +3,6 @@ import { Construct } from 'constructs'; import { ICluster } from './cluster'; import { KubectlProvider } from './kubectl-provider'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Helm Chart options. */ @@ -84,7 +80,7 @@ export interface HelmChartProps extends HelmChartOptions { * * Applies/deletes the resources using `kubectl` in sync with the resource. */ -export class HelmChart extends CoreConstruct { +export class HelmChart extends Construct { /** * The CloudFormation resource type. */ diff --git a/packages/@aws-cdk/aws-eks/lib/k8s-manifest.ts b/packages/@aws-cdk/aws-eks/lib/k8s-manifest.ts index 205c28a9ee647..9ffe48da1f08e 100644 --- a/packages/@aws-cdk/aws-eks/lib/k8s-manifest.ts +++ b/packages/@aws-cdk/aws-eks/lib/k8s-manifest.ts @@ -3,10 +3,6 @@ import { Construct, Node } from 'constructs'; import { ICluster } from './cluster'; import { KubectlProvider } from './kubectl-provider'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - const PRUNE_LABEL_PREFIX = 'aws.cdk.eks/prune-'; /** @@ -100,7 +96,7 @@ export interface KubernetesManifestProps extends KubernetesManifestOptions { * * Applies/deletes the manifest using `kubectl`. */ -export class KubernetesManifest extends CoreConstruct { +export class KubernetesManifest extends Construct { /** * The CloudFormation reosurce type. */ diff --git a/packages/@aws-cdk/aws-eks/lib/k8s-object-value.ts b/packages/@aws-cdk/aws-eks/lib/k8s-object-value.ts index e8cfddd478f60..6234aa6efc6ac 100644 --- a/packages/@aws-cdk/aws-eks/lib/k8s-object-value.ts +++ b/packages/@aws-cdk/aws-eks/lib/k8s-object-value.ts @@ -3,10 +3,6 @@ import { Construct } from 'constructs'; import { ICluster } from './cluster'; import { KubectlProvider } from './kubectl-provider'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Properties for KubernetesObjectValue. */ @@ -55,7 +51,7 @@ export interface KubernetesObjectValueProps { * Represents a value of a specific object deployed in the cluster. * Use this to fetch any information available by the `kubectl get` command. */ -export class KubernetesObjectValue extends CoreConstruct { +export class KubernetesObjectValue extends Construct { /** * The CloudFormation reosurce type. */ diff --git a/packages/@aws-cdk/aws-eks/lib/k8s-patch.ts b/packages/@aws-cdk/aws-eks/lib/k8s-patch.ts index 3aa2eb8c36255..7d99bd3b6a428 100644 --- a/packages/@aws-cdk/aws-eks/lib/k8s-patch.ts +++ b/packages/@aws-cdk/aws-eks/lib/k8s-patch.ts @@ -3,10 +3,6 @@ import { Construct } from 'constructs'; import { ICluster } from './cluster'; import { KubectlProvider } from './kubectl-provider'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Properties for KubernetesPatch */ @@ -71,7 +67,7 @@ export enum PatchType { * Kubernetes resource. * @see https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/ */ -export class KubernetesPatch extends CoreConstruct { +export class KubernetesPatch extends Construct { constructor(scope: Construct, id: string, props: KubernetesPatchProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts b/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts index e4c71cfda381c..3a184fa153b1c 100644 --- a/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts +++ b/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts @@ -8,10 +8,6 @@ import { KubectlLayer } from '@aws-cdk/lambda-layer-kubectl'; import { Construct } from 'constructs'; import { ICluster, Cluster } from './cluster'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - export interface KubectlProviderProps { /** * The cluster to control. @@ -55,7 +51,7 @@ export class KubectlProvider extends NestedStack { public readonly handlerRole: iam.IRole; public constructor(scope: Construct, id: string, props: KubectlProviderProps) { - super(scope as CoreConstruct, id); + super(scope, id); const cluster = props.cluster; diff --git a/packages/@aws-cdk/aws-eks/lib/private/bottlerocket.ts b/packages/@aws-cdk/aws-eks/lib/private/bottlerocket.ts index d2e88ec815630..952b308d7e160 100644 --- a/packages/@aws-cdk/aws-eks/lib/private/bottlerocket.ts +++ b/packages/@aws-cdk/aws-eks/lib/private/bottlerocket.ts @@ -1,6 +1,6 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as ssm from '@aws-cdk/aws-ssm'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Properties for BottleRocketImage diff --git a/packages/@aws-cdk/aws-eks/lib/service-account.ts b/packages/@aws-cdk/aws-eks/lib/service-account.ts index 0ad6b238fdf89..6a4f21126bb53 100644 --- a/packages/@aws-cdk/aws-eks/lib/service-account.ts +++ b/packages/@aws-cdk/aws-eks/lib/service-account.ts @@ -4,10 +4,6 @@ import { Construct } from 'constructs'; import { ICluster } from './cluster'; import { KubernetesManifest } from './k8s-manifest'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Options for `ServiceAccount` */ @@ -38,7 +34,7 @@ export interface ServiceAccountProps extends ServiceAccountOptions { /** * Service Account */ -export class ServiceAccount extends CoreConstruct implements IPrincipal { +export class ServiceAccount extends Construct implements IPrincipal { /** * The role which is linked to the service account. */ diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index 40e4684e4805f..067ad525a8674 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -97,7 +97,7 @@ "@aws-cdk/custom-resources": "0.0.0", "@aws-cdk/lambda-layer-awscli": "0.0.0", "@aws-cdk/lambda-layer-kubectl": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "yaml": "1.10.0" }, "bundledDependencies": [ @@ -113,7 +113,7 @@ "@aws-cdk/aws-ssm": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "@aws-cdk/lambda-layer-awscli": "0.0.0", "@aws-cdk/lambda-layer-kubectl": "0.0.0" }, diff --git a/packages/@aws-cdk/aws-eks/test/pinger/pinger.ts b/packages/@aws-cdk/aws-eks/test/pinger/pinger.ts index 1165da1ca90df..ca44febede42a 100644 --- a/packages/@aws-cdk/aws-eks/test/pinger/pinger.ts +++ b/packages/@aws-cdk/aws-eks/test/pinger/pinger.ts @@ -4,16 +4,12 @@ import { CustomResource, Token, Duration } from '@aws-cdk/core'; import * as cr from '@aws-cdk/custom-resources'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - export interface PingerProps { readonly url: string; readonly securityGroup?: ec2.SecurityGroup; readonly vpc?: ec2.IVpc; } -export class Pinger extends CoreConstruct { +export class Pinger extends Construct { private _resource: CustomResource; diff --git a/packages/@aws-cdk/aws-eks/test/test.cluster.ts b/packages/@aws-cdk/aws-eks/test/test.cluster.ts index 4306d042acf1b..f485253d1eba4 100644 --- a/packages/@aws-cdk/aws-eks/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-eks/test/test.cluster.ts @@ -8,7 +8,7 @@ import * as kms from '@aws-cdk/aws-kms'; import * as lambda from '@aws-cdk/aws-lambda'; import * as cdk from '@aws-cdk/core'; import * as cdk8s from 'cdk8s'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import { Test } from 'nodeunit'; import * as YAML from 'yaml'; import * as eks from '../lib'; @@ -198,7 +198,7 @@ export = { }); // create a plain construct, not a cdk8s chart - const someConstruct = new constructs.Construct(stack, 'SomeConstruct'); + const someConstruct = new Construct(stack, 'SomeConstruct'); test.throws(() => cluster.addCdk8sChart('chart', someConstruct), /Invalid cdk8s chart. Must contain a \'toJson\' method, but found undefined/); test.done(); @@ -215,7 +215,7 @@ export = { }); // create a plain construct, not a cdk8s chart - const someConstruct = new cdk.Construct(stack, 'SomeConstruct'); + const someConstruct = new Construct(stack, 'SomeConstruct'); test.throws(() => cluster.addCdk8sChart('chart', someConstruct), /Invalid cdk8s chart. Must contain a \'toJson\' method, but found undefined/); test.done(); @@ -289,7 +289,7 @@ export = { class ClusterStack extends cdk.Stack { public eksCluster: eks.Cluster; - constructor(scope: constructs.Construct, id: string, props: { sg: ec2.ISecurityGroup, vpc: ec2.IVpc }) { + constructor(scope: Construct, id: string, props: { sg: ec2.ISecurityGroup, vpc: ec2.IVpc }) { super(scope, id); this.eksCluster = new eks.Cluster(this, 'Cluster', { version: CLUSTER_VERSION, @@ -305,7 +305,7 @@ export = { public readonly securityGroup: ec2.ISecurityGroup; public readonly vpc: ec2.IVpc; - constructor(scope: constructs.Construct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id); this.vpc = new ec2.Vpc(this, 'Vpc'); this.securityGroup = new ec2.SecurityGroup(this, 'SecurityGroup', { vpc: this.vpc }); @@ -328,7 +328,7 @@ export = { class ClusterStack extends cdk.Stack { public eksCluster: eks.Cluster; - constructor(scope: constructs.Construct, id: string, props?: cdk.StackProps) { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); this.eksCluster = new eks.Cluster(this, 'Cluster', { version: CLUSTER_VERSION, @@ -338,7 +338,7 @@ export = { } class ManifestStack extends cdk.Stack { - constructor(scope: constructs.Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { + constructor(scope: Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { super(scope, id, props); // this role creates a dependency between this stack and the cluster stack @@ -380,7 +380,7 @@ export = { class ClusterStack extends cdk.Stack { public eksCluster: eks.Cluster; - constructor(scope: constructs.Construct, id: string, props?: cdk.StackProps) { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); this.eksCluster = new eks.Cluster(this, 'Cluster', { version: CLUSTER_VERSION, @@ -390,7 +390,7 @@ export = { } class ChartStack extends cdk.Stack { - constructor(scope: constructs.Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { + constructor(scope: Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { super(scope, id, props); // this role creates a dependency between this stack and the cluster stack @@ -423,7 +423,7 @@ export = { class ClusterStack extends cdk.Stack { public eksCluster: eks.Cluster; - constructor(scope: constructs.Construct, id: string, props?: cdk.StackProps) { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); this.eksCluster = new eks.Cluster(this, 'Cluster', { version: CLUSTER_VERSION, @@ -433,7 +433,7 @@ export = { } class ChartStack extends cdk.Stack { - constructor(scope: constructs.Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { + constructor(scope: Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { super(scope, id, props); const resource = new cdk.CfnResource(this, 'resource', { type: 'MyType' }); @@ -457,7 +457,7 @@ export = { class ClusterStack extends cdk.Stack { public eksCluster: eks.Cluster; - constructor(scope: constructs.Construct, id: string, props?: cdk.StackProps) { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); this.eksCluster = new eks.Cluster(this, 'Cluster', { version: CLUSTER_VERSION, @@ -470,7 +470,7 @@ export = { public group: asg.AutoScalingGroup; - constructor(scope: constructs.Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { + constructor(scope: Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { super(scope, id, props); // the role is create in this stack implicitly by the ASG @@ -504,7 +504,7 @@ export = { class ClusterStack extends cdk.Stack { public eksCluster: eks.Cluster; - constructor(scope: constructs.Construct, id: string, props?: cdk.StackProps) { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); this.eksCluster = new eks.Cluster(this, 'EKSCluster', { version: CLUSTER_VERSION, @@ -514,7 +514,7 @@ export = { } class AppStack extends cdk.Stack { - constructor(scope: constructs.Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { + constructor(scope: Construct, id: string, props: cdk.StackProps & { cluster: eks.Cluster }) { super(scope, id, props); new eks.ServiceAccount(this, 'testAccount', { cluster: props.cluster, name: 'test-account', namespace: 'test' }); diff --git a/packages/@aws-cdk/aws-eks/test/test.k8s-patch.ts b/packages/@aws-cdk/aws-eks/test/test.k8s-patch.ts index 24dabbbf0c1a2..f8fe93ab5c3ec 100644 --- a/packages/@aws-cdk/aws-eks/test/test.k8s-patch.ts +++ b/packages/@aws-cdk/aws-eks/test/test.k8s-patch.ts @@ -44,7 +44,7 @@ export = { })); // also make sure a dependency on the barrier is added to the patch construct. - test.deepEqual(patch.node.dependencies.map(d => Names.nodeUniqueId(d.target.node)), ['MyClusterKubectlReadyBarrier7547948A']); + test.deepEqual(patch.node.dependencies.map(d => Names.nodeUniqueId(d.node)), ['MyClusterKubectlReadyBarrier7547948A']); test.done(); }, diff --git a/packages/@aws-cdk/aws-elasticache/package.json b/packages/@aws-cdk/aws-elasticache/package.json index 8d9df68413a2f..8f89a5c5b7238 100644 --- a/packages/@aws-cdk/aws-elasticache/package.json +++ b/packages/@aws-cdk/aws-elasticache/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-elasticbeanstalk/package.json b/packages/@aws-cdk/aws-elasticbeanstalk/package.json index c0cc0417da8d3..da4ed4bc4f320 100644 --- a/packages/@aws-cdk/aws-elasticbeanstalk/package.json +++ b/packages/@aws-cdk/aws-elasticbeanstalk/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/package.json b/packages/@aws-cdk/aws-elasticloadbalancing/package.json index a8f04a3a667e9..42612b65ae9ea 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancing/package.json @@ -83,13 +83,13 @@ "dependencies": { "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index a1a3ed968ebbc..f0df897f6db29 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -78,7 +78,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -87,7 +87,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index df17bec052ca2..2c5de8a263103 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -78,7 +78,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -87,7 +87,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts index 09ae095c46a92..a8131500b0664 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-action.ts @@ -1,4 +1,5 @@ -import { Construct, Duration, IConstruct, SecretValue, Tokenization } from '@aws-cdk/core'; +import { Duration, SecretValue, Tokenization } from '@aws-cdk/core'; +import { Construct, IConstruct } from 'constructs'; import { CfnListener } from '../elasticloadbalancingv2.generated'; import { IListenerAction } from '../shared/listener-action'; import { IApplicationListener } from './application-listener'; diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-certificate.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-certificate.ts index 4dab6b23ba2b0..2b10788cc9d21 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-certificate.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-certificate.ts @@ -1,4 +1,3 @@ -import * as cdk from '@aws-cdk/core'; import { Construct } from 'constructs'; import { CfnListenerCertificate } from '../elasticloadbalancingv2.generated'; import { IListenerCertificate } from '../shared/listener-certificate'; @@ -36,7 +35,7 @@ export interface ApplicationListenerCertificateProps { /** * Add certificates to a listener */ -export class ApplicationListenerCertificate extends cdk.Construct { +export class ApplicationListenerCertificate extends Construct { constructor(scope: Construct, id: string, props: ApplicationListenerCertificateProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts index edc0e04551f46..fdcf33345f6b0 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener-rule.ts @@ -194,7 +194,7 @@ export interface RedirectResponse { /** * Define a new listener rule */ -export class ApplicationListenerRule extends cdk.Construct { +export class ApplicationListenerRule extends Construct { /** * The ARN of this rule */ @@ -260,6 +260,8 @@ export class ApplicationListenerRule extends cdk.Construct { } this.listenerRuleArn = resource.ref; + + this.node.addValidation({ validate: () => this.validateListenerRule() }); } /** @@ -350,7 +352,7 @@ export class ApplicationListenerRule extends cdk.Construct { /** * Validate the rule */ - protected validate() { + private validateListenerRule() { if (this.action === undefined) { return ['Listener rule needs at least one action']; } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts index 230c02f7ab84f..3e477fb6981a9 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-listener.ts @@ -460,8 +460,8 @@ export class ApplicationListener extends BaseListener implements IApplicationLis /** * Validate this listener. */ - protected validate(): string[] { - const errors = super.validate(); + protected validateListener(): string[] { + const errors = super.validateListener(); if (this.protocol === ApplicationProtocol.HTTPS && this.certificateArns.length === 0) { errors.push('HTTPS Listener needs at least one certificate (call addCertificates)'); } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-target-group.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-target-group.ts index a457878c63bb9..0dc99f90c3cd4 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-target-group.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/alb/application-target-group.ts @@ -1,6 +1,6 @@ import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; import * as ec2 from '@aws-cdk/aws-ec2'; -import { Annotations, Construct as CoreConstruct, Duration } from '@aws-cdk/core'; +import { Annotations, Duration } from '@aws-cdk/core'; import { IConstruct, Construct } from 'constructs'; import { ApplicationELBMetrics } from '../elasticloadbalancingv2-canned-metrics.generated'; import { @@ -161,7 +161,7 @@ export class ApplicationTargetGroup extends TargetGroupBase implements IApplicat listener.registerConnectable(member.connectable, member.portRange); } this.listeners.push(listener); - this.loadBalancerAttachedDependencies.add((associatingConstruct || listener) as CoreConstruct); + this.loadBalancerAttachedDependencies.add(associatingConstruct ?? listener); } /** @@ -306,8 +306,8 @@ export class ApplicationTargetGroup extends TargetGroupBase implements IApplicat }); } - protected validate(): string[] { - const ret = super.validate(); + protected validateTargetGroup(): string[] { + const ret = super.validateTargetGroup(); if (this.targetType !== undefined && this.targetType !== TargetType.LAMBDA && (this.protocol === undefined || this.port === undefined)) { diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-listener-action.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-listener-action.ts index 81b45a5e3b146..2afb597b069d6 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-listener-action.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-listener-action.ts @@ -1,4 +1,5 @@ -import { Construct, Duration } from '@aws-cdk/core'; +import { Duration } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { CfnListener } from '../elasticloadbalancingv2.generated'; import { IListenerAction } from '../shared/listener-action'; import { INetworkListener } from './network-listener'; diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-target-group.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-target-group.ts index 3c2e3cb574609..654d68abc3637 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-target-group.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/nlb/network-target-group.ts @@ -139,8 +139,8 @@ export class NetworkTargetGroup extends TargetGroupBase implements INetworkTarge return loadBalancerNameFromListenerArn(this.listeners[0].listenerArn); } - protected validate(): string[] { - const ret = super.validate(); + protected validateTargetGroup(): string[] { + const ret = super.validateTargetGroup(); const healthCheck: HealthCheck = this.healthCheck || {}; diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts index 17170f4402b1a..10b8ff97e818e 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-listener.ts @@ -112,12 +112,13 @@ export abstract class BaseListener extends Resource { }); this.listenerArn = resource.ref; + this.node.addValidation({ validate: () => this.validateListener() }); } /** * Validate this listener */ - protected validate(): string[] { + protected validateListener(): string[] { if (!this.defaultAction) { return ['Listener needs at least one default action or target group (call addTargetGroups or addAction)']; } diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts index f9155bb1430eb..fbacc028708b8 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts @@ -1,6 +1,6 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as cdk from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Construct, IConstruct } from 'constructs'; import { CfnTargetGroup } from '../elasticloadbalancingv2.generated'; import { Protocol, TargetType } from './enums'; import { Attributes, renderAttributes } from './util'; @@ -145,7 +145,7 @@ export interface HealthCheck { /** * Define the target of a load balancer */ -export abstract class TargetGroupBase extends cdk.Construct implements ITargetGroup { +export abstract class TargetGroupBase extends Construct implements ITargetGroup { /** * The ARN of the target group */ @@ -269,6 +269,8 @@ export abstract class TargetGroupBase extends cdk.Construct implements ITargetGr this.loadBalancerArns = this.resource.attrLoadBalancerArns.toString(); this.targetGroupName = this.resource.attrTargetGroupName; this.defaultPort = additionalProps.port; + + this.node.addValidation({ validate: () => this.validateTargetGroup() }); } /** @@ -312,8 +314,8 @@ export abstract class TargetGroupBase extends cdk.Construct implements ITargetGr } } - protected validate(): string[] { - const ret = super.validate(); + protected validateTargetGroup(): string[] { + const ret = new Array(); if (this.targetType === undefined && this.targetsJson.length === 0) { cdk.Annotations.of(this).addWarning("When creating an empty TargetGroup, you should specify a 'targetType' (this warning may become an error in the future)."); @@ -360,7 +362,7 @@ export interface TargetGroupImportProps extends TargetGroupAttributes { /** * A target group */ -export interface ITargetGroup extends cdk.IConstruct { +export interface ITargetGroup extends IConstruct { /** * ARN of the target group */ diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts index 52643b49a97cd..76979b2f62548 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts @@ -5,7 +5,7 @@ import { ITargetGroup, TargetGroupImportProps } from './base-target-group'; /** * Base internal class for existing target groups */ -export abstract class ImportedTargetGroupBase extends cdk.Construct implements ITargetGroup { +export abstract class ImportedTargetGroupBase extends Construct implements ITargetGroup { /** * ARN of the target group */ diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json index e067e2d4823d3..25f2a85c1d082 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json @@ -91,7 +91,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -104,7 +104,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "@aws-cdk/region-info": "0.0.0" }, "engines": { diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/listener.test.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/listener.test.ts index b9de0961423ec..5311c08a4c668 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/listener.test.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/alb/listener.test.ts @@ -111,14 +111,14 @@ describe('tests', () => { const lb = new elbv2.ApplicationLoadBalancer(stack, 'LB', { vpc }); // WHEN - lb.addListener('Listener', { + const listener = lb.addListener('Listener', { port: 443, defaultTargetGroups: [new elbv2.ApplicationTargetGroup(stack, 'Group', { vpc, port: 80 })], }); // THEN - const errors = cdk.ConstructNode.validate(stack.node); - expect(errors.map(e => e.message)).toEqual(['HTTPS Listener needs at least one certificate (call addCertificates)']); + const errors = listener.node.validate(); + expect(errors).toEqual(['HTTPS Listener needs at least one certificate (call addCertificates)']); }); test('HTTPS listener can add certificate after construction', () => { @@ -399,7 +399,7 @@ describe('tests', () => { }); // THEN - const validationErrors: string[] = (group as any).validate(); + const validationErrors: string[] = group.node.validate(); expect(validationErrors).toEqual(["Health check protocol 'TCP' is not supported. Must be one of [HTTP, HTTPS]"]); }); diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/helpers.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/helpers.ts index 8fa9d3361db33..1df29adf5d6ba 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/helpers.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/helpers.ts @@ -1,14 +1,13 @@ import * as ec2 from '@aws-cdk/aws-ec2'; -import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import * as elbv2 from '../lib'; -export class FakeSelfRegisteringTarget extends cdk.Construct implements elbv2.IApplicationLoadBalancerTarget, elbv2.INetworkLoadBalancerTarget, +export class FakeSelfRegisteringTarget extends Construct implements elbv2.IApplicationLoadBalancerTarget, elbv2.INetworkLoadBalancerTarget, ec2.IConnectable { public readonly securityGroup: ec2.SecurityGroup; public readonly connections: ec2.Connections; - constructor(scope: constructs.Construct, id: string, vpc: ec2.Vpc) { + constructor(scope: Construct, id: string, vpc: ec2.Vpc) { super(scope, id); this.securityGroup = new ec2.SecurityGroup(this, 'SG', { vpc }); this.connections = new ec2.Connections({ diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/integ.alb.dualstack.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/integ.alb.dualstack.ts index c0db7655b9d86..fa45ed6a3ca25 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/integ.alb.dualstack.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/integ.alb.dualstack.ts @@ -1,6 +1,7 @@ #!/usr/bin/env node import * as ec2 from '@aws-cdk/aws-ec2'; import * as cdk from '@aws-cdk/core'; +import { IConstruct } from 'constructs'; import * as elbv2 from '../lib'; /* IPv6 workaround found here: https://github.com/aws/aws-cdk/issues/894 */ @@ -37,7 +38,7 @@ const ipv6Block = new ec2.CfnVPCCidrBlock( // Get the vpc's internet gateway so we can create default routes for the // public subnets. -const internetGateway = valueOrDie( +const internetGateway = valueOrDie( vpc.node.children.find(c => c instanceof ec2.CfnInternetGateway), new Error('Couldnt find an internet gateway'), ); @@ -53,7 +54,7 @@ vpc.publicSubnets.forEach((subnet, idx) => { // Find a CfnSubnet (raw cloudformation resources) child to the public // subnet nodes. - const cfnSubnet = valueOrDie( + const cfnSubnet = valueOrDie( subnet.node.children.find(c => c instanceof ec2.CfnSubnet), new Error('Couldnt find a CfnSubnet'), ); diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/nlb/listener.test.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/nlb/listener.test.ts index d40197d00a280..378d22dc8ade5 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/test/nlb/listener.test.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/test/nlb/listener.test.ts @@ -267,7 +267,7 @@ describe('tests', () => { }, }); - const validationErrors: string[] = (targetGroup as any).validate(); + const validationErrors: string[] = targetGroup.node.validate(); const intervalError = validationErrors.find((err) => /Health check interval '60' not supported. Must be one of the following values/.test(err)); expect(intervalError).toBeDefined(); }); @@ -290,7 +290,7 @@ describe('tests', () => { }); // THEN - const validationErrors: string[] = (targetGroup as any).validate(); + const validationErrors: string[] = targetGroup.node.validate(); expect(validationErrors).toEqual(["Health check protocol 'UDP' is not supported. Must be one of [HTTP, HTTPS, TCP]"]); }); @@ -313,7 +313,7 @@ describe('tests', () => { }); // THEN - const validationErrors: string[] = (targetGroup as any).validate(); + const validationErrors: string[] = targetGroup.node.validate(); expect(validationErrors).toEqual([ "'TCP' health checks do not support the path property. Must be one of [HTTP, HTTPS]", ]); @@ -338,7 +338,7 @@ describe('tests', () => { }); // THEN - const validationErrors: string[] = (targetGroup as any).validate(); + const validationErrors: string[] = targetGroup.node.validate(); expect(validationErrors).toEqual([ 'Custom health check timeouts are not supported for Network Load Balancer health checks. Expected 6 seconds for HTTP, got 10', ]); diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/elasticsearch-access-policy.ts b/packages/@aws-cdk/aws-elasticsearch/lib/elasticsearch-access-policy.ts index 78e0e4e8c5003..88a45a1dd191d 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/elasticsearch-access-policy.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/elasticsearch-access-policy.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; -import * as cdk from '@aws-cdk/core'; import * as cr from '@aws-cdk/custom-resources'; +import { Construct } from 'constructs'; /** * Construction properties for ElasticsearchAccessPolicy @@ -26,7 +26,7 @@ export interface ElasticsearchAccessPolicyProps { * Creates LogGroup resource policies. */ export class ElasticsearchAccessPolicy extends cr.AwsCustomResource { - constructor(scope: cdk.Construct, id: string, props: ElasticsearchAccessPolicyProps) { + constructor(scope: Construct, id: string, props: ElasticsearchAccessPolicyProps) { const policyDocument = new iam.PolicyDocument({ statements: props.accessPolicies, }); diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/log-group-resource-policy.ts b/packages/@aws-cdk/aws-elasticsearch/lib/log-group-resource-policy.ts index 949f03aa61baa..0a88658e1cf42 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/log-group-resource-policy.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/log-group-resource-policy.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; -import * as cdk from '@aws-cdk/core'; import * as cr from '@aws-cdk/custom-resources'; +import { Construct } from 'constructs'; /** * Construction properties for LogGroupResourcePolicy @@ -20,7 +20,7 @@ export interface LogGroupResourcePolicyProps { * Creates LogGroup resource policies. */ export class LogGroupResourcePolicy extends cr.AwsCustomResource { - constructor(scope: cdk.Construct, id: string, props: LogGroupResourcePolicyProps) { + constructor(scope: Construct, id: string, props: LogGroupResourcePolicyProps) { const policyDocument = new iam.PolicyDocument({ statements: props.policyStatements, }); diff --git a/packages/@aws-cdk/aws-elasticsearch/package.json b/packages/@aws-cdk/aws-elasticsearch/package.json index ccca81af40d6d..07c8b997db14c 100644 --- a/packages/@aws-cdk/aws-elasticsearch/package.json +++ b/packages/@aws-cdk/aws-elasticsearch/package.json @@ -89,7 +89,7 @@ "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -101,7 +101,7 @@ "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-emr/package.json b/packages/@aws-cdk/aws-emr/package.json index 0ae3d4a536f72..184ed9060344a 100644 --- a/packages/@aws-cdk/aws-emr/package.json +++ b/packages/@aws-cdk/aws-emr/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-events-targets/lib/log-group-resource-policy.ts b/packages/@aws-cdk/aws-events-targets/lib/log-group-resource-policy.ts index d0bbaca87f689..6d43362f8908f 100644 --- a/packages/@aws-cdk/aws-events-targets/lib/log-group-resource-policy.ts +++ b/packages/@aws-cdk/aws-events-targets/lib/log-group-resource-policy.ts @@ -1,6 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; import * as cr from '@aws-cdk/custom-resources'; +import { Construct } from 'constructs'; /** * Properties to configure a log group resource policy @@ -20,7 +21,7 @@ export interface LogGroupResourcePolicyProps { * Creates LogGroup resource policies. */ export class LogGroupResourcePolicy extends cr.AwsCustomResource { - constructor(scope: cdk.Construct, id: string, props: LogGroupResourcePolicyProps) { + constructor(scope: Construct, id: string, props: LogGroupResourcePolicyProps) { const policyDocument = new iam.PolicyDocument({ statements: props.policyStatements, }); diff --git a/packages/@aws-cdk/aws-events-targets/lib/log-group.ts b/packages/@aws-cdk/aws-events-targets/lib/log-group.ts index ac6e3f7917da4..e11d6db0caece 100644 --- a/packages/@aws-cdk/aws-events-targets/lib/log-group.ts +++ b/packages/@aws-cdk/aws-events-targets/lib/log-group.ts @@ -29,7 +29,7 @@ export class CloudWatchLogGroup implements events.IRuleTarget { */ public bind(_rule: events.IRule, _id?: string): events.RuleTargetConfig { // Use a custom resource to set the log group resource policy since it is not supported by CDK and cfn. - const resourcePolicyId = `EventsLogGroupPolicy${_rule.node.uniqueId}`; + const resourcePolicyId = `EventsLogGroupPolicy${cdk.Names.nodeUniqueId(_rule.node)}`; const logGroupStack = cdk.Stack.of(this.logGroup); diff --git a/packages/@aws-cdk/aws-events-targets/lib/util.ts b/packages/@aws-cdk/aws-events-targets/lib/util.ts index fe41154b6037c..2857619e1b74d 100644 --- a/packages/@aws-cdk/aws-events-targets/lib/util.ts +++ b/packages/@aws-cdk/aws-events-targets/lib/util.ts @@ -1,7 +1,8 @@ import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct, ConstructNode, IConstruct, Names } from '@aws-cdk/core'; +import { Names } from '@aws-cdk/core'; +import { Construct, IConstruct } from 'constructs'; /** * Obtain the Role for the EventBridge event @@ -14,7 +15,7 @@ export function singletonEventRole(scope: IConstruct, policyStatements: iam.Poli const existing = scope.node.tryFindChild(id) as iam.IRole; if (existing) { return existing; } - const role = new iam.Role(scope as Construct, id, { + const role = new iam.Role(scope, id, { assumedBy: new iam.ServicePrincipal('events.amazonaws.com'), }); @@ -28,7 +29,7 @@ export function singletonEventRole(scope: IConstruct, policyStatements: iam.Poli */ export function addLambdaPermission(rule: events.IRule, handler: lambda.IFunction): void { let scope: Construct | undefined; - let node: ConstructNode = handler.permissionsNode; + let node = handler.permissionsNode; if (rule instanceof Construct) { // Place the Permission resource in the same stack as Rule rather than the Function // This is to reduce circular dependency when the lambda handler and the rule are across stacks. diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index 3e11ce4191af5..a6ef20039d9db 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -102,7 +102,7 @@ "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -123,7 +123,7 @@ "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-events/lib/rule.ts b/packages/@aws-cdk/aws-events/lib/rule.ts index 0079954e73558..73aa2712ff1b2 100644 --- a/packages/@aws-cdk/aws-events/lib/rule.ts +++ b/packages/@aws-cdk/aws-events/lib/rule.ts @@ -149,6 +149,8 @@ export class Rule extends Resource implements IRule { for (const target of props.targets || []) { this.addTarget(target); } + + this.node.addValidation({ validate: () => this.validateRule() }); } /** @@ -263,7 +265,7 @@ export class Rule extends Resource implements IRule { return self._renderEventPattern(); } - // we need to override validate(), as it uses the + // we need to override validateRule(), as it uses the // value of the eventPattern field, // which might be empty in the case of the copied rule // (as the patterns in the original might be added through addEventPattern(), @@ -271,7 +273,7 @@ export class Rule extends Resource implements IRule { // Anyway, even if the original rule is invalid, // we would get duplicate errors if we didn't override this, // which is probably a bad idea in and of itself - protected validate(): string[] { + protected validateRule(): string[] { return []; } } @@ -370,7 +372,7 @@ export class Rule extends Resource implements IRule { return out; } - protected validate() { + protected validateRule() { if (Object.keys(this.eventPattern).length === 0 && !this.scheduleExpression) { return ['Either \'eventPattern\' or \'schedule\' must be defined']; } diff --git a/packages/@aws-cdk/aws-events/lib/target.ts b/packages/@aws-cdk/aws-events/lib/target.ts index 319cf3d4f14da..d45df08456332 100644 --- a/packages/@aws-cdk/aws-events/lib/target.ts +++ b/packages/@aws-cdk/aws-events/lib/target.ts @@ -1,5 +1,5 @@ import * as iam from '@aws-cdk/aws-iam'; -import { IConstruct } from '@aws-cdk/core'; +import { IConstruct } from 'constructs'; import { CfnRule } from './events.generated'; import { RuleTargetInput } from './input'; import { IRule } from './rule-ref'; diff --git a/packages/@aws-cdk/aws-events/package.json b/packages/@aws-cdk/aws-events/package.json index f493d15a6783c..4f4831fcd03c3 100644 --- a/packages/@aws-cdk/aws-events/package.json +++ b/packages/@aws-cdk/aws-events/package.json @@ -85,13 +85,13 @@ "dependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-events/test/test.rule.ts b/packages/@aws-cdk/aws-events/test/test.rule.ts index 80cf91948f5fa..30b3de4ed5189 100644 --- a/packages/@aws-cdk/aws-events/test/test.rule.ts +++ b/packages/@aws-cdk/aws-events/test/test.rule.ts @@ -1,6 +1,7 @@ import { expect, haveResource, haveResourceLike } from '@aws-cdk/assert'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; +import { Construct, IConstruct } from 'constructs'; import { Test } from 'nodeunit'; import { EventBus, EventField, IRule, IRuleTarget, RuleTargetConfig, RuleTargetInput, Schedule } from '../lib'; import { Rule } from '../lib/rule'; @@ -482,7 +483,7 @@ export = { const rule = new Rule(sourceStack, 'Rule'); const targetStack = new cdk.Stack(app, 'TargetStack', { env: { region: 'us-west-2' } }); - const resource = new cdk.Construct(targetStack, 'Resource'); + const resource = new Construct(targetStack, 'Resource'); test.throws(() => { rule.addTarget(new SomeTarget('T', resource)); @@ -566,7 +567,7 @@ export = { const targetAccount = '234567890123'; const targetStack = new cdk.Stack(app, 'TargetStack', { env: { account: targetAccount } }); - const resource = new cdk.Construct(targetStack, 'Resource'); + const resource = new Construct(targetStack, 'Resource'); test.throws(() => { rule.addTarget(new SomeTarget('T', resource)); @@ -583,7 +584,7 @@ export = { const rule = new Rule(sourceStack, 'Rule'); const targetStack = new cdk.Stack(app, 'TargetStack'); - const resource = new cdk.Construct(targetStack, 'Resource'); + const resource = new Construct(targetStack, 'Resource'); test.throws(() => { rule.addTarget(new SomeTarget('T', resource)); @@ -601,7 +602,7 @@ export = { const targetAccount = '234567890123'; const targetStack = new cdk.Stack(app, 'TargetStack', { env: { account: targetAccount } }); - const resource = new cdk.Construct(targetStack, 'Resource'); + const resource = new Construct(targetStack, 'Resource'); test.throws(() => { rule.addTarget(new SomeTarget('T', resource)); @@ -619,7 +620,7 @@ export = { const targetApp = new cdk.App(); const targetAccount = '234567890123'; const targetStack = new cdk.Stack(targetApp, 'TargetStack', { env: { account: targetAccount, region: 'us-west-2' } }); - const resource = new cdk.Construct(targetStack, 'Resource'); + const resource = new Construct(targetStack, 'Resource'); test.throws(() => { rule.addTarget(new SomeTarget('T', resource)); @@ -651,8 +652,8 @@ export = { region: 'us-west-2', }, }); - const resource1 = new cdk.Construct(targetStack, 'Resource1'); - const resource2 = new cdk.Construct(targetStack, 'Resource2'); + const resource1 = new Construct(targetStack, 'Resource1'); + const resource2 = new Construct(targetStack, 'Resource2'); rule.addTarget(new SomeTarget('T1', resource1)); rule.addTarget(new SomeTarget('T2', resource2)); @@ -739,7 +740,7 @@ export = { region: 'us-west-2', }, }); - const resource = new cdk.Construct(targetStack, 'Resource1'); + const resource = new Construct(targetStack, 'Resource1'); rule.addTarget(new SomeTarget('T', resource)); @@ -769,7 +770,7 @@ export = { class SomeTarget implements IRuleTarget { // eslint-disable-next-line cdk/no-core-construct - public constructor(private readonly id?: string, private readonly resource?: cdk.IConstruct) { + public constructor(private readonly id?: string, private readonly resource?: IConstruct) { } public bind(): RuleTargetConfig { diff --git a/packages/@aws-cdk/aws-eventschemas/package.json b/packages/@aws-cdk/aws-eventschemas/package.json index c2b4b3f45087d..c6430908d2217 100644 --- a/packages/@aws-cdk/aws-eventschemas/package.json +++ b/packages/@aws-cdk/aws-eventschemas/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-fms/package.json b/packages/@aws-cdk/aws-fms/package.json index 98316280108f3..168a95167750b 100644 --- a/packages/@aws-cdk/aws-fms/package.json +++ b/packages/@aws-cdk/aws-fms/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-fsx/package.json b/packages/@aws-cdk/aws-fsx/package.json index 0c9bcfed2e24c..39cac9ed7ffc0 100644 --- a/packages/@aws-cdk/aws-fsx/package.json +++ b/packages/@aws-cdk/aws-fsx/package.json @@ -87,14 +87,14 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-gamelift/package.json b/packages/@aws-cdk/aws-gamelift/package.json index e004973040b5b..fda4f58696f60 100644 --- a/packages/@aws-cdk/aws-gamelift/package.json +++ b/packages/@aws-cdk/aws-gamelift/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-globalaccelerator/lib/accelerator-security-group.ts b/packages/@aws-cdk/aws-globalaccelerator/lib/accelerator-security-group.ts index 793ae6b3aceca..7c72ebed22454 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/lib/accelerator-security-group.ts +++ b/packages/@aws-cdk/aws-globalaccelerator/lib/accelerator-security-group.ts @@ -1,6 +1,6 @@ import { ISecurityGroup, SecurityGroup, IVpc } from '@aws-cdk/aws-ec2'; -import { Construct } from '@aws-cdk/core'; import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from '@aws-cdk/custom-resources'; +import { Construct } from 'constructs'; import { EndpointGroup } from '../lib'; /** diff --git a/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts b/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts index a2532aecdffa0..e496994c6eb59 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts +++ b/packages/@aws-cdk/aws-globalaccelerator/lib/endpoint-group.ts @@ -113,7 +113,7 @@ export interface EndpointGroupProps { /** * The class for endpoint configuration */ -export class EndpointConfiguration extends cdk.Construct { +export class EndpointConfiguration extends Construct { /** * The property containing all the configuration to be rendered */ diff --git a/packages/@aws-cdk/aws-globalaccelerator/package.json b/packages/@aws-cdk/aws-globalaccelerator/package.json index 562d16d84aafc..331ba5ddea4fc 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator/package.json @@ -87,12 +87,12 @@ "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "@aws-cdk/custom-resources": "0.0.0" }, "engines": { diff --git a/packages/@aws-cdk/aws-glue/package.json b/packages/@aws-cdk/aws-glue/package.json index 8381a18061541..1d50c80e32441 100644 --- a/packages/@aws-cdk/aws-glue/package.json +++ b/packages/@aws-cdk/aws-glue/package.json @@ -87,7 +87,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -95,7 +95,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-greengrass/package.json b/packages/@aws-cdk/aws-greengrass/package.json index 1669defd118ce..93dfabe51ee99 100644 --- a/packages/@aws-cdk/aws-greengrass/package.json +++ b/packages/@aws-cdk/aws-greengrass/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-greengrassv2/package.json b/packages/@aws-cdk/aws-greengrassv2/package.json index 342dfee0b93f8..635baceaae643 100644 --- a/packages/@aws-cdk/aws-greengrassv2/package.json +++ b/packages/@aws-cdk/aws-greengrassv2/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-guardduty/package.json b/packages/@aws-cdk/aws-guardduty/package.json index 3d2f45a0cfe66..26a7e84f19f97 100644 --- a/packages/@aws-cdk/aws-guardduty/package.json +++ b/packages/@aws-cdk/aws-guardduty/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iam/lib/grant.ts b/packages/@aws-cdk/aws-iam/lib/grant.ts index 6529db181c712..783f87f776441 100644 --- a/packages/@aws-cdk/aws-iam/lib/grant.ts +++ b/packages/@aws-cdk/aws-iam/lib/grant.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { IConstruct } from 'constructs'; import { PolicyStatement } from './policy-statement'; import { IGrantable, IPrincipal } from './principals'; @@ -61,7 +62,7 @@ export interface GrantOnPrincipalOptions extends CommonGrantOptions { * * @default - the construct in which this construct is defined */ - readonly scope?: cdk.IConstruct; + readonly scope?: IConstruct; } /** @@ -280,7 +281,7 @@ export class Grant implements cdk.IDependable { * * The same as construct.node.addDependency(grant), but slightly nicer to read. */ - public applyBefore(...constructs: cdk.IConstruct[]) { + public applyBefore(...constructs: IConstruct[]) { for (const construct of constructs) { construct.node.addDependency(this); } @@ -342,7 +343,7 @@ export interface AddToResourcePolicyResult { export class CompositeDependable implements cdk.IDependable { constructor(...dependables: cdk.IDependable[]) { cdk.DependableTrait.implement(this, { - get dependencyRoots(): cdk.IConstruct[] { + get dependencyRoots(): IConstruct[] { return Array.prototype.concat.apply([], dependables.map(d => cdk.DependableTrait.get(d).dependencyRoots)); }, }); diff --git a/packages/@aws-cdk/aws-iam/lib/managed-policy.ts b/packages/@aws-cdk/aws-iam/lib/managed-policy.ts index cc8bddc0e8a17..9734da7353eb4 100644 --- a/packages/@aws-cdk/aws-iam/lib/managed-policy.ts +++ b/packages/@aws-cdk/aws-iam/lib/managed-policy.ts @@ -254,6 +254,8 @@ export class ManagedPolicy extends Resource implements IManagedPolicy { resource: 'policy', resourceName: this.physicalName, }); + + this.node.addValidation({ validate: () => this.validateManagedPolicy() }); } /** @@ -287,7 +289,7 @@ export class ManagedPolicy extends Resource implements IManagedPolicy { this.groups.push(group); } - protected validate(): string[] { + private validateManagedPolicy(): string[] { const result = new Array(); // validate that the policy document is not empty diff --git a/packages/@aws-cdk/aws-iam/lib/policy.ts b/packages/@aws-cdk/aws-iam/lib/policy.ts index 795049a1cc163..4e7716031cbb4 100644 --- a/packages/@aws-cdk/aws-iam/lib/policy.ts +++ b/packages/@aws-cdk/aws-iam/lib/policy.ts @@ -177,6 +177,8 @@ export class Policy extends Resource implements IPolicy { if (props.statements) { props.statements.forEach(p => this.addStatements(p)); } + + this.node.addValidation({ validate: () => this.validatePolicy() }); } /** @@ -223,7 +225,7 @@ export class Policy extends Resource implements IPolicy { return this._policyName; } - protected validate(): string[] { + private validatePolicy(): string[] { const result = new Array(); // validate that the policy document is not empty diff --git a/packages/@aws-cdk/aws-iam/lib/role.ts b/packages/@aws-cdk/aws-iam/lib/role.ts index 74e251bd7bc07..77fdad2d35c8d 100644 --- a/packages/@aws-cdk/aws-iam/lib/role.ts +++ b/packages/@aws-cdk/aws-iam/lib/role.ts @@ -356,6 +356,8 @@ export class Role extends Resource implements IRole { } return result; } + + this.node.addValidation({ validate: () => this.validateRole() }); } /** @@ -430,9 +432,9 @@ export class Role extends Resource implements IRole { return this.immutableRole; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.assumeRolePolicy?.validateForResourcePolicy() || []); + private validateRole(): string[] { + const errors = new Array(); + errors.push(...this.assumeRolePolicy?.validateForResourcePolicy() ?? []); for (const policy of Object.values(this.inlinePolicies)) { errors.push(...policy.validateForIdentityPolicy()); } diff --git a/packages/@aws-cdk/aws-iam/package.json b/packages/@aws-cdk/aws-iam/package.json index 97e9267582284..1697e6f640398 100644 --- a/packages/@aws-cdk/aws-iam/package.json +++ b/packages/@aws-cdk/aws-iam/package.json @@ -92,12 +92,12 @@ "dependencies": { "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "engines": { diff --git a/packages/@aws-cdk/aws-iam/test/example.attaching.lit.ts b/packages/@aws-cdk/aws-iam/test/example.attaching.lit.ts index 5b04bac60cd3f..19940453d684c 100644 --- a/packages/@aws-cdk/aws-iam/test/example.attaching.lit.ts +++ b/packages/@aws-cdk/aws-iam/test/example.attaching.lit.ts @@ -1,13 +1,13 @@ -import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { SecretValue } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Group, Policy, User } from '../lib'; -export class ExampleConstruct extends cdk.Construct { - constructor(scope: constructs.Construct, id: string) { +export class ExampleConstruct extends Construct { + constructor(scope: Construct, id: string) { super(scope, id); /// !show - const user = new User(this, 'MyUser', { password: cdk.SecretValue.plainText('1234') }); + const user = new User(this, 'MyUser', { password: SecretValue.plainText('1234') }); const group = new Group(this, 'MyGroup'); const policy = new Policy(this, 'MyPolicy'); diff --git a/packages/@aws-cdk/aws-iam/test/example.external-id.lit.ts b/packages/@aws-cdk/aws-iam/test/example.external-id.lit.ts index ddbcb4cd5ea07..35db3c5d49da8 100644 --- a/packages/@aws-cdk/aws-iam/test/example.external-id.lit.ts +++ b/packages/@aws-cdk/aws-iam/test/example.external-id.lit.ts @@ -1,9 +1,8 @@ -import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import * as iam from '../lib'; -export class ExampleConstruct extends cdk.Construct { - constructor(scope: constructs.Construct, id: string) { +export class ExampleConstruct extends Construct { + constructor(scope: Construct, id: string) { super(scope, id); /// !show diff --git a/packages/@aws-cdk/aws-iam/test/example.managedpolicy.lit.ts b/packages/@aws-cdk/aws-iam/test/example.managedpolicy.lit.ts index 8eb514aae90da..1229c040d5962 100644 --- a/packages/@aws-cdk/aws-iam/test/example.managedpolicy.lit.ts +++ b/packages/@aws-cdk/aws-iam/test/example.managedpolicy.lit.ts @@ -1,9 +1,8 @@ -import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import { Group, ManagedPolicy } from '../lib'; -export class ExampleConstruct extends cdk.Construct { - constructor(scope: constructs.Construct, id: string) { +export class ExampleConstruct extends Construct { + constructor(scope: Construct, id: string) { super(scope, id); /// !show diff --git a/packages/@aws-cdk/aws-iam/test/example.role.lit.ts b/packages/@aws-cdk/aws-iam/test/example.role.lit.ts index 92ff9d2a96127..74ed4c9e02057 100644 --- a/packages/@aws-cdk/aws-iam/test/example.role.lit.ts +++ b/packages/@aws-cdk/aws-iam/test/example.role.lit.ts @@ -1,9 +1,8 @@ -import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import { PolicyStatement, Role, ServicePrincipal } from '../lib'; -export class ExampleConstruct extends cdk.Construct { - constructor(scope: constructs.Construct, id: string) { +export class ExampleConstruct extends Construct { + constructor(scope: Construct, id: string) { super(scope, id); /// !show diff --git a/packages/@aws-cdk/aws-iam/test/immutable-role.test.ts b/packages/@aws-cdk/aws-iam/test/immutable-role.test.ts index 0a14afee947a5..f21054fd14e07 100644 --- a/packages/@aws-cdk/aws-iam/test/immutable-role.test.ts +++ b/packages/@aws-cdk/aws-iam/test/immutable-role.test.ts @@ -1,5 +1,6 @@ import '@aws-cdk/assert/jest'; -import { Construct, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import * as iam from '../lib'; /* eslint-disable quote-props */ diff --git a/packages/@aws-cdk/aws-imagebuilder/package.json b/packages/@aws-cdk/aws-imagebuilder/package.json index dea7e4e73cbb4..ff0ed2bbe9678 100644 --- a/packages/@aws-cdk/aws-imagebuilder/package.json +++ b/packages/@aws-cdk/aws-imagebuilder/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-inspector/package.json b/packages/@aws-cdk/aws-inspector/package.json index adf1ec838da29..72920e0d8da05 100644 --- a/packages/@aws-cdk/aws-inspector/package.json +++ b/packages/@aws-cdk/aws-inspector/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iot/package.json b/packages/@aws-cdk/aws-iot/package.json index c8acb5de759fe..1a93905cc3e9f 100644 --- a/packages/@aws-cdk/aws-iot/package.json +++ b/packages/@aws-cdk/aws-iot/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iot1click/package.json b/packages/@aws-cdk/aws-iot1click/package.json index 5c9b5c05eda76..6ca9e533cc1ea 100644 --- a/packages/@aws-cdk/aws-iot1click/package.json +++ b/packages/@aws-cdk/aws-iot1click/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iotanalytics/package.json b/packages/@aws-cdk/aws-iotanalytics/package.json index 13746b1253fcc..4b630c634fb92 100644 --- a/packages/@aws-cdk/aws-iotanalytics/package.json +++ b/packages/@aws-cdk/aws-iotanalytics/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iotevents/package.json b/packages/@aws-cdk/aws-iotevents/package.json index 12079a7e6504e..270da397bb18a 100644 --- a/packages/@aws-cdk/aws-iotevents/package.json +++ b/packages/@aws-cdk/aws-iotevents/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iotsitewise/package.json b/packages/@aws-cdk/aws-iotsitewise/package.json index e14352d0305c2..9a2540e65c512 100644 --- a/packages/@aws-cdk/aws-iotsitewise/package.json +++ b/packages/@aws-cdk/aws-iotsitewise/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iotthingsgraph/package.json b/packages/@aws-cdk/aws-iotthingsgraph/package.json index 0e5271a5a8548..69732aa3d083e 100644 --- a/packages/@aws-cdk/aws-iotthingsgraph/package.json +++ b/packages/@aws-cdk/aws-iotthingsgraph/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-iotwireless/package.json b/packages/@aws-cdk/aws-iotwireless/package.json index 7593565a031f2..0c23c066e878b 100644 --- a/packages/@aws-cdk/aws-iotwireless/package.json +++ b/packages/@aws-cdk/aws-iotwireless/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ivs/package.json b/packages/@aws-cdk/aws-ivs/package.json index 2f6aaca4b4c14..1d7d8f8ee01ab 100644 --- a/packages/@aws-cdk/aws-ivs/package.json +++ b/packages/@aws-cdk/aws-ivs/package.json @@ -94,11 +94,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-kendra/package.json b/packages/@aws-cdk/aws-kendra/package.json index 009fcc3602a84..85d72f4303039 100644 --- a/packages/@aws-cdk/aws-kendra/package.json +++ b/packages/@aws-cdk/aws-kendra/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-kinesis/package.json b/packages/@aws-cdk/aws-kinesis/package.json index 47b46d34cf414..5e19c404ba772 100644 --- a/packages/@aws-cdk/aws-kinesis/package.json +++ b/packages/@aws-cdk/aws-kinesis/package.json @@ -85,7 +85,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -93,7 +93,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-kinesisanalytics/package.json b/packages/@aws-cdk/aws-kinesisanalytics/package.json index 3b4d106840d71..2daa7d2bd9f2b 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics/package.json @@ -84,12 +84,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-kinesisfirehose/package.json b/packages/@aws-cdk/aws-kinesisfirehose/package.json index e32debed846c3..471d30713a914 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-kms/lib/key.ts b/packages/@aws-cdk/aws-kms/lib/key.ts index d8de804e61a12..e322d96ec7a21 100644 --- a/packages/@aws-cdk/aws-kms/lib/key.ts +++ b/packages/@aws-cdk/aws-kms/lib/key.ts @@ -92,6 +92,12 @@ abstract class KeyBase extends Resource implements IKey { */ private readonly aliases: Alias[] = []; + constructor(scope: Construct, id: string) { + super(scope, id); + + this.node.addValidation({ validate: () => this.policy?.validateForResourcePolicy() ?? [] }); + } + /** * Defines a new alias for the key. */ @@ -123,12 +129,6 @@ abstract class KeyBase extends Resource implements IKey { return { statementAdded: true, policyDependable: this.policy }; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.policy?.validateForResourcePolicy() || []); - return errors; - } - /** * Grant the indicated permissions on this key to the given principal * diff --git a/packages/@aws-cdk/aws-kms/package.json b/packages/@aws-cdk/aws-kms/package.json index 07265b84c7b69..16df28eb2ec90 100644 --- a/packages/@aws-cdk/aws-kms/package.json +++ b/packages/@aws-cdk/aws-kms/package.json @@ -84,14 +84,14 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-kms/test/alias.test.ts b/packages/@aws-cdk/aws-kms/test/alias.test.ts index b39ea8bf5b232..e995461d83c5e 100644 --- a/packages/@aws-cdk/aws-kms/test/alias.test.ts +++ b/packages/@aws-cdk/aws-kms/test/alias.test.ts @@ -1,6 +1,7 @@ import '@aws-cdk/assert/jest'; import { ArnPrincipal, PolicyStatement } from '@aws-cdk/aws-iam'; -import { App, CfnOutput, Construct, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Alias } from '../lib/alias'; import { IKey, Key } from '../lib/key'; diff --git a/packages/@aws-cdk/aws-lakeformation/package.json b/packages/@aws-cdk/aws-lakeformation/package.json index d18b6c46404ea..0282c39139f47 100644 --- a/packages/@aws-cdk/aws-lakeformation/package.json +++ b/packages/@aws-cdk/aws-lakeformation/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-lambda-destinations/lib/event-bridge.ts b/packages/@aws-cdk/aws-lambda-destinations/lib/event-bridge.ts index 893a0096f92fd..a0d36c506902a 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/lib/event-bridge.ts +++ b/packages/@aws-cdk/aws-lambda-destinations/lib/event-bridge.ts @@ -1,6 +1,7 @@ import * as events from '@aws-cdk/aws-events'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an Event Bridge event bus as a Lambda destination. diff --git a/packages/@aws-cdk/aws-lambda-destinations/lib/lambda.ts b/packages/@aws-cdk/aws-lambda-destinations/lib/lambda.ts index eaa6d020de3e7..bd79b94a2b378 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/lib/lambda.ts +++ b/packages/@aws-cdk/aws-lambda-destinations/lib/lambda.ts @@ -1,7 +1,7 @@ import * as events from '@aws-cdk/aws-events'; import * as targets from '@aws-cdk/aws-events-targets'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { EventBridgeDestination } from './event-bridge'; /** diff --git a/packages/@aws-cdk/aws-lambda-destinations/lib/sns.ts b/packages/@aws-cdk/aws-lambda-destinations/lib/sns.ts index 02dac90734625..3029269b0e115 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/lib/sns.ts +++ b/packages/@aws-cdk/aws-lambda-destinations/lib/sns.ts @@ -1,6 +1,6 @@ import * as lambda from '@aws-cdk/aws-lambda'; import * as sns from '@aws-cdk/aws-sns'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use a SNS topic as a Lambda destination diff --git a/packages/@aws-cdk/aws-lambda-destinations/lib/sqs.ts b/packages/@aws-cdk/aws-lambda-destinations/lib/sqs.ts index 873e43f56f05d..fde015e2eacc2 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/lib/sqs.ts +++ b/packages/@aws-cdk/aws-lambda-destinations/lib/sqs.ts @@ -1,6 +1,6 @@ import * as lambda from '@aws-cdk/aws-lambda'; import * as sqs from '@aws-cdk/aws-sqs'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use a SQS queue as a Lambda destination diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index b48999e4d7b13..50e53b0389e75 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -79,7 +79,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -89,7 +89,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index 4a957baa662f6..332e03d15e83c 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -85,7 +85,7 @@ "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -101,7 +101,7 @@ "@aws-cdk/aws-sns-subscriptions": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts b/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts index 5e4e160eaa717..1047c73ee67ca 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda-nodejs/lib/function.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as lambda from '@aws-cdk/aws-lambda'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Bundling } from './bundling'; import { BundlingOptions } from './types'; import { callsites, findUp, LockFile, nodeMajorVersion } from './util'; @@ -76,7 +76,7 @@ export interface NodejsFunctionProps extends lambda.FunctionOptions { * A Node.js Lambda function bundled using esbuild */ export class NodejsFunction extends lambda.Function { - constructor(scope: cdk.Construct, id: string, props: NodejsFunctionProps = {}) { + constructor(scope: Construct, id: string, props: NodejsFunctionProps = {}) { if (props.runtime && props.runtime.family !== lambda.RuntimeFamily.NODEJS) { throw new Error('Only `NODEJS` runtimes are supported.'); } diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index 42679ea3a6e85..7e7a4f25bb7fb 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -76,13 +76,13 @@ "dependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-lambda-python/lib/function.ts b/packages/@aws-cdk/aws-lambda-python/lib/function.ts index 77f794704e967..e2ead2d7ea51c 100644 --- a/packages/@aws-cdk/aws-lambda-python/lib/function.ts +++ b/packages/@aws-cdk/aws-lambda-python/lib/function.ts @@ -1,7 +1,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as lambda from '@aws-cdk/aws-lambda'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { bundle } from './bundling'; /** @@ -40,7 +40,7 @@ export interface PythonFunctionProps extends lambda.FunctionOptions { * A Python Lambda function */ export class PythonFunction extends lambda.Function { - constructor(scope: cdk.Construct, id: string, props: PythonFunctionProps) { + constructor(scope: Construct, id: string, props: PythonFunctionProps) { if (props.runtime && props.runtime.family !== lambda.RuntimeFamily.PYTHON) { throw new Error('Only `PYTHON` runtimes are supported.'); } diff --git a/packages/@aws-cdk/aws-lambda-python/lib/layer.ts b/packages/@aws-cdk/aws-lambda-python/lib/layer.ts index 8b090eed6a989..9fe5576a7fce3 100644 --- a/packages/@aws-cdk/aws-lambda-python/lib/layer.ts +++ b/packages/@aws-cdk/aws-lambda-python/lib/layer.ts @@ -1,6 +1,6 @@ import * as path from 'path'; import * as lambda from '@aws-cdk/aws-lambda'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { bundle } from './bundling'; /** @@ -26,7 +26,7 @@ export interface PythonLayerVersionProps extends lambda.LayerVersionOptions { * @experimental */ export class PythonLayerVersion extends lambda.LayerVersion { - constructor(scope: cdk.Construct, id: string, props: PythonLayerVersionProps) { + constructor(scope: Construct, id: string, props: PythonLayerVersionProps) { const compatibleRuntimes = props.compatibleRuntimes ?? [lambda.Runtime.PYTHON_3_7]; // Ensure that all compatible runtimes are python diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index eceec47968ad8..5cab113b0f8f6 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -74,14 +74,14 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-lambda/lib/code.ts b/packages/@aws-cdk/aws-lambda/lib/code.ts index fef200a9a6c9c..491644b6c5ab6 100644 --- a/packages/@aws-cdk/aws-lambda/lib/code.ts +++ b/packages/@aws-cdk/aws-lambda/lib/code.ts @@ -4,6 +4,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; import * as s3_assets from '@aws-cdk/aws-s3-assets'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Represents the Lambda Handler Code. @@ -112,7 +113,7 @@ export abstract class Code { * @param scope The binding scope. Don't be smart about trying to down-cast or * assume it's initialized. You may just use it as a construct scope. */ - public abstract bind(scope: cdk.Construct): CodeConfig; + public abstract bind(scope: Construct): CodeConfig; /** * Called after the CFN function resource has been created to allow the code @@ -191,7 +192,7 @@ export class S3Code extends Code { this.bucketName = bucket.bucketName; } - public bind(_scope: cdk.Construct): CodeConfig { + public bind(_scope: Construct): CodeConfig { return { s3Location: { bucketName: this.bucketName, @@ -220,7 +221,7 @@ export class InlineCode extends Code { } } - public bind(_scope: cdk.Construct): CodeConfig { + public bind(_scope: Construct): CodeConfig { return { inlineCode: this.code, }; @@ -241,7 +242,7 @@ export class AssetCode extends Code { super(); } - public bind(scope: cdk.Construct): CodeConfig { + public bind(scope: Construct): CodeConfig { // If the same AssetCode is used multiple times, retain only the first instantiation. if (!this.asset) { this.asset = new s3_assets.Asset(scope, 'Code', { @@ -324,7 +325,7 @@ export class CfnParametersCode extends Code { this._objectKeyParam = props.objectKeyParam; } - public bind(scope: cdk.Construct): CodeConfig { + public bind(scope: Construct): CodeConfig { if (!this._bucketNameParam) { this._bucketNameParam = new cdk.CfnParameter(scope, 'LambdaSourceBucketNameParameter', { type: 'String', @@ -419,7 +420,7 @@ export class EcrImageCode extends Code { super(); } - public bind(_: cdk.Construct): CodeConfig { + public bind(_: Construct): CodeConfig { this.repository.grantPull(new iam.ServicePrincipal('lambda.amazonaws.com')); return { @@ -464,7 +465,7 @@ export class AssetImageCode extends Code { super(); } - public bind(scope: cdk.Construct): CodeConfig { + public bind(scope: Construct): CodeConfig { const asset = new ecr_assets.DockerImageAsset(scope, 'AssetImage', { directory: this.directory, ...this.props, diff --git a/packages/@aws-cdk/aws-lambda/lib/destination.ts b/packages/@aws-cdk/aws-lambda/lib/destination.ts index 8fb6ab956db6d..256c12820a6a3 100644 --- a/packages/@aws-cdk/aws-lambda/lib/destination.ts +++ b/packages/@aws-cdk/aws-lambda/lib/destination.ts @@ -1,4 +1,4 @@ -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IFunction } from './function-base'; /** diff --git a/packages/@aws-cdk/aws-lambda/lib/function-base.ts b/packages/@aws-cdk/aws-lambda/lib/function-base.ts index 8b8dd585c21c2..36fbb462efad8 100644 --- a/packages/@aws-cdk/aws-lambda/lib/function-base.ts +++ b/packages/@aws-cdk/aws-lambda/lib/function-base.ts @@ -1,7 +1,8 @@ import * as cloudwatch from '@aws-cdk/aws-cloudwatch'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as iam from '@aws-cdk/aws-iam'; -import { ConstructNode, IResource, Resource, Token } from '@aws-cdk/core'; +import { IResource, Resource, Token } from '@aws-cdk/core'; +import { Node } from 'constructs'; import { AliasOptions } from './alias'; import { EventInvokeConfig, EventInvokeConfigOptions } from './event-invoke-config'; import { IEventSource } from './event-source'; @@ -54,7 +55,7 @@ export interface IFunction extends IResource, ec2.IConnectable, iam.IGrantable { /** * The construct node where permissions are attached. */ - readonly permissionsNode: ConstructNode; + readonly permissionsNode: Node; /** * Adds an event source that maps to this AWS Lambda function. @@ -201,7 +202,7 @@ export abstract class FunctionBase extends Resource implements IFunction { /** * The construct node where permissions are attached. */ - public abstract readonly permissionsNode: ConstructNode; + public abstract readonly permissionsNode: Node; /** * Whether the addPermission() call adds any permissions @@ -360,7 +361,7 @@ export abstract class FunctionBase extends Resource implements IFunction { * For use internally for constructs, when the tree is set up in non-standard ways. Ex: SingletonFunction. * @internal */ - protected _functionNode(): ConstructNode { + protected _functionNode(): Node { return this.node; } diff --git a/packages/@aws-cdk/aws-lambda/lib/permission.ts b/packages/@aws-cdk/aws-lambda/lib/permission.ts index 65264d0c96a7f..f0d50810ab36e 100644 --- a/packages/@aws-cdk/aws-lambda/lib/permission.ts +++ b/packages/@aws-cdk/aws-lambda/lib/permission.ts @@ -1,5 +1,5 @@ import * as iam from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Represents a permission statement that can be added to a Lambda's resource policy diff --git a/packages/@aws-cdk/aws-lambda/lib/private/scalable-function-attribute.ts b/packages/@aws-cdk/aws-lambda/lib/private/scalable-function-attribute.ts index 3e1c2e634e0b1..8ac9400636eef 100644 --- a/packages/@aws-cdk/aws-lambda/lib/private/scalable-function-attribute.ts +++ b/packages/@aws-cdk/aws-lambda/lib/private/scalable-function-attribute.ts @@ -1,5 +1,6 @@ import * as appscaling from '@aws-cdk/aws-applicationautoscaling'; -import { Construct, Token } from '@aws-cdk/core'; +import { Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IScalableFunctionAttribute, UtilizationScalingOptions } from '../scalable-attribute-api'; /** diff --git a/packages/@aws-cdk/aws-lambda/lib/scalable-attribute-api.ts b/packages/@aws-cdk/aws-lambda/lib/scalable-attribute-api.ts index e64fcbd5a8ca7..de1501cdee0f1 100644 --- a/packages/@aws-cdk/aws-lambda/lib/scalable-attribute-api.ts +++ b/packages/@aws-cdk/aws-lambda/lib/scalable-attribute-api.ts @@ -1,6 +1,5 @@ import * as appscaling from '@aws-cdk/aws-applicationautoscaling'; -import { IConstruct } from '@aws-cdk/core'; - +import { IConstruct } from 'constructs'; /** * Interface for scalable attributes diff --git a/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts b/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts index 170f1f3e37573..6092e1c51d567 100644 --- a/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts +++ b/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Construct, IConstruct, Node } from 'constructs'; import { Function as LambdaFunction, FunctionProps } from './function'; import { FunctionBase } from './function-base'; import { Version } from './lambda-version'; @@ -45,7 +45,7 @@ export class SingletonFunction extends FunctionBase { public readonly functionName: string; public readonly functionArn: string; public readonly role?: iam.IRole; - public readonly permissionsNode: cdk.ConstructNode; + public readonly permissionsNode: Node; protected readonly canCreatePermissions: boolean; private lambdaFunction: LambdaFunction; @@ -91,7 +91,7 @@ export class SingletonFunction extends FunctionBase { * The SingletonFunction construct cannot be added as a dependency of another construct using * node.addDependency(). Use this method instead to declare this as a dependency of another construct. */ - public dependOn(down: cdk.IConstruct) { + public dependOn(down: IConstruct) { down.node.addDependency(this.lambdaFunction); } @@ -104,7 +104,7 @@ export class SingletonFunction extends FunctionBase { * Returns the construct tree node that corresponds to the lambda function. * @internal */ - protected _functionNode(): cdk.ConstructNode { + protected _functionNode(): Node { return this.lambdaFunction.node; } diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index 8ed6bffb012d1..55ccc2dbca224 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -105,7 +105,7 @@ "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -125,7 +125,7 @@ "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-licensemanager/package.json b/packages/@aws-cdk/aws-licensemanager/package.json index ccefb2b7fe344..42d765826a30d 100644 --- a/packages/@aws-cdk/aws-licensemanager/package.json +++ b/packages/@aws-cdk/aws-licensemanager/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-logs-destinations/lib/kinesis.ts b/packages/@aws-cdk/aws-logs-destinations/lib/kinesis.ts index e4f57f5d4b33f..3b2e3097a8985 100644 --- a/packages/@aws-cdk/aws-logs-destinations/lib/kinesis.ts +++ b/packages/@aws-cdk/aws-logs-destinations/lib/kinesis.ts @@ -1,7 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as kinesis from '@aws-cdk/aws-kinesis'; import * as logs from '@aws-cdk/aws-logs'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use a Kinesis stream as the destination for a log subscription diff --git a/packages/@aws-cdk/aws-logs-destinations/lib/lambda.ts b/packages/@aws-cdk/aws-logs-destinations/lib/lambda.ts index c88c3134d16ab..6aaade9860135 100644 --- a/packages/@aws-cdk/aws-logs-destinations/lib/lambda.ts +++ b/packages/@aws-cdk/aws-logs-destinations/lib/lambda.ts @@ -1,7 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as logs from '@aws-cdk/aws-logs'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use a Lamda Function as the destination for a log subscription diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index 67cc82e6f3977..5185d7075e1e3 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -78,7 +78,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -87,7 +87,7 @@ "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts b/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts index f9dfefdfed9f6..16aec4ef97e2b 100644 --- a/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts +++ b/packages/@aws-cdk/aws-logs/lib/cross-account-destination.ts @@ -93,7 +93,7 @@ export class CrossAccountDestination extends cdk.Resource implements ILogSubscri this.policyDocument.addStatements(statement); } - public bind(_scope: cdk.Construct, _sourceLogGroup: ILogGroup): LogSubscriptionDestinationConfig { + public bind(_scope: Construct, _sourceLogGroup: ILogGroup): LogSubscriptionDestinationConfig { return { arn: this.destinationArn }; } diff --git a/packages/@aws-cdk/aws-logs/lib/log-retention.ts b/packages/@aws-cdk/aws-logs/lib/log-retention.ts index 97ea68276b00c..9842d49cb60c8 100644 --- a/packages/@aws-cdk/aws-logs/lib/log-retention.ts +++ b/packages/@aws-cdk/aws-logs/lib/log-retention.ts @@ -65,7 +65,7 @@ export interface LogRetentionRetryOptions { * Log group can be created in the region that is different from stack region by * specifying `logGroupRegion` */ -export class LogRetention extends cdk.Construct { +export class LogRetention extends Construct { /** * The ARN of the LogGroup. @@ -124,7 +124,7 @@ export class LogRetention extends cdk.Construct { /** * Private provider Lambda function to support the log retention custom resource. */ -class LogRetentionFunction extends cdk.Construct { +class LogRetentionFunction extends Construct { public readonly functionArn: cdk.Reference; constructor(scope: Construct, id: string, props: LogRetentionProps) { @@ -169,7 +169,7 @@ class LogRetentionFunction extends cdk.Construct { if (cdk.CfnResource.isCfnResource(child)) { resource.addDependsOn(child); } - if (cdk.Construct.isConstruct(child) && child.node.defaultChild && cdk.CfnResource.isCfnResource(child.node.defaultChild)) { + if (Construct.isConstruct(child) && child.node.defaultChild && cdk.CfnResource.isCfnResource(child.node.defaultChild)) { resource.addDependsOn(child.node.defaultChild); } }); diff --git a/packages/@aws-cdk/aws-logs/lib/subscription-filter.ts b/packages/@aws-cdk/aws-logs/lib/subscription-filter.ts index 290534ea97f97..099094032d3a1 100644 --- a/packages/@aws-cdk/aws-logs/lib/subscription-filter.ts +++ b/packages/@aws-cdk/aws-logs/lib/subscription-filter.ts @@ -4,10 +4,6 @@ import { Construct } from 'constructs'; import { ILogGroup, SubscriptionFilterOptions } from './log-group'; import { CfnSubscriptionFilter } from './logs.generated'; -// v2 - keep this section separate to reduce merge conflicts when merging forwrad into v2 branch -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Interface for classes that can be the destination of a log Subscription */ @@ -22,7 +18,7 @@ export interface ILogSubscriptionDestination { * The destination may reconfigure its own permissions in response to this * function call. */ - bind(scope: CoreConstruct, sourceLogGroup: ILogGroup): LogSubscriptionDestinationConfig; + bind(scope: Construct, sourceLogGroup: ILogGroup): LogSubscriptionDestinationConfig; } /** diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index 10c7df31847a1..0b0802dd22cad 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -91,7 +91,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -100,7 +100,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-macie/package.json b/packages/@aws-cdk/aws-macie/package.json index 43e03dde95f9b..3d47c18c61083 100644 --- a/packages/@aws-cdk/aws-macie/package.json +++ b/packages/@aws-cdk/aws-macie/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-managedblockchain/package.json b/packages/@aws-cdk/aws-managedblockchain/package.json index 7381d05fc21da..f9afaaef1e147 100644 --- a/packages/@aws-cdk/aws-managedblockchain/package.json +++ b/packages/@aws-cdk/aws-managedblockchain/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-mediaconvert/package.json b/packages/@aws-cdk/aws-mediaconvert/package.json index 3a16966d46696..0a44b32b9d184 100644 --- a/packages/@aws-cdk/aws-mediaconvert/package.json +++ b/packages/@aws-cdk/aws-mediaconvert/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-medialive/package.json b/packages/@aws-cdk/aws-medialive/package.json index a0a1e5a26e64e..c6d5d99df2a29 100644 --- a/packages/@aws-cdk/aws-medialive/package.json +++ b/packages/@aws-cdk/aws-medialive/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-mediapackage/package.json b/packages/@aws-cdk/aws-mediapackage/package.json index 9dbd56d8bbdf2..bfe6be1316e52 100644 --- a/packages/@aws-cdk/aws-mediapackage/package.json +++ b/packages/@aws-cdk/aws-mediapackage/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-mediastore/package.json b/packages/@aws-cdk/aws-mediastore/package.json index 87136bb00db4c..a519de117fded 100644 --- a/packages/@aws-cdk/aws-mediastore/package.json +++ b/packages/@aws-cdk/aws-mediastore/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-msk/package.json b/packages/@aws-cdk/aws-msk/package.json index 46b3efed1d13d..a65ca6e875c4d 100644 --- a/packages/@aws-cdk/aws-msk/package.json +++ b/packages/@aws-cdk/aws-msk/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-mwaa/package.json b/packages/@aws-cdk/aws-mwaa/package.json index aa75ff757902d..dc9b81df0ed47 100644 --- a/packages/@aws-cdk/aws-mwaa/package.json +++ b/packages/@aws-cdk/aws-mwaa/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-neptune/package.json b/packages/@aws-cdk/aws-neptune/package.json index 8a98853b39459..a3ec119e4387a 100644 --- a/packages/@aws-cdk/aws-neptune/package.json +++ b/packages/@aws-cdk/aws-neptune/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json index d2ef00f93825a..f5bd7120e51ed 100644 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-networkmanager/package.json b/packages/@aws-cdk/aws-networkmanager/package.json index 532419adf67a4..a78f59a812e28 100644 --- a/packages/@aws-cdk/aws-networkmanager/package.json +++ b/packages/@aws-cdk/aws-networkmanager/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-opsworks/package.json b/packages/@aws-cdk/aws-opsworks/package.json index 62cb3c0938ad9..cd7725a8fb859 100644 --- a/packages/@aws-cdk/aws-opsworks/package.json +++ b/packages/@aws-cdk/aws-opsworks/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-opsworkscm/package.json b/packages/@aws-cdk/aws-opsworkscm/package.json index 93fe66e953a17..1a6ac9dc50b12 100644 --- a/packages/@aws-cdk/aws-opsworkscm/package.json +++ b/packages/@aws-cdk/aws-opsworkscm/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-pinpoint/package.json b/packages/@aws-cdk/aws-pinpoint/package.json index 601ee1531bba1..1d5d4678eb364 100644 --- a/packages/@aws-cdk/aws-pinpoint/package.json +++ b/packages/@aws-cdk/aws-pinpoint/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-pinpointemail/package.json b/packages/@aws-cdk/aws-pinpointemail/package.json index 7a640513e7d0c..1c1f984d535f2 100644 --- a/packages/@aws-cdk/aws-pinpointemail/package.json +++ b/packages/@aws-cdk/aws-pinpointemail/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-qldb/package.json b/packages/@aws-cdk/aws-qldb/package.json index e0000428a9dee..cf6b0007c39ac 100644 --- a/packages/@aws-cdk/aws-qldb/package.json +++ b/packages/@aws-cdk/aws-qldb/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ram/package.json b/packages/@aws-cdk/aws-ram/package.json index adb3566584eb3..97889d4010649 100644 --- a/packages/@aws-cdk/aws-ram/package.json +++ b/packages/@aws-cdk/aws-ram/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts b/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts index 3643e457bdbb9..6fa16927fd51a 100644 --- a/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts +++ b/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; -import * as core from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IEngine } from './engine'; import { EngineVersion } from './engine-version'; import { IParameterGroup, ParameterGroup } from './parameter-group'; @@ -97,7 +97,7 @@ export interface IClusterEngine extends IEngine { /** * Method called when the engine is used to create a new cluster. */ - bindToCluster(scope: core.Construct, options: ClusterEngineBindOptions): ClusterEngineConfig; + bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig; } interface ClusterEngineBaseProps { @@ -130,7 +130,7 @@ abstract class ClusterEngineBase implements IClusterEngine { this.parameterGroupFamily = this.engineVersion ? `${this.engineType}${this.engineVersion.majorVersion}` : undefined; } - public bindToCluster(scope: core.Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { + public bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { const parameterGroup = options.parameterGroup ?? this.defaultParameterGroup(scope); return { parameterGroup, @@ -144,7 +144,7 @@ abstract class ClusterEngineBase implements IClusterEngine { * possibly an imported one, * if one wasn't provided by the customer explicitly. */ - protected abstract defaultParameterGroup(scope: core.Construct): IParameterGroup | undefined; + protected abstract defaultParameterGroup(scope: Construct): IParameterGroup | undefined; } interface MysqlClusterEngineBaseProps { @@ -166,7 +166,7 @@ abstract class MySqlClusterEngineBase extends ClusterEngineBase { }); } - public bindToCluster(scope: core.Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { + public bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { const config = super.bindToCluster(scope, options); const parameterGroup = options.parameterGroup ?? (options.s3ImportRole || options.s3ExportRole ? new ParameterGroup(scope, 'ClusterParameterGroup', { @@ -271,7 +271,7 @@ class AuroraClusterEngine extends MySqlClusterEngineBase { }); } - protected defaultParameterGroup(_scope: core.Construct): IParameterGroup | undefined { + protected defaultParameterGroup(_scope: Construct): IParameterGroup | undefined { // the default.aurora5.6 ParameterGroup is actually the default, // so just return undefined in this case return undefined; @@ -380,7 +380,7 @@ class AuroraMysqlClusterEngine extends MySqlClusterEngineBase { }); } - protected defaultParameterGroup(scope: core.Construct): IParameterGroup | undefined { + protected defaultParameterGroup(scope: Construct): IParameterGroup | undefined { return ParameterGroup.fromParameterGroupName(scope, 'AuroraMySqlDatabaseClusterEngineDefaultParameterGroup', `default.${this.parameterGroupFamily}`); } @@ -528,7 +528,7 @@ class AuroraPostgresClusterEngine extends ClusterEngineBase { }); } - public bindToCluster(scope: core.Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { + public bindToCluster(scope: Construct, options: ClusterEngineBindOptions): ClusterEngineConfig { const config = super.bindToCluster(scope, options); // skip validation for unversioned as it might be supported/unsupported. we cannot reliably tell at compile-time if (this.engineVersion?.fullVersion) { @@ -542,7 +542,7 @@ class AuroraPostgresClusterEngine extends ClusterEngineBase { return config; } - protected defaultParameterGroup(scope: core.Construct): IParameterGroup | undefined { + protected defaultParameterGroup(scope: Construct): IParameterGroup | undefined { if (!this.parameterGroupFamily) { throw new Error('Could not create a new ParameterGroup for an unversioned aurora-postgresql cluster engine. ' + 'Please either use a versioned engine, or pass an explicit ParameterGroup when creating the cluster'); diff --git a/packages/@aws-cdk/aws-rds/lib/instance-engine.ts b/packages/@aws-cdk/aws-rds/lib/instance-engine.ts index f3f41a00df8b7..e9b8ccee37a85 100644 --- a/packages/@aws-cdk/aws-rds/lib/instance-engine.ts +++ b/packages/@aws-cdk/aws-rds/lib/instance-engine.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; -import * as core from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IEngine } from './engine'; import { EngineVersion } from './engine-version'; import { IOptionGroup, OptionGroup } from './option-group'; @@ -100,7 +100,7 @@ export interface IInstanceEngine extends IEngine { /** * Method called when the engine is used to create a new instance. */ - bindToInstance(scope: core.Construct, options: InstanceEngineBindOptions): InstanceEngineConfig; + bindToInstance(scope: Construct, options: InstanceEngineBindOptions): InstanceEngineConfig; } interface InstanceEngineBaseProps { @@ -134,7 +134,7 @@ abstract class InstanceEngineBase implements IInstanceEngine { this.engineFamily = props.engineFamily; } - public bindToInstance(_scope: core.Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { + public bindToInstance(_scope: Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { if (options.timezone && !this.supportsTimezone) { throw new Error(`timezone property can not be configured for ${this.engineType}`); } @@ -261,7 +261,7 @@ class MariaDbInstanceEngine extends InstanceEngineBase { }); } - public bindToInstance(scope: core.Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { + public bindToInstance(scope: Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { if (options.domain) { throw new Error(`domain property cannot be configured for ${this.engineType}`); } @@ -828,7 +828,7 @@ abstract class OracleInstanceEngineBase extends InstanceEngineBase { }); } - public bindToInstance(scope: core.Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { + public bindToInstance(scope: Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { const config = super.bindToInstance(scope, options); let optionGroup = options.optionGroup; @@ -1097,7 +1097,7 @@ abstract class SqlServerInstanceEngineBase extends InstanceEngineBase { }); } - public bindToInstance(scope: core.Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { + public bindToInstance(scope: Construct, options: InstanceEngineBindOptions): InstanceEngineConfig { const config = super.bindToInstance(scope, options); let optionGroup = options.optionGroup; diff --git a/packages/@aws-cdk/aws-rds/lib/private/util.ts b/packages/@aws-cdk/aws-rds/lib/private/util.ts index 8cba1e4a1ee1e..d1fe1068daffa 100644 --- a/packages/@aws-cdk/aws-rds/lib/private/util.ts +++ b/packages/@aws-cdk/aws-rds/lib/private/util.ts @@ -1,6 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; -import { Construct, CfnDeletionPolicy, CfnResource, RemovalPolicy } from '@aws-cdk/core'; +import { CfnDeletionPolicy, CfnResource, RemovalPolicy } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { DatabaseSecret } from '../database-secret'; import { IEngine } from '../engine'; import { Credentials } from '../props'; diff --git a/packages/@aws-cdk/aws-rds/package.json b/packages/@aws-cdk/aws-rds/package.json index 373440a0d0b29..ea25b5bd99d77 100644 --- a/packages/@aws-cdk/aws-rds/package.json +++ b/packages/@aws-cdk/aws-rds/package.json @@ -93,7 +93,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -106,7 +106,7 @@ "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-redshift/package.json b/packages/@aws-cdk/aws-redshift/package.json index 78a34282ee169..7347b516e04dd 100644 --- a/packages/@aws-cdk/aws-redshift/package.json +++ b/packages/@aws-cdk/aws-redshift/package.json @@ -87,7 +87,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -97,7 +97,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-resourcegroups/package.json b/packages/@aws-cdk/aws-resourcegroups/package.json index 797ebd03ab693..189f725467b50 100644 --- a/packages/@aws-cdk/aws-resourcegroups/package.json +++ b/packages/@aws-cdk/aws-resourcegroups/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-robomaker/package.json b/packages/@aws-cdk/aws-robomaker/package.json index 2e3cc473ad306..242d9f031ba37 100644 --- a/packages/@aws-cdk/aws-robomaker/package.json +++ b/packages/@aws-cdk/aws-robomaker/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-route53-patterns/lib/website-redirect.ts b/packages/@aws-cdk/aws-route53-patterns/lib/website-redirect.ts index 274ed769c25c8..6c2260df2e6cb 100644 --- a/packages/@aws-cdk/aws-route53-patterns/lib/website-redirect.ts +++ b/packages/@aws-cdk/aws-route53-patterns/lib/website-redirect.ts @@ -7,10 +7,6 @@ import { BlockPublicAccess, Bucket, RedirectProtocol } from '@aws-cdk/aws-s3'; import { RemovalPolicy, Stack, Token } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Properties to configure an HTTPS Redirect */ @@ -55,7 +51,7 @@ export interface HttpsRedirectProps { * Allows creating a domainA -> domainB redirect using CloudFront and S3. * You can specify multiple domains to be redirected. */ -export class HttpsRedirect extends CoreConstruct { +export class HttpsRedirect extends Construct { constructor(scope: Construct, id: string, props: HttpsRedirectProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index b7ec5393f25fe..0e34f572424a9 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -82,7 +82,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,7 +94,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-route53-targets/lib/cloudfront-target.ts b/packages/@aws-cdk/aws-route53-targets/lib/cloudfront-target.ts index 217ba72cfc079..b07da6304a2bd 100644 --- a/packages/@aws-cdk/aws-route53-targets/lib/cloudfront-target.ts +++ b/packages/@aws-cdk/aws-route53-targets/lib/cloudfront-target.ts @@ -1,6 +1,7 @@ import * as cloudfront from '@aws-cdk/aws-cloudfront'; import * as route53 from '@aws-cdk/aws-route53'; -import { Aws, CfnMapping, IConstruct, Stack } from '@aws-cdk/core'; +import { Aws, CfnMapping, Stack } from '@aws-cdk/core'; +import { IConstruct } from 'constructs'; /** * Use a CloudFront Distribution as an alias record target diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index 0f6edcdd4bb5c..4aede2b1be6c8 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -87,7 +87,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -103,7 +103,7 @@ "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-route53/lib/util.ts b/packages/@aws-cdk/aws-route53/lib/util.ts index a316e2ecd59f9..285a5d46b3646 100644 --- a/packages/@aws-cdk/aws-route53/lib/util.ts +++ b/packages/@aws-cdk/aws-route53/lib/util.ts @@ -1,4 +1,5 @@ -import { Construct, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IHostedZone } from './hosted-zone-ref'; /** diff --git a/packages/@aws-cdk/aws-route53/lib/vpc-endpoint-service-domain-name.ts b/packages/@aws-cdk/aws-route53/lib/vpc-endpoint-service-domain-name.ts index 2af889661098a..8705927249ed5 100644 --- a/packages/@aws-cdk/aws-route53/lib/vpc-endpoint-service-domain-name.ts +++ b/packages/@aws-cdk/aws-route53/lib/vpc-endpoint-service-domain-name.ts @@ -5,10 +5,6 @@ import { AwsCustomResource, AwsCustomResourcePolicy, PhysicalResourceId } from ' import { Construct } from 'constructs'; import { IPublicHostedZone, TxtRecord } from '../lib'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Properties to configure a VPC Endpoint Service domain name */ @@ -38,7 +34,7 @@ export interface VpcEndpointServiceDomainNameProps { /** * A Private DNS configuration for a VPC endpoint service. */ -export class VpcEndpointServiceDomainName extends CoreConstruct { +export class VpcEndpointServiceDomainName extends Construct { // Track all domain names created, so someone doesn't accidentally associate two domains with a single service private static readonly endpointServices: IVpcEndpointService[] = []; diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index 4afa08b10453f..bdf54b0dc8af3 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -89,7 +89,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -98,7 +98,7 @@ "@aws-cdk/core": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/custom-resources": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-route53resolver/package.json b/packages/@aws-cdk/aws-route53resolver/package.json index 1d495a8fa4c80..a7d4597fa58f9 100644 --- a/packages/@aws-cdk/aws-route53resolver/package.json +++ b/packages/@aws-cdk/aws-route53resolver/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-s3-assets/lib/asset.ts b/packages/@aws-cdk/aws-s3-assets/lib/asset.ts index cc730b82170de..dffe3fa51f095 100644 --- a/packages/@aws-cdk/aws-s3-assets/lib/asset.ts +++ b/packages/@aws-cdk/aws-s3-assets/lib/asset.ts @@ -54,7 +54,7 @@ export interface AssetProps extends AssetOptions { * An asset represents a local file or directory, which is automatically uploaded to S3 * and then can be referenced within a CDK application. */ -export class Asset extends cdk.Construct implements cdk.IAsset { +export class Asset extends Construct implements cdk.IAsset { /** * Attribute that represents the name of the bucket this asset exists in. */ diff --git a/packages/@aws-cdk/aws-s3-assets/package.json b/packages/@aws-cdk/aws-s3-assets/package.json index 798502562b84a..10dfc20dc1cd4 100644 --- a/packages/@aws-cdk/aws-s3-assets/package.json +++ b/packages/@aws-cdk/aws-s3-assets/package.json @@ -85,7 +85,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -95,7 +95,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-s3-deployment/lib/bucket-deployment.ts b/packages/@aws-cdk/aws-s3-deployment/lib/bucket-deployment.ts index 352f350b91600..ac29ea182f2f4 100644 --- a/packages/@aws-cdk/aws-s3-deployment/lib/bucket-deployment.ts +++ b/packages/@aws-cdk/aws-s3-deployment/lib/bucket-deployment.ts @@ -175,7 +175,7 @@ export interface BucketDeploymentProps { readonly vpcSubnets?: ec2.SubnetSelection; } -export class BucketDeployment extends cdk.Construct { +export class BucketDeployment extends Construct { constructor(scope: Construct, id: string, props: BucketDeploymentProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-s3-deployment/lib/source.ts b/packages/@aws-cdk/aws-s3-deployment/lib/source.ts index 6f0f877662891..3add67057797a 100644 --- a/packages/@aws-cdk/aws-s3-deployment/lib/source.ts +++ b/packages/@aws-cdk/aws-s3-deployment/lib/source.ts @@ -1,7 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; import * as s3_assets from '@aws-cdk/aws-s3-assets'; -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; export interface SourceConfig { /** @@ -33,7 +33,7 @@ export interface ISource { * Binds the source to a bucket deployment. * @param scope The construct tree context. */ - bind(scope: cdk.Construct, context?: DeploymentSourceContext): SourceConfig; + bind(scope: Construct, context?: DeploymentSourceContext): SourceConfig; } /** @@ -54,7 +54,7 @@ export class Source { */ public static bucket(bucket: s3.IBucket, zipObjectKey: string): ISource { return { - bind: (_: cdk.Construct, context?: DeploymentSourceContext) => { + bind: (_: Construct, context?: DeploymentSourceContext) => { if (!context) { throw new Error('To use a Source.bucket(), context must be provided'); } @@ -71,7 +71,7 @@ export class Source { */ public static asset(path: string, options?: s3_assets.AssetOptions): ISource { return { - bind(scope: cdk.Construct, context?: DeploymentSourceContext): SourceConfig { + bind(scope: Construct, context?: DeploymentSourceContext): SourceConfig { if (!context) { throw new Error('To use a Source.asset(), context must be provided'); } diff --git a/packages/@aws-cdk/aws-s3-deployment/package.json b/packages/@aws-cdk/aws-s3-deployment/package.json index 28e24c1a6610d..0ae5312216d20 100644 --- a/packages/@aws-cdk/aws-s3-deployment/package.json +++ b/packages/@aws-cdk/aws-s3-deployment/package.json @@ -96,7 +96,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/lambda-layer-awscli": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -108,7 +108,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/lambda-layer-awscli": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-s3-notifications/lib/lambda.ts b/packages/@aws-cdk/aws-s3-notifications/lib/lambda.ts index 36ad917ec4ec4..7bec8f04d2170 100644 --- a/packages/@aws-cdk/aws-s3-notifications/lib/lambda.ts +++ b/packages/@aws-cdk/aws-s3-notifications/lib/lambda.ts @@ -1,7 +1,8 @@ import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as s3 from '@aws-cdk/aws-s3'; -import { CfnResource, Construct, Names, Stack } from '@aws-cdk/core'; +import { CfnResource, Names, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use a Lambda function as a bucket notification destination @@ -13,7 +14,7 @@ export class LambdaDestination implements s3.IBucketNotificationDestination { public bind(_scope: Construct, bucket: s3.IBucket): s3.BucketNotificationDestinationConfig { const permissionId = `AllowBucketNotificationsTo${Names.nodeUniqueId(this.fn.permissionsNode)}`; - if (!Construct.isConstruct(bucket)) { + if (!(bucket instanceof Construct)) { throw new Error(`LambdaDestination for function ${Names.nodeUniqueId(this.fn.permissionsNode)} can only be configured on a bucket construct (Bucket ${bucket.bucketName})`); } diff --git a/packages/@aws-cdk/aws-s3-notifications/lib/sns.ts b/packages/@aws-cdk/aws-s3-notifications/lib/sns.ts index 955d3c4eb2c54..38a83e6e2f445 100644 --- a/packages/@aws-cdk/aws-s3-notifications/lib/sns.ts +++ b/packages/@aws-cdk/aws-s3-notifications/lib/sns.ts @@ -1,7 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; import * as sns from '@aws-cdk/aws-sns'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an SNS topic as a bucket notification destination diff --git a/packages/@aws-cdk/aws-s3-notifications/lib/sqs.ts b/packages/@aws-cdk/aws-s3-notifications/lib/sqs.ts index 330a941a9ae86..88c5bab7a767c 100644 --- a/packages/@aws-cdk/aws-s3-notifications/lib/sqs.ts +++ b/packages/@aws-cdk/aws-s3-notifications/lib/sqs.ts @@ -1,7 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; import * as sqs from '@aws-cdk/aws-sqs'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Use an SQS queue as a bucket notification destination diff --git a/packages/@aws-cdk/aws-s3-notifications/package.json b/packages/@aws-cdk/aws-s3-notifications/package.json index 73646ae9929fa..89d5fa86793b1 100644 --- a/packages/@aws-cdk/aws-s3-notifications/package.json +++ b/packages/@aws-cdk/aws-s3-notifications/package.json @@ -78,7 +78,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -88,7 +88,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-s3/lib/bucket.ts b/packages/@aws-cdk/aws-s3/lib/bucket.ts index 51f4a30800cad..2d3a10285198f 100644 --- a/packages/@aws-cdk/aws-s3/lib/bucket.ts +++ b/packages/@aws-cdk/aws-s3/lib/bucket.ts @@ -4,7 +4,7 @@ import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import { - Fn, IResource, Lazy, RemovalPolicy, Resource, Stack, Token, + Fn, IResource, Lazy, RemovalPolicy, Resource, ResourceProps, Stack, Token, CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, } from '@aws-cdk/core'; import { Construct } from 'constructs'; @@ -383,6 +383,12 @@ abstract class BucketBase extends Resource implements IBucket { */ protected abstract disallowPublicAccess?: boolean; + constructor(scope: Construct, id: string, props: ResourceProps = {}) { + super(scope, id, props); + + this.node.addValidation({ validate: () => this.policy?.document.validateForResourcePolicy() ?? [] }); + } + /** * Define a CloudWatch event that triggers when something happens to this repository * @@ -483,12 +489,6 @@ abstract class BucketBase extends Resource implements IBucket { return { statementAdded: false }; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.policy?.document.validateForResourcePolicy() || []); - return errors; - } - /** * The https URL of an S3 object. Specify `regional: false` at the options * for non-regional URLs. For example: diff --git a/packages/@aws-cdk/aws-s3/lib/destination.ts b/packages/@aws-cdk/aws-s3/lib/destination.ts index 31a7ac94ef9ac..d8b8e1aa55e85 100644 --- a/packages/@aws-cdk/aws-s3/lib/destination.ts +++ b/packages/@aws-cdk/aws-s3/lib/destination.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { IBucket } from './bucket'; /** @@ -12,7 +13,7 @@ export interface IBucketNotificationDestination { * idempotency in each destination. * @param bucket The bucket object to bind to */ - bind(scope: cdk.Construct, bucket: IBucket): BucketNotificationDestinationConfig; + bind(scope: Construct, bucket: IBucket): BucketNotificationDestinationConfig; } /** diff --git a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource-handler.ts b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource-handler.ts index 4ceced2e93e2d..fc411429799f5 100644 --- a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource-handler.ts +++ b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource-handler.ts @@ -1,5 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * A Lambda-based custom resource handler that provisions S3 bucket @@ -18,14 +19,14 @@ import * as cdk from '@aws-cdk/core'; * Sadly, we can't use @aws-cdk/aws-lambda as it will introduce a dependency * cycle, so this uses raw `cdk.Resource`s. */ -export class NotificationsResourceHandler extends cdk.Construct { +export class NotificationsResourceHandler extends Construct { /** * Defines a stack-singleton lambda function with the logic for a CloudFormation custom * resource that provisions bucket notification configuration for a bucket. * * @returns The ARN of the custom resource lambda function. */ - public static singleton(context: cdk.Construct) { + public static singleton(context: Construct) { const root = cdk.Stack.of(context); // well-known logical id to ensure stack singletonity @@ -44,7 +45,7 @@ export class NotificationsResourceHandler extends cdk.Construct { */ public readonly functionArn: string; - constructor(scope: cdk.Construct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id); const role = new iam.Role(this, 'Role', { diff --git a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts index 91bb688b28857..ce00ad0696ee4 100644 --- a/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts +++ b/packages/@aws-cdk/aws-s3/lib/notifications-resource/notifications-resource.ts @@ -1,4 +1,5 @@ import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Bucket, EventType, NotificationKeyFilter } from '../bucket'; import { BucketNotificationDestinationType, IBucketNotificationDestination } from '../destination'; import { NotificationsResourceHandler } from './notifications-resource-handler'; @@ -28,14 +29,14 @@ interface NotificationsProps { * @see * https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-notificationconfig.html */ -export class BucketNotifications extends cdk.Construct { +export class BucketNotifications extends Construct { private readonly lambdaNotifications = new Array(); private readonly queueNotifications = new Array(); private readonly topicNotifications = new Array(); private resource?: cdk.CfnResource; private readonly bucket: Bucket; - constructor(scope: cdk.Construct, id: string, props: NotificationsProps) { + constructor(scope: Construct, id: string, props: NotificationsProps) { super(scope, id); this.bucket = props.bucket; } diff --git a/packages/@aws-cdk/aws-s3/package.json b/packages/@aws-cdk/aws-s3/package.json index c0c5e88105333..3ed503ab990cd 100644 --- a/packages/@aws-cdk/aws-s3/package.json +++ b/packages/@aws-cdk/aws-s3/package.json @@ -86,7 +86,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,7 +94,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json index dc24ba5651851..d6c58403a5414 100644 --- a/packages/@aws-cdk/aws-sagemaker/package.json +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -82,11 +82,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sam/package.json b/packages/@aws-cdk/aws-sam/package.json index 3b7559ff7e57e..e4ccbaa37c62f 100644 --- a/packages/@aws-cdk/aws-sam/package.json +++ b/packages/@aws-cdk/aws-sam/package.json @@ -85,11 +85,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sdb/package.json b/packages/@aws-cdk/aws-sdb/package.json index 1c76560700a58..2ae25527bbcbf 100644 --- a/packages/@aws-cdk/aws-sdb/package.json +++ b/packages/@aws-cdk/aws-sdb/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-secretsmanager/lib/secret-rotation.ts b/packages/@aws-cdk/aws-secretsmanager/lib/secret-rotation.ts index 0d0ed6e75c348..e41be73c14448 100644 --- a/packages/@aws-cdk/aws-secretsmanager/lib/secret-rotation.ts +++ b/packages/@aws-cdk/aws-secretsmanager/lib/secret-rotation.ts @@ -5,10 +5,6 @@ import { Duration, Names, Stack, Token } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { ISecret } from './secret'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Options for a SecretRotationApplication */ @@ -211,7 +207,7 @@ export interface SecretRotationProps { /** * Secret rotation for a service or database */ -export class SecretRotation extends CoreConstruct { +export class SecretRotation extends Construct { constructor(scope: Construct, id: string, props: SecretRotationProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-secretsmanager/lib/secret.ts b/packages/@aws-cdk/aws-secretsmanager/lib/secret.ts index 2b5361572e804..d414048e9dad8 100644 --- a/packages/@aws-cdk/aws-secretsmanager/lib/secret.ts +++ b/packages/@aws-cdk/aws-secretsmanager/lib/secret.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; -import { FeatureFlags, Fn, IResource, RemovalPolicy, Resource, SecretValue, Stack, Token } from '@aws-cdk/core'; +import { FeatureFlags, Fn, IResource, RemovalPolicy, Resource, ResourceProps, SecretValue, Stack, Token } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; import { IConstruct, Construct } from 'constructs'; import { ResourcePolicy } from './policy'; @@ -178,6 +178,12 @@ abstract class SecretBase extends Resource implements ISecret { private policy?: ResourcePolicy; + constructor(scope: Construct, id: string, props: ResourceProps = {}) { + super(scope, id, props); + + this.node.addValidation({ validate: () => this.policy?.document.validateForResourcePolicy() ?? [] }); + } + public get secretFullArn(): string | undefined { return this.secretArn; } public grantRead(grantee: iam.IGrantable, versionStages?: string[]): iam.Grant { @@ -251,12 +257,6 @@ abstract class SecretBase extends Resource implements ISecret { return { statementAdded: false }; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.policy?.document.validateForResourcePolicy() || []); - return errors; - } - public denyAccountRootDelete() { this.addToResourcePolicy(new iam.PolicyStatement({ actions: ['secretsmanager:DeleteSecret'], diff --git a/packages/@aws-cdk/aws-secretsmanager/package.json b/packages/@aws-cdk/aws-secretsmanager/package.json index 0c6fa1aa1dfa8..0420b2402529c 100644 --- a/packages/@aws-cdk/aws-secretsmanager/package.json +++ b/packages/@aws-cdk/aws-secretsmanager/package.json @@ -89,7 +89,7 @@ "@aws-cdk/aws-sam": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-ec2": "0.0.0", @@ -99,7 +99,7 @@ "@aws-cdk/aws-sam": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-securityhub/package.json b/packages/@aws-cdk/aws-securityhub/package.json index 1dfae01a51a10..cddae0a79b9b0 100644 --- a/packages/@aws-cdk/aws-securityhub/package.json +++ b/packages/@aws-cdk/aws-securityhub/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-servicecatalog/package.json b/packages/@aws-cdk/aws-servicecatalog/package.json index dc9695b44715a..535b2205ee518 100644 --- a/packages/@aws-cdk/aws-servicecatalog/package.json +++ b/packages/@aws-cdk/aws-servicecatalog/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-servicediscovery/package.json b/packages/@aws-cdk/aws-servicediscovery/package.json index 60aa587d82797..a2f12ab225ebc 100644 --- a/packages/@aws-cdk/aws-servicediscovery/package.json +++ b/packages/@aws-cdk/aws-servicediscovery/package.json @@ -89,7 +89,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0", "@aws-cdk/aws-route53": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -97,7 +97,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0", "@aws-cdk/aws-route53": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index 33bf552ab91b6..31d1cfa549e39 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -81,7 +81,7 @@ "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -92,7 +92,7 @@ "@aws-cdk/aws-ses": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ses/lib/receipt-filter.ts b/packages/@aws-cdk/aws-ses/lib/receipt-filter.ts index 81ee76d5adbff..5112ed881486b 100644 --- a/packages/@aws-cdk/aws-ses/lib/receipt-filter.ts +++ b/packages/@aws-cdk/aws-ses/lib/receipt-filter.ts @@ -2,10 +2,6 @@ import { Resource } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { CfnReceiptFilter } from './ses.generated'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core' - /** * The policy for the receipt filter. */ @@ -82,7 +78,7 @@ export interface WhiteListReceiptFilterProps { /** * A white list receipt filter. */ -export class WhiteListReceiptFilter extends CoreConstruct { +export class WhiteListReceiptFilter extends Construct { constructor(scope: Construct, id: string, props: WhiteListReceiptFilterProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts b/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts index 72c056d913693..57cce6813db29 100644 --- a/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts +++ b/packages/@aws-cdk/aws-ses/lib/receipt-rule.ts @@ -6,10 +6,6 @@ import { IReceiptRuleAction } from './receipt-rule-action'; import { IReceiptRuleSet } from './receipt-rule-set'; import { CfnReceiptRule } from './ses.generated'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * A receipt rule. */ @@ -168,7 +164,7 @@ export interface DropSpamReceiptRuleProps extends ReceiptRuleProps { * * @see https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-lambda-example-functions.html */ -export class DropSpamReceiptRule extends CoreConstruct { +export class DropSpamReceiptRule extends Construct { public readonly rule: ReceiptRule; constructor(scope: Construct, id: string, props: DropSpamReceiptRuleProps) { diff --git a/packages/@aws-cdk/aws-ses/package.json b/packages/@aws-cdk/aws-ses/package.json index 6523a995cfb85..bd5b41df2ce40 100644 --- a/packages/@aws-cdk/aws-ses/package.json +++ b/packages/@aws-cdk/aws-ses/package.json @@ -85,14 +85,14 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json index 865e865c3c00d..26ae15e0fec33 100644 --- a/packages/@aws-cdk/aws-signer/package.json +++ b/packages/@aws-cdk/aws-signer/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sns-subscriptions/lib/lambda.ts b/packages/@aws-cdk/aws-sns-subscriptions/lib/lambda.ts index 3ecab463d2c2c..38c9de4782f0c 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/lib/lambda.ts +++ b/packages/@aws-cdk/aws-sns-subscriptions/lib/lambda.ts @@ -1,7 +1,8 @@ import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as sns from '@aws-cdk/aws-sns'; -import { Construct, Names, Stack } from '@aws-cdk/core'; +import { Names, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { SubscriptionProps } from './subscription'; /** @@ -23,7 +24,7 @@ export class LambdaSubscription implements sns.ITopicSubscription { public bind(topic: sns.ITopic): sns.TopicSubscriptionConfig { // Create subscription under *consuming* construct to make sure it ends up // in the correct stack in cases of cross-stack subscriptions. - if (!Construct.isConstruct(this.fn)) { + if (!(this.fn instanceof Construct)) { throw new Error('The supplied lambda Function object must be an instance of Construct'); } diff --git a/packages/@aws-cdk/aws-sns-subscriptions/lib/sqs.ts b/packages/@aws-cdk/aws-sns-subscriptions/lib/sqs.ts index bac6a13859d9c..04c2fa7beea27 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/lib/sqs.ts +++ b/packages/@aws-cdk/aws-sns-subscriptions/lib/sqs.ts @@ -1,7 +1,8 @@ import * as iam from '@aws-cdk/aws-iam'; import * as sns from '@aws-cdk/aws-sns'; import * as sqs from '@aws-cdk/aws-sqs'; -import { Construct, Names, Stack } from '@aws-cdk/core'; +import { Names, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { SubscriptionProps } from './subscription'; /** @@ -31,7 +32,7 @@ export class SqsSubscription implements sns.ITopicSubscription { public bind(topic: sns.ITopic): sns.TopicSubscriptionConfig { // Create subscription under *consuming* construct to make sure it ends up // in the correct stack in cases of cross-stack subscriptions. - if (!Construct.isConstruct(this.queue)) { + if (!(this.queue instanceof Construct)) { throw new Error('The supplied Queue object must be an instance of Construct'); } diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index 108e790e0cd90..7dfacbe739f40 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -78,7 +78,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -87,7 +87,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sns/lib/subscriber.ts b/packages/@aws-cdk/aws-sns/lib/subscriber.ts index edfd3632d415a..a52ee834cab11 100644 --- a/packages/@aws-cdk/aws-sns/lib/subscriber.ts +++ b/packages/@aws-cdk/aws-sns/lib/subscriber.ts @@ -1,4 +1,4 @@ -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { SubscriptionOptions } from './subscription'; import { ITopic } from './topic-base'; diff --git a/packages/@aws-cdk/aws-sns/lib/topic-base.ts b/packages/@aws-cdk/aws-sns/lib/topic-base.ts index bddfde6288748..6626bdb2f7285 100644 --- a/packages/@aws-cdk/aws-sns/lib/topic-base.ts +++ b/packages/@aws-cdk/aws-sns/lib/topic-base.ts @@ -1,5 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; -import { Construct, IResource, Resource, Token } from '@aws-cdk/core'; +import { IResource, Resource, ResourceProps, Token } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { TopicPolicy } from './policy'; import { ITopicSubscription } from './subscriber'; import { Subscription } from './subscription'; @@ -59,6 +60,12 @@ export abstract class TopicBase extends Resource implements ITopic { private policy?: TopicPolicy; + constructor(scope: Construct, id: string, props: ResourceProps = {}) { + super(scope, id, props); + + this.node.addValidation({ validate: () => this.policy?.document.validateForResourcePolicy() ?? [] }); + } + /** * Subscribe some endpoint to this topic */ @@ -102,12 +109,6 @@ export abstract class TopicBase extends Resource implements ITopic { return { statementAdded: false }; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.policy?.document.validateForResourcePolicy() || []); - return errors; - } - /** * Grant topic publishing permissions to the given identity */ diff --git a/packages/@aws-cdk/aws-sns/package.json b/packages/@aws-cdk/aws-sns/package.json index b2f784814be30..b79497e6e998a 100644 --- a/packages/@aws-cdk/aws-sns/package.json +++ b/packages/@aws-cdk/aws-sns/package.json @@ -92,7 +92,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -102,7 +102,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sqs/lib/queue-base.ts b/packages/@aws-cdk/aws-sqs/lib/queue-base.ts index 162c149aec2ad..a40e7c58498f1 100644 --- a/packages/@aws-cdk/aws-sqs/lib/queue-base.ts +++ b/packages/@aws-cdk/aws-sqs/lib/queue-base.ts @@ -1,6 +1,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; -import { IResource, Resource } from '@aws-cdk/core'; +import { IResource, Resource, ResourceProps } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { QueuePolicy } from './policy'; /** @@ -134,6 +135,12 @@ export abstract class QueueBase extends Resource implements IQueue { private policy?: QueuePolicy; + constructor(scope: Construct, id: string, props: ResourceProps = {}) { + super(scope, id, props); + + this.node.addValidation({ validate: () => this.policy?.document.validateForResourcePolicy() ?? [] }); + } + /** * Adds a statement to the IAM resource policy associated with this queue. * @@ -154,12 +161,6 @@ export abstract class QueueBase extends Resource implements IQueue { return { statementAdded: false }; } - protected validate(): string[] { - const errors = super.validate(); - errors.push(...this.policy?.document.validateForResourcePolicy() || []); - return errors; - } - /** * Grant permissions to consume messages from a queue * diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index f5fc1269694b6..b20600d2ac0ec 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -88,7 +88,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -96,7 +96,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-ssm/lib/parameter.ts b/packages/@aws-cdk/aws-ssm/lib/parameter.ts index 416454c1ef8cc..8c409a9bcee5f 100644 --- a/packages/@aws-cdk/aws-ssm/lib/parameter.ts +++ b/packages/@aws-cdk/aws-ssm/lib/parameter.ts @@ -3,7 +3,7 @@ import * as kms from '@aws-cdk/aws-kms'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { CfnDynamicReference, CfnDynamicReferenceService, CfnParameter, - Construct as CompatConstruct, ContextProvider, Fn, IResource, Resource, Stack, Token, + ContextProvider, Fn, IResource, Resource, Stack, Token, } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as ssm from './ssm.generated'; @@ -325,7 +325,7 @@ export class StringParameter extends ParameterBase implements IStringParameter { const stringValue = attrs.version ? new CfnDynamicReference(CfnDynamicReferenceService.SSM, `${attrs.parameterName}:${attrs.version}`).toString() - : new CfnParameter(scope as CompatConstruct, `${id}.Parameter`, { type: `AWS::SSM::Parameter::Value<${type}>`, default: attrs.parameterName }).valueAsString; + : new CfnParameter(scope, `${id}.Parameter`, { type: `AWS::SSM::Parameter::Value<${type}>`, default: attrs.parameterName }).valueAsString; class Import extends ParameterBase { public readonly parameterName = attrs.parameterName; @@ -361,7 +361,7 @@ export class StringParameter extends ParameterBase implements IStringParameter { * Requires that the stack this scope is defined in will have explicit * account/region information. Otherwise, it will fail during synthesis. */ - public static valueFromLookup(scope: CompatConstruct, parameterName: string): string { + public static valueFromLookup(scope: Construct, parameterName: string): string { const value = ContextProvider.getValue(scope, { provider: cxschema.ContextProvider.SSM_PARAMETER_PROVIDER, props: { parameterName }, diff --git a/packages/@aws-cdk/aws-ssm/package.json b/packages/@aws-cdk/aws-ssm/package.json index 7d70aea1bed99..43b5bdc958e03 100644 --- a/packages/@aws-cdk/aws-ssm/package.json +++ b/packages/@aws-cdk/aws-ssm/package.json @@ -86,7 +86,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,7 +94,7 @@ "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cloud-assembly-schema": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-sso/package.json b/packages/@aws-cdk/aws-sso/package.json index 563b4aa782e03..ea7aaa1d2c45b 100644 --- a/packages/@aws-cdk/aws-sso/package.json +++ b/packages/@aws-cdk/aws-sso/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index f76993a1d70f9..3176bf2829eb5 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -93,7 +93,7 @@ "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -115,7 +115,7 @@ "@aws-cdk/aws-sqs": "0.0.0", "@aws-cdk/aws-stepfunctions": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-stepfunctions/lib/state-machine-fragment.ts b/packages/@aws-cdk/aws-stepfunctions/lib/state-machine-fragment.ts index 929aed5b22219..91515ec034ec8 100644 --- a/packages/@aws-cdk/aws-stepfunctions/lib/state-machine-fragment.ts +++ b/packages/@aws-cdk/aws-stepfunctions/lib/state-machine-fragment.ts @@ -1,4 +1,4 @@ -import * as cdk from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { Chain } from './chain'; import { Parallel, ParallelProps } from './states/parallel'; import { State } from './states/state'; @@ -7,7 +7,7 @@ import { IChainable, INextable } from './types'; /** * Base class for reusable state machine fragments */ -export abstract class StateMachineFragment extends cdk.Construct implements IChainable { +export abstract class StateMachineFragment extends Construct implements IChainable { /** * The start state of this state machine fragment */ diff --git a/packages/@aws-cdk/aws-stepfunctions/lib/states/map.ts b/packages/@aws-cdk/aws-stepfunctions/lib/states/map.ts index e3f6e4800991f..ad188deb7e11d 100644 --- a/packages/@aws-cdk/aws-stepfunctions/lib/states/map.ts +++ b/packages/@aws-cdk/aws-stepfunctions/lib/states/map.ts @@ -168,7 +168,7 @@ export class Map extends State implements INextable { /** * Validate this state */ - protected validate(): string[] { + protected validateState(): string[] { const errors: string[] = []; if (this.iteration === undefined) { diff --git a/packages/@aws-cdk/aws-stepfunctions/lib/states/parallel.ts b/packages/@aws-cdk/aws-stepfunctions/lib/states/parallel.ts index 70ac5819a6888..a45ad6c03cd41 100644 --- a/packages/@aws-cdk/aws-stepfunctions/lib/states/parallel.ts +++ b/packages/@aws-cdk/aws-stepfunctions/lib/states/parallel.ts @@ -123,7 +123,7 @@ export class Parallel extends State implements INextable { /** * Validate this state */ - protected validate(): string[] { + protected validateState(): string[] { if (this.branches.length === 0) { return ['Parallel must have at least one branch']; } diff --git a/packages/@aws-cdk/aws-stepfunctions/lib/states/state.ts b/packages/@aws-cdk/aws-stepfunctions/lib/states/state.ts index c43a7bec159a8..3825907caf1bd 100644 --- a/packages/@aws-cdk/aws-stepfunctions/lib/states/state.ts +++ b/packages/@aws-cdk/aws-stepfunctions/lib/states/state.ts @@ -1,4 +1,3 @@ -import * as cdk from '@aws-cdk/core'; import { IConstruct, Construct, Node } from 'constructs'; import { Condition } from '../condition'; import { JsonPath } from '../fields'; @@ -60,7 +59,7 @@ export interface StateProps { /** * Base class for all other state classes */ -export abstract class State extends cdk.Construct implements IChainable { +export abstract class State extends Construct implements IChainable { /** * Add a prefix to the stateId of all States found in a construct tree */ @@ -184,6 +183,15 @@ export abstract class State extends cdk.Construct implements IChainable { this.parameters = props.parameters; this.outputPath = props.outputPath; this.resultPath = props.resultPath; + + this.node.addValidation({ validate: () => this.validateState() }); + } + + /** + * Allows the state to validate itself. + */ + protected validateState(): string[] { + return []; } public get id() { diff --git a/packages/@aws-cdk/aws-stepfunctions/package.json b/packages/@aws-cdk/aws-stepfunctions/package.json index 0ef74d8563dc6..81c0056c5c017 100644 --- a/packages/@aws-cdk/aws-stepfunctions/package.json +++ b/packages/@aws-cdk/aws-stepfunctions/package.json @@ -86,7 +86,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -95,7 +95,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-stepfunctions/test/states-language.test.ts b/packages/@aws-cdk/aws-stepfunctions/test/states-language.test.ts index 326bfeaf17ba1..b2f792bed9d5e 100644 --- a/packages/@aws-cdk/aws-stepfunctions/test/states-language.test.ts +++ b/packages/@aws-cdk/aws-stepfunctions/test/states-language.test.ts @@ -1,6 +1,6 @@ import '@aws-cdk/assert/jest'; import * as cdk from '@aws-cdk/core'; -import * as constructs from 'constructs'; +import { Construct } from 'constructs'; import * as stepfunctions from '../lib'; describe('States Language', () => { @@ -579,7 +579,7 @@ describe('States Language', () => { test('No duplicate state IDs', () => { // GIVEN const stack = new cdk.Stack(); - const intermediateParent = new cdk.Construct(stack, 'Parent'); + const intermediateParent = new Construct(stack, 'Parent'); const state1 = new stepfunctions.Pass(stack, 'State'); const state2 = new stepfunctions.Pass(intermediateParent, 'State'); @@ -593,7 +593,7 @@ describe('States Language', () => { test('No duplicate state IDs even across Parallel branches', () => { // GIVEN const stack = new cdk.Stack(); - const intermediateParent = new cdk.Construct(stack, 'Parent'); + const intermediateParent = new Construct(stack, 'Parent'); const state1 = new stepfunctions.Pass(stack, 'State'); const state2 = new stepfunctions.Pass(intermediateParent, 'State'); @@ -693,7 +693,7 @@ describe('States Language', () => { class ReusableStateMachine extends stepfunctions.StateMachineFragment { public readonly startState: stepfunctions.State; public readonly endStates: stepfunctions.INextable[]; - constructor(scope: constructs.Construct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id); const choice = new stepfunctions.Choice(this, 'Choice') @@ -710,7 +710,7 @@ class SimpleChain extends stepfunctions.StateMachineFragment { public readonly endStates: stepfunctions.INextable[]; private readonly task2: stepfunctions.Task; - constructor(scope: constructs.Construct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id); const task1 = new stepfunctions.Task(this, 'Task1', { task: new FakeTask() }); diff --git a/packages/@aws-cdk/aws-synthetics/lib/code.ts b/packages/@aws-cdk/aws-synthetics/lib/code.ts index dd75815098ec1..0fa8501a842ab 100644 --- a/packages/@aws-cdk/aws-synthetics/lib/code.ts +++ b/packages/@aws-cdk/aws-synthetics/lib/code.ts @@ -2,7 +2,7 @@ import * as fs from 'fs'; import * as path from 'path'; import * as s3 from '@aws-cdk/aws-s3'; import * as s3_assets from '@aws-cdk/aws-s3-assets'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * The code the canary should execute diff --git a/packages/@aws-cdk/aws-synthetics/package.json b/packages/@aws-cdk/aws-synthetics/package.json index c06839f8e31b8..2a4bc2170c834 100644 --- a/packages/@aws-cdk/aws-synthetics/package.json +++ b/packages/@aws-cdk/aws-synthetics/package.json @@ -88,7 +88,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-cloudwatch": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", @@ -96,7 +96,7 @@ "@aws-cdk/aws-s3-assets": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-cloudwatch": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-timestream/package.json b/packages/@aws-cdk/aws-timestream/package.json index 5cfd08a866836..c9c5c606d1361 100644 --- a/packages/@aws-cdk/aws-timestream/package.json +++ b/packages/@aws-cdk/aws-timestream/package.json @@ -82,10 +82,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-transfer/package.json b/packages/@aws-cdk/aws-transfer/package.json index 921d7ee77b2f2..5f30d3ad91603 100644 --- a/packages/@aws-cdk/aws-transfer/package.json +++ b/packages/@aws-cdk/aws-transfer/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-waf/package.json b/packages/@aws-cdk/aws-waf/package.json index 68dfc16fd7c03..907e68f31eb51 100644 --- a/packages/@aws-cdk/aws-waf/package.json +++ b/packages/@aws-cdk/aws-waf/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-wafregional/package.json b/packages/@aws-cdk/aws-wafregional/package.json index de61d94f9ef52..60f7c2052c232 100644 --- a/packages/@aws-cdk/aws-wafregional/package.json +++ b/packages/@aws-cdk/aws-wafregional/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-wafv2/package.json b/packages/@aws-cdk/aws-wafv2/package.json index 5622cf63b9ff4..f06a0b25d4d39 100644 --- a/packages/@aws-cdk/aws-wafv2/package.json +++ b/packages/@aws-cdk/aws-wafv2/package.json @@ -83,11 +83,11 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/aws-workspaces/package.json b/packages/@aws-cdk/aws-workspaces/package.json index 3cb02471c4d3b..4c14d7649c0d7 100644 --- a/packages/@aws-cdk/aws-workspaces/package.json +++ b/packages/@aws-cdk/aws-workspaces/package.json @@ -81,12 +81,12 @@ }, "dependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/cloudformation-include/lib/cfn-include.ts b/packages/@aws-cdk/cloudformation-include/lib/cfn-include.ts index 5a54d36aefcc8..22a8bdb2d5fdb 100644 --- a/packages/@aws-cdk/cloudformation-include/lib/cfn-include.ts +++ b/packages/@aws-cdk/cloudformation-include/lib/cfn-include.ts @@ -4,10 +4,6 @@ import { Construct } from 'constructs'; import * as cfn_type_to_l1_mapping from './cfn-type-to-l1-mapping'; import * as futils from './file-utils'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Construction properties of {@link CfnInclude}. */ @@ -118,7 +114,7 @@ export class CfnInclude extends core.CfnElement { } // instantiate the Mappings - this.mappingsScope = new CoreConstruct(this, '$Mappings'); + this.mappingsScope = new Construct(this, '$Mappings'); for (const mappingName of Object.keys(this.template.Mappings || {})) { this.createMapping(mappingName); } @@ -129,13 +125,13 @@ export class CfnInclude extends core.CfnElement { } // instantiate the conditions - this.conditionsScope = new CoreConstruct(this, '$Conditions'); + this.conditionsScope = new Construct(this, '$Conditions'); for (const conditionName of Object.keys(this.template.Conditions || {})) { this.getOrCreateCondition(conditionName); } // instantiate the rules - this.rulesScope = new CoreConstruct(this, '$Rules'); + this.rulesScope = new Construct(this, '$Rules'); for (const ruleName of Object.keys(this.template.Rules || {})) { this.createRule(ruleName); } @@ -153,12 +149,12 @@ export class CfnInclude extends core.CfnElement { } // instantiate the Hooks - this.hooksScope = new CoreConstruct(this, '$Hooks'); + this.hooksScope = new Construct(this, '$Hooks'); for (const hookName of Object.keys(this.template.Hooks || {})) { this.createHook(hookName); } - const outputScope = new CoreConstruct(this, '$Ouputs'); + const outputScope = new Construct(this, '$Ouputs'); for (const logicalId of Object.keys(this.template.Outputs || {})) { this.createOutput(logicalId, outputScope); } diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index 3c6bdf638b3cd..a697d0d80b041 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -206,7 +206,7 @@ "@aws-cdk/aws-workspaces": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/alexa-ask": "0.0.0", @@ -347,7 +347,7 @@ "@aws-cdk/aws-workspaces": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "devDependencies": { "@aws-cdk/assert": "0.0.0", diff --git a/packages/@aws-cdk/core/lib/annotations.ts b/packages/@aws-cdk/core/lib/annotations.ts index f46c830c25757..d82048cd9ac1b 100644 --- a/packages/@aws-cdk/core/lib/annotations.ts +++ b/packages/@aws-cdk/core/lib/annotations.ts @@ -1,4 +1,5 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; +import * as cxapi from '@aws-cdk/cx-api'; import { IConstruct, Node } from 'constructs'; const DEPRECATIONS_SYMBOL = Symbol.for('@aws-cdk/core.deprecations'); @@ -15,8 +16,14 @@ export class Annotations { return new Annotations(scope); } + private readonly stackTraces: boolean; + private constructor(private readonly scope: IConstruct) { + const disableTrace = + scope.node.tryGetContext(cxapi.DISABLE_METADATA_STACK_TRACE) || + process.env.CDK_DISABLE_STACK_TRACE; + this.stackTraces = !disableTrace; } /** @@ -89,7 +96,7 @@ export class Annotations { * @param message The message itself */ private addMessage(level: string, message: string) { - Node.of(this.scope).addMetadata(level, message); + Node.of(this.scope).addMetadata(level, message, { stackTrace: this.stackTraces }); } /** diff --git a/packages/@aws-cdk/core/lib/aspect.ts b/packages/@aws-cdk/core/lib/aspect.ts index bde33e6724e9e..23722878e1493 100644 --- a/packages/@aws-cdk/core/lib/aspect.ts +++ b/packages/@aws-cdk/core/lib/aspect.ts @@ -1,4 +1,4 @@ -import { IConstruct } from './construct-compat'; +import { IConstruct } from 'constructs'; const ASPECTS_SYMBOL = Symbol('cdk-aspects'); @@ -17,7 +17,6 @@ export interface IAspect { * synthesis. */ export class Aspects { - /** * Returns the `Aspects` object associated with a construct scope. * @param scope The scope for which these aspects will apply. @@ -25,7 +24,7 @@ export class Aspects { public static of(scope: IConstruct): Aspects { let aspects = (scope as any)[ASPECTS_SYMBOL]; if (!aspects) { - aspects = new Aspects(scope); + aspects = new Aspects(); Object.defineProperty(scope, ASPECTS_SYMBOL, { value: aspects, @@ -36,23 +35,24 @@ export class Aspects { return aspects; } - // TODO(2.0): private readonly _aspects = new Array(); - private constructor(private readonly scope: IConstruct) { } + private readonly _aspects: IAspect[]; + + private constructor() { + this._aspects = []; + } /** * Adds an aspect to apply this scope before synthesis. * @param aspect The aspect to add. */ public add(aspect: IAspect) { - // TODO(2.0): this._aspects.push(aspect); - this.scope.node._actualNode.applyAspect(aspect); + this._aspects.push(aspect); } /** * The list of aspects which were directly applied on this scope. */ - public get aspects(): IAspect[] { - // TODO(2.0): return [ ...this._aspects ]; - return [...(this.scope.node._actualNode as any)._aspects]; // clone + public get all(): IAspect[] { + return [...this._aspects]; } } \ No newline at end of file diff --git a/packages/@aws-cdk/core/lib/asset-staging.ts b/packages/@aws-cdk/core/lib/asset-staging.ts index 66c65e3d14864..52b10bc19cef8 100644 --- a/packages/@aws-cdk/core/lib/asset-staging.ts +++ b/packages/@aws-cdk/core/lib/asset-staging.ts @@ -13,10 +13,6 @@ import { Cache } from './private/cache'; import { Stack } from './stack'; import { Stage } from './stage'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from './construct-compat'; - /** * A previously staged asset */ @@ -60,7 +56,7 @@ export interface AssetStagingProps extends FingerprintOptions, AssetOptions { * The file/directory are staged based on their content hash (fingerprint). This * means that only if content was changed, copy will happen. */ -export class AssetStaging extends CoreConstruct { +export class AssetStaging extends Construct { /** * The directory inside the bundling container into which the asset sources will be mounted. * @experimental diff --git a/packages/@aws-cdk/core/lib/cfn-element.ts b/packages/@aws-cdk/core/lib/cfn-element.ts index 5e2cf1602c614..8d048452baf6f 100644 --- a/packages/@aws-cdk/core/lib/cfn-element.ts +++ b/packages/@aws-cdk/core/lib/cfn-element.ts @@ -1,9 +1,5 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { Construct, Node } from 'constructs'; - -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from './construct-compat'; import { Lazy } from './lazy'; const CFN_ELEMENT_SYMBOL = Symbol.for('@aws-cdk/core.CfnElement'); @@ -11,7 +7,7 @@ const CFN_ELEMENT_SYMBOL = Symbol.for('@aws-cdk/core.CfnElement'); /** * An element of a CloudFormation stack. */ -export abstract class CfnElement extends CoreConstruct { +export abstract class CfnElement extends Construct { /** * Returns `true` if a construct is a stack element (i.e. part of the * synthesized cloudformation template). @@ -64,7 +60,9 @@ export abstract class CfnElement extends CoreConstruct { displayHint: `${notTooLong(Node.of(this).path)}.LogicalID`, }); - Node.of(this).addMetadata(cxschema.ArtifactMetadataEntryType.LOGICAL_ID, this.logicalId, this.constructor); + this.node.addMetadata(cxschema.ArtifactMetadataEntryType.LOGICAL_ID, this.logicalId, { + traceFromFunction: this.constructor, + }); } /** diff --git a/packages/@aws-cdk/core/lib/cfn-json.ts b/packages/@aws-cdk/core/lib/cfn-json.ts index 0e5801ed8ade9..d3e6dadc3944d 100644 --- a/packages/@aws-cdk/core/lib/cfn-json.ts +++ b/packages/@aws-cdk/core/lib/cfn-json.ts @@ -7,10 +7,6 @@ import { IResolvable, IResolveContext } from './resolvable'; import { Stack } from './stack'; import { captureStackTrace } from './stack-trace'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from './construct-compat'; - export interface CfnJsonProps { /** * The value to resolve. Can be any JavaScript object, including tokens and @@ -33,7 +29,7 @@ export interface CfnJsonProps { * * This construct is backed by a custom resource. */ -export class CfnJson extends CoreConstruct implements IResolvable { +export class CfnJson extends Construct implements IResolvable { public readonly creationStack: string[] = []; /** diff --git a/packages/@aws-cdk/core/lib/cfn-output.ts b/packages/@aws-cdk/core/lib/cfn-output.ts index e296ecce34375..da1a81e507e75 100644 --- a/packages/@aws-cdk/core/lib/cfn-output.ts +++ b/packages/@aws-cdk/core/lib/cfn-output.ts @@ -57,6 +57,8 @@ export class CfnOutput extends CfnElement { this._value = props.value; this._condition = props.condition; this._exportName = props.exportName; + + this.node.addValidation({ validate: () => this.validateOutput() }); } /** @@ -164,7 +166,7 @@ export class CfnOutput extends CfnElement { }; } - protected validate(): string[] { + private validateOutput(): string[] { if (this._exportName && !Token.isUnresolved(this._exportName) && this._exportName.length > 255) { return [`Export name cannot exceed 255 characters (got ${this._exportName.length} characters)`]; } @@ -172,6 +174,7 @@ export class CfnOutput extends CfnElement { } } +/* eslint-disable import/order */ import { CfnCondition } from './cfn-condition'; import { Fn } from './cfn-fn'; import { Lazy } from './lazy'; diff --git a/packages/@aws-cdk/core/lib/cfn-pseudo.ts b/packages/@aws-cdk/core/lib/cfn-pseudo.ts index 7144b7edc2af1..98b59e193e98a 100644 --- a/packages/@aws-cdk/core/lib/cfn-pseudo.ts +++ b/packages/@aws-cdk/core/lib/cfn-pseudo.ts @@ -1,4 +1,4 @@ -import { Construct } from './construct-compat'; +import { Construct } from 'constructs'; import { CfnReference } from './private/cfn-reference'; import { Token } from './token'; diff --git a/packages/@aws-cdk/core/lib/construct-compat.ts b/packages/@aws-cdk/core/lib/construct-compat.ts deleted file mode 100644 index 76e95ad38071d..0000000000000 --- a/packages/@aws-cdk/core/lib/construct-compat.ts +++ /dev/null @@ -1,549 +0,0 @@ -/** - * Constructs compatibility layer. - * - * This file includes types that shadow types in the "constructs" module in - * order to allow backwards-compatiblity in the AWS CDK v1.0 release line. - * - * There are pretty ugly hacks here, which mostly involve downcasting types to - * adhere to legacy AWS CDK APIs. - * - * This file, in its entirety, is expected to be removed in v2.0. - */ - -import * as cxapi from '@aws-cdk/cx-api'; -import * as constructs from 'constructs'; -import { Annotations } from './annotations'; -import { IAspect, Aspects } from './aspect'; -import { IDependable } from './dependency'; -import { Token } from './token'; - -const ORIGINAL_CONSTRUCT_NODE_SYMBOL = Symbol.for('@aws-cdk/core.ConstructNode'); -const CONSTRUCT_SYMBOL = Symbol.for('@aws-cdk/core.Construct'); - -/** - * Represents a construct. - */ -export interface IConstruct extends constructs.IConstruct, IDependable { - /** - * The construct tree node for this construct. - */ - readonly node: ConstructNode; -} - -/** - * Represents a single session of synthesis. Passed into `Construct.synthesize()` methods. - */ -export interface ISynthesisSession { - /** - * The output directory for this synthesis session. - */ - outdir: string; - - /** - * Cloud assembly builder. - */ - assembly: cxapi.CloudAssemblyBuilder; -} - -/** - * Represents the building block of the construct graph. - * - * All constructs besides the root construct must be created within the scope of - * another construct. - */ -export class Construct extends constructs.Construct implements IConstruct { - /** - * Return whether the given object is a Construct - */ - public static isConstruct(x: any): x is Construct { - return typeof x === 'object' && x !== null && CONSTRUCT_SYMBOL in x; - } - - /** - * The construct tree node associated with this construct. - */ - public readonly node: ConstructNode; - - constructor(scope: constructs.Construct, id: string) { - super(scope, id, { - nodeFactory: { - createNode: (h: constructs.Construct, s: constructs.IConstruct, i: string) => - new ConstructNode(h as Construct, s as IConstruct, i)._actualNode, - }, - }); - - if (Token.isUnresolved(id)) { - throw new Error(`Cannot use tokens in construct ID: ${id}`); - } - - Object.defineProperty(this, CONSTRUCT_SYMBOL, { value: true }); - this.node = ConstructNode._unwrap(constructs.Node.of(this)); - - const disableTrace = - this.node.tryGetContext(cxapi.DISABLE_METADATA_STACK_TRACE) || - this.node.tryGetContext(constructs.ConstructMetadata.DISABLE_STACK_TRACE_IN_METADATA) || - process.env.CDK_DISABLE_STACK_TRACE; - - if (disableTrace) { - this.node.setContext(cxapi.DISABLE_METADATA_STACK_TRACE, true); - this.node.setContext(constructs.ConstructMetadata.DISABLE_STACK_TRACE_IN_METADATA, true); - process.env.CDK_DISABLE_STACK_TRACE = '1'; - } - } - - /** - * Validate the current construct. - * - * This method can be implemented by derived constructs in order to perform - * validation logic. It is called on all constructs before synthesis. - * - * @returns An array of validation error messages, or an empty array if the construct is valid. - */ - protected onValidate(): string[] { - return this.validate(); - } - - /** - * Perform final modifications before synthesis - * - * This method can be implemented by derived constructs in order to perform - * final changes before synthesis. prepare() will be called after child - * constructs have been prepared. - * - * This is an advanced framework feature. Only use this if you - * understand the implications. - */ - protected onPrepare(): void { - this.prepare(); - } - - /** - * Allows this construct to emit artifacts into the cloud assembly during synthesis. - * - * This method is usually implemented by framework-level constructs such as `Stack` and `Asset` - * as they participate in synthesizing the cloud assembly. - * - * @param session The synthesis session. - */ - protected onSynthesize(session: constructs.ISynthesisSession): void { - this.synthesize({ - outdir: session.outdir, - assembly: session.assembly!, - }); - } - - /** - * Validate the current construct. - * - * This method can be implemented by derived constructs in order to perform - * validation logic. It is called on all constructs before synthesis. - * - * @returns An array of validation error messages, or an empty array if the construct is valid. - */ - protected validate(): string[] { - return []; - } - - /** - * Perform final modifications before synthesis - * - * This method can be implemented by derived constructs in order to perform - * final changes before synthesis. prepare() will be called after child - * constructs have been prepared. - * - * This is an advanced framework feature. Only use this if you - * understand the implications. - */ - protected prepare(): void { - return; - } - - /** - * Allows this construct to emit artifacts into the cloud assembly during synthesis. - * - * This method is usually implemented by framework-level constructs such as `Stack` and `Asset` - * as they participate in synthesizing the cloud assembly. - * - * @param session The synthesis session. - */ - protected synthesize(session: ISynthesisSession): void { - ignore(session); - } -} - -/** - * In what order to return constructs - */ -export enum ConstructOrder { - /** - * Depth-first, pre-order - */ - PREORDER, - - /** - * Depth-first, post-order (leaf nodes first) - */ - POSTORDER -} - -/** - * Options for synthesis. - * - * @deprecated use `app.synth()` or `stage.synth()` instead - */ -export interface SynthesisOptions extends cxapi.AssemblyBuildOptions { - /** - * The output directory into which to synthesize the cloud assembly. - * @default - creates a temporary directory - */ - readonly outdir?: string; - - /** - * Whether synthesis should skip the validation phase. - * @default false - */ - readonly skipValidation?: boolean; -} - -/** - * Represents the construct node in the scope tree. - */ -export class ConstructNode { - /** - * Separator used to delimit construct path components. - */ - public static readonly PATH_SEP = '/'; - - /** - * Returns the wrapping `@aws-cdk/core.ConstructNode` instance from a `constructs.ConstructNode`. - * - * @internal - */ - public static _unwrap(c: constructs.Node): ConstructNode { - const x = (c as any)[ORIGINAL_CONSTRUCT_NODE_SYMBOL]; - if (!x) { - throw new Error('invalid ConstructNode type'); - } - - return x; - } - - /** - * Synthesizes a CloudAssembly from a construct tree. - * @param node The root of the construct tree. - * @param options Synthesis options. - * @deprecated Use `app.synth()` or `stage.synth()` instead - */ - public static synth(node: ConstructNode, options: SynthesisOptions = { }): cxapi.CloudAssembly { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const a: typeof import('././private/synthesis') = require('./private/synthesis'); - return a.synthesize(node.root, options); - } - - /** - * Invokes "prepare" on all constructs (depth-first, post-order) in the tree under `node`. - * @param node The root node - * @deprecated Use `app.synth()` instead - */ - public static prepare(node: ConstructNode) { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const p: typeof import('./private/prepare-app') = require('./private/prepare-app'); - p.prepareApp(node.root); // resolve cross refs and nested stack assets. - return node._actualNode.prepare(); - } - - /** - * Invokes "validate" on all constructs in the tree (depth-first, pre-order) and returns - * the list of all errors. An empty list indicates that there are no errors. - * - * @param node The root node - */ - public static validate(node: ConstructNode): ValidationError[] { - return node._actualNode.validate().map(e => ({ source: e.source as Construct, message: e.message })); - } - - /** - * @internal - */ - public readonly _actualNode: constructs.Node; - - /** - * The Construct class that hosts this API. - */ - private readonly host: Construct; - - constructor(host: Construct, scope: IConstruct, id: string) { - this.host = host; - this._actualNode = new constructs.Node(host, scope, id); - - // store a back reference on _actualNode so we can our ConstructNode from it - Object.defineProperty(this._actualNode, ORIGINAL_CONSTRUCT_NODE_SYMBOL, { - value: this, - configurable: false, - enumerable: false, - }); - } - - /** - * Returns the scope in which this construct is defined. - * - * The value is `undefined` at the root of the construct scope tree. - */ - public get scope(): IConstruct | undefined { - return this._actualNode.scope as IConstruct; - } - - /** - * The id of this construct within the current scope. - * - * This is a a scope-unique id. To obtain an app-unique id for this construct, use `uniqueId`. - */ - public get id() { return this._actualNode.id; } - - /** - * The full, absolute path of this construct in the tree. - * - * Components are separated by '/'. - */ - public get path(): string { return this._actualNode.path; } - - /** - * A tree-global unique alphanumeric identifier for this construct. Includes - * all components of the tree. - * - * @deprecated use `node.addr` to obtain a consistent 42 character address for - * this node (see https://github.com/aws/constructs/pull/314) - */ - public get uniqueId(): string { return this._actualNode.uniqueId; } - - /** - * Returns an opaque tree-unique address for this construct. - * - * Addresses are 42 characters hexadecimal strings. They begin with "c8" - * followed by 40 lowercase hexadecimal characters (0-9a-f). - * - * Addresses are calculated using a SHA-1 of the components of the construct - * path. - * - * To enable refactorings of construct trees, constructs with the ID `Default` - * will be excluded from the calculation. In those cases constructs in the - * same tree may have the same addreess. - * - * @example c83a2846e506bcc5f10682b564084bca2d275709ee - */ - public get addr(): string { return this._actualNode.addr; } - - /** - * Return a direct child by id, or undefined - * - * @param id Identifier of direct child - * @returns the child if found, or undefined - */ - public tryFindChild(id: string): IConstruct | undefined { return this._actualNode.tryFindChild(id) as IConstruct; } - - /** - * Return a direct child by id - * - * Throws an error if the child is not found. - * - * @param id Identifier of direct child - * @returns Child with the given id. - */ - public findChild(id: string): IConstruct { return this._actualNode.findChild(id) as IConstruct; } - - /** - * Returns the child construct that has the id `Default` or `Resource"`. - * This is usually the construct that provides the bulk of the underlying functionality. - * Useful for modifications of the underlying construct that are not available at the higher levels. - * - * @throws if there is more than one child - * @returns a construct or undefined if there is no default child - */ - public get defaultChild(): IConstruct | undefined { return this._actualNode.defaultChild as IConstruct; } - - /** - * Override the defaultChild property. - * - * This should only be used in the cases where the correct - * default child is not named 'Resource' or 'Default' as it - * should be. - * - * If you set this to undefined, the default behavior of finding - * the child named 'Resource' or 'Default' will be used. - */ - public set defaultChild(value: IConstruct | undefined) { this._actualNode.defaultChild = value; } - - /** - * All direct children of this construct. - */ - public get children(): IConstruct[] { return this._actualNode.children as IConstruct[]; } - - /** - * Return this construct and all of its children in the given order - */ - public findAll(order: ConstructOrder = ConstructOrder.PREORDER): IConstruct[] { return this._actualNode.findAll(order) as IConstruct[]; } - - /** - * This can be used to set contextual values. - * Context must be set before any children are added, since children may consult context info during construction. - * If the key already exists, it will be overridden. - * @param key The context key - * @param value The context value - */ - public setContext(key: string, value: any) { - if (Token.isUnresolved(key)) { - throw new Error('Invalid context key: context keys can\'t include tokens'); - } - this._actualNode.setContext(key, value); - } - - /** - * Retrieves a value from tree context. - * - * Context is usually initialized at the root, but can be overridden at any point in the tree. - * - * @param key The context key - * @returns The context value or `undefined` if there is no context value for the key. - */ - public tryGetContext(key: string): any { - if (Token.isUnresolved(key)) { - throw new Error('Invalid context key: context keys can\'t include tokens'); - } - return this._actualNode.tryGetContext(key); - } - - /** - * An immutable array of metadata objects associated with this construct. - * This can be used, for example, to implement support for deprecation notices, source mapping, etc. - */ - public get metadata() { return this._actualNode.metadata as cxapi.MetadataEntry[]; } - - /** - * Adds a metadata entry to this construct. - * Entries are arbitrary values and will also include a stack trace to allow tracing back to - * the code location for when the entry was added. It can be used, for example, to include source - * mapping in CloudFormation templates to improve diagnostics. - * - * @param type a string denoting the type of metadata - * @param data the value of the metadata (can be a Token). If null/undefined, metadata will not be added. - * @param fromFunction a function under which to restrict the metadata entry's stack trace (defaults to this.addMetadata) - */ - public addMetadata(type: string, data: any, fromFunction?: any): void { this._actualNode.addMetadata(type, data, fromFunction); } - - /** - * DEPRECATED: Adds a { "info": } metadata entry to this construct. - * The toolkit will display the info message when apps are synthesized. - * @param message The info message. - * @deprecated use `Annotations.of(construct).addInfo()` - */ - public addInfo(message: string): void { - Annotations.of(this.host).addInfo(message); - } - - /** - * DEPRECATED: Adds a { "warning": } metadata entry to this construct. - * The toolkit will display the warning when an app is synthesized, or fail - * if run in --strict mode. - * @param message The warning message. - * @deprecated use `Annotations.of(construct).addWarning()` - */ - public addWarning(message: string): void { - Annotations.of(this.host).addWarning(message); - } - - /** - * DEPRECATED: Adds an { "error": } metadata entry to this construct. - * The toolkit will fail synthesis when errors are reported. - * @param message The error message. - * @deprecated use `Annotations.of(construct).addError()` - */ - public addError(message: string) { - Annotations.of(this.host).addError(message); - } - - /** - * DEPRECATED: Applies the aspect to this Constructs node - * - * @deprecated This API is going to be removed in the next major version of - * the AWS CDK. Please use `Aspects.of(scope).add()` instead. - */ - public applyAspect(aspect: IAspect): void { - Annotations.of(this.host).addDeprecation('@aws-cdk/core.ConstructNode.applyAspect', 'Use "Aspects.of(construct).add(aspect)" instead'); - Aspects.of(this.host).add(aspect); - } - - /** - * All parent scopes of this construct. - * - * @returns a list of parent scopes. The last element in the list will always - * be the current construct and the first element will be the root of the - * tree. - */ - public get scopes(): IConstruct[] { return this._actualNode.scopes as IConstruct[]; } - - /** - * @returns The root of the construct tree. - */ - public get root(): IConstruct { return this._actualNode.root as IConstruct; } - - /** - * Returns true if this construct or the scopes in which it is defined are - * locked. - */ - public get locked() { return this._actualNode.locked; } - - /** - * Add an ordering dependency on another Construct. - * - * All constructs in the dependency's scope will be deployed before any - * construct in this construct's scope. - */ - public addDependency(...dependencies: IDependable[]) { this._actualNode.addDependency(...dependencies); } - - /** - * Return all dependencies registered on this node or any of its children - */ - public get dependencies(): Dependency[] { return this._actualNode.dependencies as Dependency[]; } - - /** - * Remove the child with the given name, if present. - * - * @returns Whether a child with the given name was deleted. - * @experimental - */ - public tryRemoveChild(childName: string): boolean { return this._actualNode.tryRemoveChild(childName); } -} - -/** - * An error returned during the validation phase. - */ -export interface ValidationError { - /** - * The construct which emitted the error. - */ - readonly source: Construct; - - /** - * The error message. - */ - readonly message: string; -} - -/** - * A single dependency - */ -export interface Dependency { - /** - * Source the dependency - */ - readonly source: IConstruct; - - /** - * Target of the dependency - */ - readonly target: IConstruct; -} - -function ignore(_x: any) { - return; -} diff --git a/packages/@aws-cdk/core/lib/custom-resource-provider/custom-resource-provider.ts b/packages/@aws-cdk/core/lib/custom-resource-provider/custom-resource-provider.ts index f7905fc51447b..585d46d1106c4 100644 --- a/packages/@aws-cdk/core/lib/custom-resource-provider/custom-resource-provider.ts +++ b/packages/@aws-cdk/core/lib/custom-resource-provider/custom-resource-provider.ts @@ -12,10 +12,6 @@ import { Token } from '../token'; const ENTRYPOINT_FILENAME = '__entrypoint__'; const ENTRYPOINT_NODEJS_SOURCE = path.join(__dirname, 'nodejs-entrypoint.js'); -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '../construct-compat'; - /** * Initialization properties for `CustomResourceProvider`. * @@ -86,7 +82,7 @@ export enum CustomResourceProviderRuntime { * * @experimental */ -export class CustomResourceProvider extends CoreConstruct { +export class CustomResourceProvider extends Construct { /** * Returns a stack-level singleton ARN (service token) for the custom resource * provider. diff --git a/packages/@aws-cdk/core/lib/dependency.ts b/packages/@aws-cdk/core/lib/dependency.ts index 382d5acae0a61..6e5c775958b9d 100644 --- a/packages/@aws-cdk/core/lib/dependency.ts +++ b/packages/@aws-cdk/core/lib/dependency.ts @@ -1,4 +1,4 @@ -import { IConstruct } from './construct-compat'; +import { IConstruct } from 'constructs'; /** * Trait marker for classes that can be depended upon diff --git a/packages/@aws-cdk/core/lib/feature-flags.ts b/packages/@aws-cdk/core/lib/feature-flags.ts index 924283af30fcc..ea8aba2e81f0a 100644 --- a/packages/@aws-cdk/core/lib/feature-flags.ts +++ b/packages/@aws-cdk/core/lib/feature-flags.ts @@ -1,5 +1,5 @@ import * as cxapi from '@aws-cdk/cx-api'; -import { Construct } from '../lib/construct-compat'; +import { Construct } from 'constructs'; /** * Features that are implemented behind a flag in order to preserve backwards diff --git a/packages/@aws-cdk/core/lib/index.ts b/packages/@aws-cdk/core/lib/index.ts index 4aa0cda188201..2cad352835973 100644 --- a/packages/@aws-cdk/core/lib/index.ts +++ b/packages/@aws-cdk/core/lib/index.ts @@ -1,7 +1,6 @@ export * from './aspect'; export * from './tag-aspect'; -export * from './construct-compat'; export * from './token'; export * from './resolvable'; export * from './lazy'; diff --git a/packages/@aws-cdk/core/lib/names.ts b/packages/@aws-cdk/core/lib/names.ts index 03998fcebe902..bd89da5dd6bad 100644 --- a/packages/@aws-cdk/core/lib/names.ts +++ b/packages/@aws-cdk/core/lib/names.ts @@ -1,5 +1,4 @@ import { Construct, Node } from 'constructs'; -import { ConstructNode } from './construct-compat'; import { makeUniqueId } from './private/uniqueid'; /** @@ -31,8 +30,8 @@ export class Names { * @param node The construct node * @returns a unique id based on the construct path */ - public static nodeUniqueId(node: ConstructNode): string { - const components = node.scopes.slice(1).map(c => c.node.id); + public static nodeUniqueId(node: Node): string { + const components = node.scopes.slice(1).map(c => Node.of(c).id); return components.length > 0 ? makeUniqueId(components) : ''; } diff --git a/packages/@aws-cdk/core/lib/nested-stack.ts b/packages/@aws-cdk/core/lib/nested-stack.ts index f130d00ded80b..873d2983c7def 100644 --- a/packages/@aws-cdk/core/lib/nested-stack.ts +++ b/packages/@aws-cdk/core/lib/nested-stack.ts @@ -13,10 +13,6 @@ import { Stack } from './stack'; import { NestedStackSynthesizer } from './stack-synthesizers'; import { Token } from './token'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from './construct-compat'; - const NESTED_STACK_SYMBOL = Symbol.for('@aws-cdk/core.NestedStack'); /** @@ -109,8 +105,7 @@ export class NestedStack extends Stack { this._parentStack = parentStack; - // @deprecate: remove this in v2.0 (redundent) - const parentScope = new CoreConstruct(scope, id + '.NestedStack'); + const parentScope = new Construct(scope, id + '.NestedStack'); Object.defineProperty(this, NESTED_STACK_SYMBOL, { value: true }); diff --git a/packages/@aws-cdk/core/lib/private/asset-parameters.ts b/packages/@aws-cdk/core/lib/private/asset-parameters.ts index e72eee27462b0..90153a2cfce1e 100644 --- a/packages/@aws-cdk/core/lib/private/asset-parameters.ts +++ b/packages/@aws-cdk/core/lib/private/asset-parameters.ts @@ -1,5 +1,5 @@ +import { Construct } from 'constructs'; import { CfnParameter } from '../cfn-parameter'; -import { Construct } from '../construct-compat'; export class FileAssetParameters extends Construct { public readonly bucketNameParameter: CfnParameter; diff --git a/packages/@aws-cdk/core/lib/private/cfn-reference.ts b/packages/@aws-cdk/core/lib/private/cfn-reference.ts index 34c3da0138ae8..ba4da752e1b9d 100644 --- a/packages/@aws-cdk/core/lib/private/cfn-reference.ts +++ b/packages/@aws-cdk/core/lib/private/cfn-reference.ts @@ -1,3 +1,4 @@ +/* eslint-disable import/order */ import { Reference } from '../reference'; const CFN_REFERENCE_SYMBOL = Symbol.for('@aws-cdk/core.CfnReference'); @@ -174,8 +175,8 @@ export class CfnReference extends Reference { } } +import { Construct, IConstruct } from 'constructs'; import { CfnElement } from '../cfn-element'; -import { Construct, IConstruct } from '../construct-compat'; import { IResolvable, IResolveContext } from '../resolvable'; import { Stack } from '../stack'; import { Token } from '../token'; diff --git a/packages/@aws-cdk/core/lib/private/cfn-utils-provider.ts b/packages/@aws-cdk/core/lib/private/cfn-utils-provider.ts index dae7253720041..bd672ac9b5fc9 100644 --- a/packages/@aws-cdk/core/lib/private/cfn-utils-provider.ts +++ b/packages/@aws-cdk/core/lib/private/cfn-utils-provider.ts @@ -1,4 +1,4 @@ -import { Construct } from '../construct-compat'; +import { Construct } from 'constructs'; import { CustomResourceProvider, CustomResourceProviderRuntime } from '../custom-resource-provider'; /** diff --git a/packages/@aws-cdk/core/lib/private/metadata-resource.ts b/packages/@aws-cdk/core/lib/private/metadata-resource.ts index ff84b931f819b..53b8217a81f88 100644 --- a/packages/@aws-cdk/core/lib/private/metadata-resource.ts +++ b/packages/@aws-cdk/core/lib/private/metadata-resource.ts @@ -1,10 +1,10 @@ import * as cxapi from '@aws-cdk/cx-api'; import { RegionInfo } from '@aws-cdk/region-info'; +import { Construct } from 'constructs'; import { CfnCondition } from '../cfn-condition'; import { Fn } from '../cfn-fn'; import { Aws } from '../cfn-pseudo'; import { CfnResource } from '../cfn-resource'; -import { Construct } from '../construct-compat'; import { Lazy } from '../lazy'; import { Stack } from '../stack'; import { Token } from '../token'; diff --git a/packages/@aws-cdk/core/lib/private/prepare-app.ts b/packages/@aws-cdk/core/lib/private/prepare-app.ts index e90a40ff211f8..7e1959b4a4293 100644 --- a/packages/@aws-cdk/core/lib/private/prepare-app.ts +++ b/packages/@aws-cdk/core/lib/private/prepare-app.ts @@ -1,6 +1,5 @@ -import { ConstructOrder } from 'constructs'; +import { ConstructOrder, Dependable, IConstruct } from 'constructs'; import { CfnResource } from '../cfn-resource'; -import { IConstruct } from '../construct-compat'; import { Stack } from '../stack'; import { Stage } from '../stage'; import { resolveReferences } from './refs'; @@ -17,7 +16,7 @@ import { resolveReferences } from './refs'; */ export function prepareApp(root: IConstruct) { // apply dependencies between resources in depending subtrees - for (const dependency of root.node.dependencies) { + for (const dependency of findTransitiveDeps(root)) { const targetCfnResources = findCfnResources(dependency.target); const sourceCfnResources = findCfnResources(dependency.source); @@ -103,3 +102,33 @@ function findCfnResources(root: IConstruct): CfnResource[] { interface INestedStackPrivateApi { _prepareTemplateAsset(): boolean; } + +/** + * Return all dependencies registered on this node or any of its children + */ +function findTransitiveDeps(root: IConstruct): Dependency[] { + const found = new Map>(); // Deduplication map + const ret = new Array(); + + for (const source of root.node.findAll()) { + for (const dependable of source.node.dependencies) { + for (const target of Dependable.of(dependable).dependencyRoots) { + let foundTargets = found.get(source); + if (!foundTargets) { found.set(source, foundTargets = new Set()); } + + if (!foundTargets.has(target)) { + ret.push({ source, target }); + foundTargets.add(target); + } + } + } + } + + return ret; +} + + +interface Dependency { + readonly source: IConstruct; + readonly target: IConstruct; +} diff --git a/packages/@aws-cdk/core/lib/private/refs.ts b/packages/@aws-cdk/core/lib/private/refs.ts index 46d44563b4a96..5c5d13e38fadb 100644 --- a/packages/@aws-cdk/core/lib/private/refs.ts +++ b/packages/@aws-cdk/core/lib/private/refs.ts @@ -3,10 +3,10 @@ // ---------------------------------------------------- import * as cxapi from '@aws-cdk/cx-api'; +import { Construct, IConstruct } from 'constructs'; import { CfnElement } from '../cfn-element'; import { CfnOutput } from '../cfn-output'; import { CfnParameter } from '../cfn-parameter'; -import { Construct, IConstruct } from '../construct-compat'; import { FeatureFlags } from '../feature-flags'; import { Names } from '../names'; import { Reference } from '../reference'; diff --git a/packages/@aws-cdk/core/lib/private/resolve.ts b/packages/@aws-cdk/core/lib/private/resolve.ts index d6ae73cdb8796..a1308f7f8f81f 100644 --- a/packages/@aws-cdk/core/lib/private/resolve.ts +++ b/packages/@aws-cdk/core/lib/private/resolve.ts @@ -4,10 +4,6 @@ import { TokenizedStringFragments } from '../string-fragments'; import { containsListTokenElement, TokenString, unresolved } from './encoding'; import { TokenMap } from './token-map'; -// v2 - leave this as a separate section so it reduces merge conflicts when compat is removed -// eslint-disable-next-line import/order -import { IConstruct as ICoreConstruct } from '../construct-compat'; - // This file should not be exported to consumers, resolving should happen through Construct.resolve() const tokenMap = TokenMap.instance(); @@ -48,7 +44,7 @@ export function resolve(obj: any, options: IResolveOptions): any { const context: IResolveContext = { preparing: options.preparing, - scope: options.scope as ICoreConstruct, + scope: options.scope as IConstruct, registerPostProcessor(pp) { postProcessor = pp; }, resolve(x: any) { return resolve(x, { ...options, prefix: newPrefix }); }, }; diff --git a/packages/@aws-cdk/core/lib/private/synthesis.ts b/packages/@aws-cdk/core/lib/private/synthesis.ts index bcc6ddc94dbc8..6100c2e1c082a 100644 --- a/packages/@aws-cdk/core/lib/private/synthesis.ts +++ b/packages/@aws-cdk/core/lib/private/synthesis.ts @@ -1,14 +1,24 @@ import * as cxapi from '@aws-cdk/cx-api'; -import * as constructs from 'constructs'; +import { IConstruct } from 'constructs'; import { Annotations } from '../annotations'; import { Aspects, IAspect } from '../aspect'; -import { Construct, IConstruct, SynthesisOptions, ValidationError } from '../construct-compat'; import { Stack } from '../stack'; import { Stage, StageSynthesisOptions } from '../stage'; import { MetadataResource } from './metadata-resource'; import { prepareApp } from './prepare-app'; import { TreeMetadata } from './tree-metadata'; +/** + * Options for `synthesize()` + */ +export interface SynthesisOptions extends StageSynthesisOptions { + /** + * The output directory into which to synthesize the cloud assembly. + * @default - creates a temporary directory + */ + readonly outdir?: string; +} + export function synthesize(root: IConstruct, options: SynthesisOptions = { }): cxapi.CloudAssembly { // we start by calling "synth" on all nested assemblies (which will take care of all their children) synthNestedAssemblies(root, options); @@ -17,9 +27,6 @@ export function synthesize(root: IConstruct, options: SynthesisOptions = { }): c injectMetadataResources(root); - // This is mostly here for legacy purposes as the framework itself does not use prepare anymore. - prepareTree(root); - // resolve references prepareApp(root); @@ -68,11 +75,11 @@ function invokeAspects(root: IConstruct) { let nestedAspectWarning = false; recurse(root, []); - function recurse(construct: IConstruct, inheritedAspects: constructs.IAspect[]) { + function recurse(construct: IConstruct, inheritedAspects: IAspect[]) { const node = construct.node; const aspects = Aspects.of(construct); - const allAspectsHere = [...inheritedAspects ?? [], ...aspects.aspects]; - const nodeAspectsCount = aspects.aspects.length; + const allAspectsHere = [...inheritedAspects ?? [], ...aspects.all]; + const nodeAspectsCount = aspects.all.length; for (const aspect of allAspectsHere) { let invoked = invokedByPath[node.path]; if (!invoked) { @@ -85,7 +92,7 @@ function invokeAspects(root: IConstruct) { // if an aspect was added to the node while invoking another aspect it will not be invoked, emit a warning // the `nestedAspectWarning` flag is used to prevent the warning from being emitted for every child - if (!nestedAspectWarning && nodeAspectsCount !== aspects.aspects.length) { + if (!nestedAspectWarning && nodeAspectsCount !== aspects.all.length) { Annotations.of(construct).addWarning('We detected an Aspect was added via another Aspect, and will not be applied'); nestedAspectWarning = true; } @@ -102,15 +109,6 @@ function invokeAspects(root: IConstruct) { } } -/** - * Prepare all constructs in the given construct tree in post-order. - * - * Stop at Assembly boundaries. - */ -function prepareTree(root: IConstruct) { - visit(root, 'post', construct => construct.onPrepare()); -} - /** * Find all stacks and add Metadata Resources to all of them * @@ -158,13 +156,14 @@ function synthesizeTree(root: IConstruct, builder: cxapi.CloudAssemblyBuilder) { } else if (construct instanceof TreeMetadata) { construct._synthesizeTree(session); } - - // this will soon be deprecated and removed in 2.x - // see https://github.com/aws/aws-cdk-rfcs/issues/192 - construct.onSynthesize(session); }); } +interface ValidationError { + readonly message: string; + readonly source: IConstruct; +} + /** * Validate all constructs in the given construct tree */ @@ -172,8 +171,8 @@ function validateTree(root: IConstruct) { const errors = new Array(); visit(root, 'pre', construct => { - for (const message of construct.onValidate()) { - errors.push({ message, source: construct as unknown as Construct }); + for (const message of construct.node.validate()) { + errors.push({ message, source: construct }); } }); @@ -186,9 +185,9 @@ function validateTree(root: IConstruct) { /** * Visit the given construct tree in either pre or post order, stopping at Assemblies */ -function visit(root: IConstruct, order: 'pre' | 'post', cb: (x: IProtectedConstructMethods) => void) { +function visit(root: IConstruct, order: 'pre' | 'post', cb: (x: IConstruct) => void) { if (order === 'pre') { - cb(root as IProtectedConstructMethods); + cb(root); } for (const child of root.node.children) { @@ -197,28 +196,6 @@ function visit(root: IConstruct, order: 'pre' | 'post', cb: (x: IProtectedConstr } if (order === 'post') { - cb(root as IProtectedConstructMethods); + cb(root); } } - -/** - * Interface which provides access to special methods of Construct - * - * @experimental - */ -interface IProtectedConstructMethods extends IConstruct { - /** - * Method that gets called when a construct should synthesize itself to an assembly - */ - onSynthesize(session: constructs.ISynthesisSession): void; - - /** - * Method that gets called to validate a construct - */ - onValidate(): string[]; - - /** - * Method that gets called to prepare a construct - */ - onPrepare(): void; -} diff --git a/packages/@aws-cdk/core/lib/private/tree-metadata.ts b/packages/@aws-cdk/core/lib/private/tree-metadata.ts index eb18252a0e8bd..1327afd98699e 100644 --- a/packages/@aws-cdk/core/lib/private/tree-metadata.ts +++ b/packages/@aws-cdk/core/lib/private/tree-metadata.ts @@ -2,9 +2,10 @@ import * as fs from 'fs'; import * as path from 'path'; import { ArtifactType } from '@aws-cdk/cloud-assembly-schema'; +import { Construct, IConstruct } from 'constructs'; import { Annotations } from '../annotations'; -import { Construct, IConstruct, ISynthesisSession } from '../construct-compat'; import { Stack } from '../stack'; +import { ISynthesisSession } from '../stack-synthesizers'; import { IInspectable, TreeInspector } from '../tree'; const FILE_PATH = 'tree.json'; diff --git a/packages/@aws-cdk/core/lib/reference.ts b/packages/@aws-cdk/core/lib/reference.ts index affb5588fd797..ae72c3fed9d82 100644 --- a/packages/@aws-cdk/core/lib/reference.ts +++ b/packages/@aws-cdk/core/lib/reference.ts @@ -1,3 +1,4 @@ +import { IConstruct } from 'constructs'; import { Intrinsic } from './private/intrinsic'; const REFERENCE_SYMBOL = Symbol.for('@aws-cdk/core.Reference'); @@ -26,4 +27,3 @@ export abstract class Reference extends Intrinsic { } } -import { IConstruct } from './construct-compat'; diff --git a/packages/@aws-cdk/core/lib/resolvable.ts b/packages/@aws-cdk/core/lib/resolvable.ts index 2ddbd544ffbbb..495719e602f22 100644 --- a/packages/@aws-cdk/core/lib/resolvable.ts +++ b/packages/@aws-cdk/core/lib/resolvable.ts @@ -1,4 +1,4 @@ -import { IConstruct } from './construct-compat'; +import { IConstruct } from 'constructs'; import { TokenString } from './private/encoding'; import { TokenMap } from './private/token-map'; import { TokenizedStringFragments } from './string-fragments'; diff --git a/packages/@aws-cdk/core/lib/resource.ts b/packages/@aws-cdk/core/lib/resource.ts index 917a2c442dcf1..5d02d455f20f3 100644 --- a/packages/@aws-cdk/core/lib/resource.ts +++ b/packages/@aws-cdk/core/lib/resource.ts @@ -1,8 +1,4 @@ -// v2 - leave this as a separate section so it reduces merge conflicts when compat is removed -// eslint-disable-next-line import/order -import { IConstruct, Construct as CoreConstruct } from './construct-compat'; - -import { Construct } from 'constructs'; +import { Construct, IConstruct } from 'constructs'; import { ArnComponents } from './arn'; import { Lazy } from './lazy'; import { generatePhysicalName, isGeneratedWhenNeededMarker } from './private/physical-name-generator'; @@ -90,7 +86,7 @@ export interface ResourceProps { /** * A construct which represents an AWS resource. */ -export abstract class Resource extends CoreConstruct implements IResource { +export abstract class Resource extends Construct implements IResource { public readonly stack: Stack; public readonly env: ResourceEnvironment; diff --git a/packages/@aws-cdk/core/lib/runtime.ts b/packages/@aws-cdk/core/lib/runtime.ts index 390708db3eccb..22f871e4d25c0 100644 --- a/packages/@aws-cdk/core/lib/runtime.ts +++ b/packages/@aws-cdk/core/lib/runtime.ts @@ -1,4 +1,4 @@ -import { Construct } from './construct-compat'; +import { Construct } from 'constructs'; // ---------------------------------------------------------------------- // PROPERTY MAPPERS diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/_shared.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/_shared.ts index 233490968b31d..24640a8378fe2 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/_shared.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/_shared.ts @@ -1,7 +1,8 @@ import * as crypto from 'crypto'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; -import { ConstructNode, IConstruct, ISynthesisSession } from '../construct-compat'; +import { Node, IConstruct } from 'constructs'; import { Stack } from '../stack'; +import { ISynthesisSession } from './types'; /** * Shared logic of writing stack artifact to the Cloud Assembly @@ -79,7 +80,7 @@ function collectStackMetadata(stack: Stack) { if (node.node.metadata.length > 0) { // Make the path absolute - output[ConstructNode.PATH_SEP + node.node.path] = node.node.metadata.map(md => stack.resolve(md) as cxschema.MetadataEntry); + output[Node.PATH_SEP + node.node.path] = node.node.metadata.map(md => stack.resolve(md) as cxschema.MetadataEntry); } for (const child of node.node.children) { diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/bootstrapless-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/bootstrapless-synthesizer.ts index 16ea69c1b2302..03191a3c774c7 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/bootstrapless-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/bootstrapless-synthesizer.ts @@ -1,7 +1,7 @@ import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource } from '../assets'; -import { ISynthesisSession } from '../construct-compat'; import { assertBound } from './_shared'; import { DefaultStackSynthesizer } from './default-synthesizer'; +import { ISynthesisSession } from './types'; /** * Construction properties of {@link BootstraplessSynthesizer}. diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts index 929338f8fbc05..ff65503081b9e 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts @@ -6,11 +6,11 @@ import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, Fi import { Fn } from '../cfn-fn'; import { CfnParameter } from '../cfn-parameter'; import { CfnRule } from '../cfn-rule'; -import { ISynthesisSession } from '../construct-compat'; import { Stack } from '../stack'; import { Token } from '../token'; import { assertBound, contentHash } from './_shared'; import { StackSynthesizer } from './stack-synthesizer'; +import { ISynthesisSession } from './types'; export const BOOTSTRAP_QUALIFIER_CONTEXT = '@aws-cdk/core:bootstrapQualifier'; diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts index e6dfd63235b8c..9575089e0adf5 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts @@ -1,12 +1,13 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource } from '../assets'; import { Fn } from '../cfn-fn'; -import { Construct, ISynthesisSession } from '../construct-compat'; import { FileAssetParameters } from '../private/asset-parameters'; import { Stack } from '../stack'; import { assertBound } from './_shared'; import { StackSynthesizer } from './stack-synthesizer'; +import { ISynthesisSession } from './types'; /** * The well-known name for the docker image asset ECR repository. All docker diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts index 8eb05d34cba9e..ab6205e92ee47 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/nested.ts @@ -1,9 +1,8 @@ import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource } from '../assets'; -import { ISynthesisSession } from '../construct-compat'; import { Stack } from '../stack'; import { assertBound } from './_shared'; import { StackSynthesizer } from './stack-synthesizer'; -import { IStackSynthesizer } from './types'; +import { IStackSynthesizer, ISynthesisSession } from './types'; /** * Deployment environment for a nested stack diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/stack-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/stack-synthesizer.ts index fde6ed053059e..683a8e0d4200a 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/stack-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/stack-synthesizer.ts @@ -1,8 +1,7 @@ import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource } from '../assets'; -import { ISynthesisSession } from '../construct-compat'; import { Stack } from '../stack'; import { addStackArtifactToAssembly } from './_shared'; -import { IStackSynthesizer } from './types'; +import { IStackSynthesizer, ISynthesisSession } from './types'; /** * Base class for implementing an IStackSynthesizer diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/types.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/types.ts index 425aee7b7af5a..524cff35607ef 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/types.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/types.ts @@ -1,5 +1,5 @@ +import { CloudAssemblyBuilder } from '@aws-cdk/cx-api'; import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetSource } from '../assets'; -import { ISynthesisSession } from '../construct-compat'; import { Stack } from '../stack'; /** @@ -32,3 +32,18 @@ export interface IStackSynthesizer { */ synthesize(session: ISynthesisSession): void; } + +/** + * Represents a single session of synthesis. Passed into `Construct.synthesize()` methods. + */ +export interface ISynthesisSession { + /** + * The output directory for this synthesis session. + */ + outdir: string; + + /** + * Cloud assembly builder. + */ + assembly: CloudAssemblyBuilder; +} diff --git a/packages/@aws-cdk/core/lib/stack.ts b/packages/@aws-cdk/core/lib/stack.ts index e1664e2996a90..38fe5f99af808 100644 --- a/packages/@aws-cdk/core/lib/stack.ts +++ b/packages/@aws-cdk/core/lib/stack.ts @@ -11,7 +11,6 @@ import { CfnElement } from './cfn-element'; import { Fn } from './cfn-fn'; import { Aws, ScopedAws } from './cfn-pseudo'; import { CfnResource, TagType } from './cfn-resource'; -import { ISynthesisSession } from './construct-compat'; import { ContextProvider } from './context-provider'; import { Environment } from './environment'; import { FeatureFlags } from './feature-flags'; @@ -20,10 +19,6 @@ import { LogicalIDs } from './private/logical-id'; import { resolve } from './private/resolve'; import { makeUniqueId } from './private/uniqueid'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from './construct-compat'; - const STACK_SYMBOL = Symbol.for('@aws-cdk/core.Stack'); const MY_STACK_CACHE = Symbol.for('@aws-cdk/core.Stack.myStack'); @@ -144,7 +139,7 @@ export interface StackProps { /** * A root construct which represents a single CloudFormation stack. */ -export class Stack extends CoreConstruct implements ITaggable { +export class Stack extends Construct implements ITaggable { /** * Return whether the given object is a Stack. * @@ -1118,18 +1113,22 @@ function makeStackName(components: string[]) { return makeUniqueId(components); } + +interface StackDependency { + stack: Stack; + reasons: string[]; +} + + // These imports have to be at the end to prevent circular imports +/* eslint-disable import/order */ + import { addDependency } from './deps'; import { Reference } from './reference'; import { IResolvable } from './resolvable'; -import { DefaultStackSynthesizer, IStackSynthesizer, LegacyStackSynthesizer } from './stack-synthesizers'; +import { DefaultStackSynthesizer, IStackSynthesizer, ISynthesisSession, LegacyStackSynthesizer } from './stack-synthesizers'; import { Stage } from './stage'; import { ITaggable, TagManager } from './tag-manager'; import { Token } from './token'; import { FileSystem } from './fs'; import { Names } from './names'; - -interface StackDependency { - stack: Stack; - reasons: string[]; -} diff --git a/packages/@aws-cdk/core/lib/stage.ts b/packages/@aws-cdk/core/lib/stage.ts index fd93f4251bf7f..5f7acbc2ee25a 100644 --- a/packages/@aws-cdk/core/lib/stage.ts +++ b/packages/@aws-cdk/core/lib/stage.ts @@ -3,10 +3,6 @@ import { IConstruct, Construct, Node } from 'constructs'; import { Environment } from './environment'; import { synthesize } from './private/synthesis'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from './construct-compat'; - const STAGE_SYMBOL = Symbol.for('@aws-cdk/core.Stage'); /** @@ -70,7 +66,7 @@ export interface StageProps { * copies of your application which should be be deployed to different * environments. */ -export class Stage extends CoreConstruct { +export class Stage extends Construct { /** * Return the stage this construct is contained with, if available. If called * on a nested stage, returns its parent. diff --git a/packages/@aws-cdk/core/lib/tag-aspect.ts b/packages/@aws-cdk/core/lib/tag-aspect.ts index d56c28b551d87..722da77e63f44 100644 --- a/packages/@aws-cdk/core/lib/tag-aspect.ts +++ b/packages/@aws-cdk/core/lib/tag-aspect.ts @@ -1,7 +1,6 @@ -// import * as cxapi from '@aws-cdk/cx-api'; +import { Construct, IConstruct } from 'constructs'; import { Annotations } from './annotations'; import { IAspect, Aspects } from './aspect'; -import { Construct, IConstruct } from './construct-compat'; import { ITaggable, TagManager } from './tag-manager'; /** diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index a3ea497a26143..2de03979cd605 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -195,7 +195,7 @@ "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/region-info": "0.0.0", "@balena/dockerignore": "^1.0.2", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "fs-extra": "^9.0.1", "ignore": "^5.1.8", "minimatch": "^3.0.4" @@ -211,7 +211,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "@aws-cdk/region-info": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/core/test/annotations.test.ts b/packages/@aws-cdk/core/test/annotations.test.ts index 1b0cbf209c528..6e9d1b03340cc 100644 --- a/packages/@aws-cdk/core/test/annotations.test.ts +++ b/packages/@aws-cdk/core/test/annotations.test.ts @@ -1,6 +1,7 @@ import { CloudAssembly } from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { Construct, App, Stack } from '../lib'; +import { App, Stack } from '../lib'; import { Annotations } from '../lib/annotations'; const restore = process.env.CDK_BLOCK_DEPRECATIONS; @@ -19,13 +20,13 @@ nodeunitShim({ // WHEN delete process.env.CDK_BLOCK_DEPRECATIONS; - Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); + Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); // THEN test.deepEqual(getWarnings(app.synth()), [ { path: '/MyStack/Hello', - message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-cdk.Construct.construct instead. This API will be removed in the next major release', + message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-Construct.construct instead. This API will be removed in the next major release', }, ]); test.done(); @@ -42,26 +43,26 @@ nodeunitShim({ // WHEN delete process.env.CDK_BLOCK_DEPRECATIONS; - Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); - Annotations.of(c2).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); - Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); - Annotations.of(c3).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); - Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); - Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-cdk.Construct.construct instead'); + Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); + Annotations.of(c2).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); + Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); + Annotations.of(c3).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); + Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); + Annotations.of(c1).addDeprecation('@aws-cdk/core.Construct.node', 'use @aws-Construct.construct instead'); // THEN test.deepEqual(getWarnings(app.synth()), [ { path: '/MyStack1/Hello', - message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-cdk.Construct.construct instead. This API will be removed in the next major release', + message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-Construct.construct instead. This API will be removed in the next major release', }, { path: '/MyStack1/World', - message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-cdk.Construct.construct instead. This API will be removed in the next major release', + message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-Construct.construct instead. This API will be removed in the next major release', }, { path: '/MyStack2/FooBar', - message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-cdk.Construct.construct instead. This API will be removed in the next major release', + message: 'The API @aws-cdk/core.Construct.node is deprecated: use @aws-Construct.construct instead. This API will be removed in the next major release', }, ]); test.done(); diff --git a/packages/@aws-cdk/core/test/app.test.ts b/packages/@aws-cdk/core/test/app.test.ts index 69486987f0085..89323365f298d 100644 --- a/packages/@aws-cdk/core/test/app.test.ts +++ b/packages/@aws-cdk/core/test/app.test.ts @@ -1,7 +1,8 @@ import { ContextProvider } from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { CfnResource, Construct, Stack, StackProps } from '../lib'; +import { CfnResource, Stack, StackProps } from '../lib'; import { Annotations } from '../lib/annotations'; import { App, AppProps } from '../lib/app'; import { MetadataResource } from '../lib/private/metadata-resource'; @@ -172,8 +173,10 @@ nodeunitShim({ 'app.synth() performs validation first and if there are errors, it returns the errors'(test: Test) { class Child extends Construct { - protected validate() { - return [`Error from ${this.node.id}`]; + constructor(scope: Construct, id: string) { + super(scope, id); + + this.node.addValidation({ validate: () => [`Error from ${this.node.id}`] }); } } diff --git a/packages/@aws-cdk/core/test/aspect.test.ts b/packages/@aws-cdk/core/test/aspect.test.ts index 5a94e397a91da..600b35fe8ecba 100644 --- a/packages/@aws-cdk/core/test/aspect.test.ts +++ b/packages/@aws-cdk/core/test/aspect.test.ts @@ -1,8 +1,8 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; +import { Construct, IConstruct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; import { App } from '../lib'; import { IAspect, Aspects } from '../lib/aspect'; -import { Construct, IConstruct } from '../lib/construct-compat'; class MyConstruct extends Construct { public static IsMyConstruct(x: any): x is MyConstruct { diff --git a/packages/@aws-cdk/core/test/cfn-resource.test.ts b/packages/@aws-cdk/core/test/cfn-resource.test.ts index c625d477179b6..cfa4790ef032f 100644 --- a/packages/@aws-cdk/core/test/cfn-resource.test.ts +++ b/packages/@aws-cdk/core/test/cfn-resource.test.ts @@ -1,3 +1,4 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; import * as core from '../lib'; @@ -145,7 +146,7 @@ nodeunitShim({ const app = new core.App(); const stack = new core.Stack(app, 'TestStack'); - const subtree = new core.Construct(stack, 'subtree'); + const subtree = new Construct(stack, 'subtree'); // WHEN new HiddenCfnResource(subtree, 'R1', { type: 'Foo::R1' }); diff --git a/packages/@aws-cdk/core/test/construct.test.ts b/packages/@aws-cdk/core/test/construct.test.ts index a190ebaac7327..7dce12ec7931f 100644 --- a/packages/@aws-cdk/core/test/construct.test.ts +++ b/packages/@aws-cdk/core/test/construct.test.ts @@ -1,6 +1,7 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; +import { Construct, ConstructOrder, IConstruct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { App as Root, Aws, Construct, ConstructNode, ConstructOrder, IConstruct, Lazy, ValidationError } from '../lib'; +import { Names } from '../lib'; import { Annotations } from '../lib/annotations'; import { reEnableStackTraceCollection, restoreStackTraceColection } from './util'; @@ -11,7 +12,7 @@ nodeunitShim({ const root = new Root(); test.equal(root.node.id, '', 'if not specified, name of a root construct is an empty string'); test.ok(!root.node.scope, 'no parent'); - test.equal(root.node.children.length, 1); + test.equal(root.node.children.length, 0); test.done(); }, @@ -64,16 +65,6 @@ nodeunitShim({ test.done(); }, - 'dont allow unresolved tokens to be used in construct IDs'(test: Test) { - // GIVEN - const root = new Root(); - const token = Lazy.string({ produce: () => 'lazy' }); - - // WHEN + THEN - test.throws(() => new Construct(root, `MyID: ${token}`), /Cannot use tokens in construct ID: MyID: \${Token/); - test.done(); - }, - 'construct.uniqueId returns a tree-unique alphanumeric id of this construct'(test: Test) { const root = new Root(); @@ -84,15 +75,15 @@ nodeunitShim({ test.deepEqual(c1.node.path, 'This is the first child/Second level/My construct'); test.deepEqual(c2.node.path, 'This is the first child/My construct'); - test.deepEqual(c1.node.uniqueId, 'ThisisthefirstchildSecondlevelMyconstruct202131E0'); - test.deepEqual(c2.node.uniqueId, 'ThisisthefirstchildMyconstruct8C288DF9'); + test.deepEqual(Names.uniqueId(c1), 'ThisisthefirstchildSecondlevelMyconstruct202131E0'); + test.deepEqual(Names.uniqueId(c2), 'ThisisthefirstchildMyconstruct8C288DF9'); test.done(); }, 'cannot calculate uniqueId if the construct path is ["Default"]'(test: Test) { const root = new Root(); const c = new Construct(root, 'Default'); - test.throws(() => c.node.uniqueId, /Unable to calculate a unique id for an empty set of components/); + test.throws(() => Names.uniqueId(c), /Unable to calculate a unique id for an empty set of components/); test.done(); }, @@ -101,7 +92,7 @@ nodeunitShim({ const child = new Construct(root, 'Child1'); new Construct(root, 'Child2'); test.equal(child.node.children.length, 0, 'no children'); - test.equal(root.node.children.length, 3, 'three children are expected'); + test.equal(root.node.children.length, 2, 'three children are expected'); test.done(); }, @@ -143,7 +134,7 @@ nodeunitShim({ test.equal(t.root.toString(), ''); test.equal(t.child1_1_1.toString(), 'HighChild/Child1/Child11/Child111'); test.equal(t.child2.toString(), 'HighChild/Child2'); - test.equal(toTreeString(t.root), 'App\n TreeMetadata [Tree]\n Construct [HighChild]\n Construct [Child1]\n Construct [Child11]\n Construct [Child111]\n Construct [Child12]\n Construct [Child2]\n Construct [Child21]\n'); + test.equal(toTreeString(t.root), 'Root\n Construct [HighChild]\n Construct [Child1]\n Construct [Child11]\n Construct [Child111]\n Construct [Child12]\n Construct [Child2]\n Construct [Child21]\n'); test.done(); }, @@ -202,13 +193,6 @@ nodeunitShim({ test.done(); }, - 'fails if context key contains unresolved tokens'(test: Test) { - const root = new Root(); - test.throws(() => root.node.setContext(`my-${Aws.REGION}`, 'foo'), /Invalid context key/); - test.throws(() => root.node.tryGetContext(Aws.REGION), /Invalid context key/); - test.done(); - }, - 'construct.pathParts returns an array of strings of all names from root to node'(test: Test) { const tree = createTree(); test.deepEqual(tree.root.node.path, ''); @@ -233,7 +217,7 @@ nodeunitShim({ // THEN: They have different paths test.throws(() => { new Construct(root, 'SameName'); - }, /There is already a Construct with name 'SameName' in App/); + }, /There is already a Construct with name 'SameName' in Root/); // WHEN const c0 = new Construct(root, 'c0'); @@ -248,21 +232,20 @@ nodeunitShim({ }, 'addMetadata(type, data) can be used to attach metadata to constructs FIND_ME'(test: Test) { - const previousValue = reEnableStackTraceCollection(); const root = new Root(); const con = new Construct(root, 'MyConstruct'); test.deepEqual(con.node.metadata, [], 'starts empty'); - con.node.addMetadata('key', 'value'); + con.node.addMetadata('key', 'value', { stackTrace: true }); con.node.addMetadata('number', 103); con.node.addMetadata('array', [123, 456]); - restoreStackTraceColection(previousValue); test.deepEqual(con.node.metadata[0].type, 'key'); test.deepEqual(con.node.metadata[0].data, 'value'); test.deepEqual(con.node.metadata[1].data, 103); test.deepEqual(con.node.metadata[2].data, [123, 456]); - test.ok(con.node.metadata[0].trace && con.node.metadata[0].trace[1].indexOf('FIND_ME') !== -1, 'First stack line should include this function\s name'); + + test.ok(con.node.metadata[0].trace && con.node.metadata[0].trace[0].indexOf('FIND_ME') !== -1, 'First stack line should include this function\s name'); test.done(); }, @@ -338,14 +321,16 @@ nodeunitShim({ 'construct.validate() can be implemented to perform validation, ConstructNode.validate(construct.node) will return all errors from the subtree (DFS)'(test: Test) { class MyConstruct extends Construct { - protected validate() { - return ['my-error1', 'my-error2']; + constructor(scope: Construct, id: string) { + super(scope, id); + this.node.addValidation({ validate: () => ['my-error1', 'my-error2'] }); } } class YourConstruct extends Construct { - protected validate() { - return ['your-error1']; + constructor(scope: Construct, id: string) { + super(scope, id); + this.node.addValidation({ validate: () => ['your-error1'] }); } } @@ -354,10 +339,7 @@ nodeunitShim({ super(scope, id); new YourConstruct(this, 'YourConstruct'); - } - - protected validate() { - return ['their-error']; + this.node.addValidation({ validate: () => ['their-error'] }); } } @@ -367,24 +349,30 @@ nodeunitShim({ new MyConstruct(this, 'MyConstruct'); new TheirConstruct(this, 'TheirConstruct'); - } - protected validate() { - return ['stack-error']; + this.node.addValidation({ validate: () => ['stack-error'] }); } } const stack = new TestStack(); - const errors = ConstructNode.validate(stack.node).map((v: ValidationError) => ({ path: v.source.node.path, message: v.message })); + const errors = new Array<{ path: string, message: string }>(); + for (const child of stack.node.findAll()) { + for (const message of child.node.validate()) { + errors.push({ + path: child.node.path, + message, + }); + } + } // validate DFS test.deepEqual(errors, [ + { path: '', message: 'stack-error' }, { path: 'MyConstruct', message: 'my-error1' }, { path: 'MyConstruct', message: 'my-error2' }, - { path: 'TheirConstruct/YourConstruct', message: 'your-error1' }, { path: 'TheirConstruct', message: 'their-error' }, - { path: '', message: 'stack-error' }, + { path: 'TheirConstruct/YourConstruct', message: 'your-error1' }, ]); test.done(); @@ -394,11 +382,7 @@ nodeunitShim({ class LockableConstruct extends Construct { public lockMe() { - (this.node._actualNode as any)._lock(); - } - - public unlockMe() { - (this.node._actualNode as any)._unlock(); + this.node.lock(); } } @@ -418,12 +402,6 @@ nodeunitShim({ test.throws(() => new Construct(c1a, 'fail2'), /Cannot add children to "c0a\/c1a" during synthesis/); test.throws(() => new Construct(c1b, 'fail3'), /Cannot add children to "c0a\/c1b" during synthesis/); - c0a.unlockMe(); - - new Construct(c0a, 'c0aZ'); - new Construct(c1a, 'c1aZ'); - new Construct(c1b, 'c1bZ'); - test.done(); }, @@ -547,3 +525,9 @@ function toTreeString(node: IConstruct, depth = 0) { } return out; } + +class Root extends Construct { + constructor() { + super(undefined as any, undefined as any); + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/core/test/context.test.ts b/packages/@aws-cdk/core/test/context.test.ts index 89c720e735999..53fe6e6fd4d5a 100644 --- a/packages/@aws-cdk/core/test/context.test.ts +++ b/packages/@aws-cdk/core/test/context.test.ts @@ -1,5 +1,6 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { Construct, Stack } from '../lib'; +import { Stack } from '../lib'; import { ContextProvider } from '../lib/context-provider'; import { synthesize } from '../lib/private/synthesis'; diff --git a/packages/@aws-cdk/core/test/cross-environment-token.test.ts b/packages/@aws-cdk/core/test/cross-environment-token.test.ts index 4ab55922369e4..42e91fea50866 100644 --- a/packages/@aws-cdk/core/test/cross-environment-token.test.ts +++ b/packages/@aws-cdk/core/test/cross-environment-token.test.ts @@ -1,5 +1,6 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { App, CfnOutput, CfnResource, Construct, PhysicalName, Resource, Stack } from '../lib'; +import { App, CfnOutput, CfnResource, PhysicalName, Resource, Stack } from '../lib'; import { toCloudFormation } from './util'; /* eslint-disable quote-props */ diff --git a/packages/@aws-cdk/core/test/logical-id.test.ts b/packages/@aws-cdk/core/test/logical-id.test.ts index f4ab0f8eb63d9..ba7ade056a70e 100644 --- a/packages/@aws-cdk/core/test/logical-id.test.ts +++ b/packages/@aws-cdk/core/test/logical-id.test.ts @@ -1,5 +1,6 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { CfnElement, CfnResource, Construct, Stack } from '../lib'; +import { CfnElement, CfnResource, Stack } from '../lib'; import { toCloudFormation } from './util'; /** diff --git a/packages/@aws-cdk/core/test/output.test.ts b/packages/@aws-cdk/core/test/output.test.ts index 0359049756946..84f7828b5eb8a 100644 --- a/packages/@aws-cdk/core/test/output.test.ts +++ b/packages/@aws-cdk/core/test/output.test.ts @@ -1,5 +1,5 @@ import { nodeunitShim, Test } from 'nodeunit-shim'; -import { App, CfnOutput, CfnResource, ConstructNode, Stack, ValidationError } from '../lib'; +import { App, CfnOutput, CfnResource, Stack } from '../lib'; import { toCloudFormation } from './util'; let app: App; @@ -115,9 +115,8 @@ nodeunitShim({ }, 'Verify maximum length of export name'(test: Test) { - new CfnOutput(stack, 'SomeOutput', { value: 'x', exportName: 'x'.repeat(260) }); - - const errors = ConstructNode.validate(stack.node).map((v: ValidationError) => v.message); + const output = new CfnOutput(stack, 'SomeOutput', { value: 'x', exportName: 'x'.repeat(260) }); + const errors = output.node.validate(); expect(errors).toEqual([ expect.stringContaining('Export name cannot exceed 255 characters'), diff --git a/packages/@aws-cdk/core/test/parameter.test.ts b/packages/@aws-cdk/core/test/parameter.test.ts index d13edbffddb0a..d86491bf887d0 100644 --- a/packages/@aws-cdk/core/test/parameter.test.ts +++ b/packages/@aws-cdk/core/test/parameter.test.ts @@ -1,5 +1,6 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { CfnParameter, CfnResource, Construct, Stack } from '../lib'; +import { CfnParameter, CfnResource, Stack } from '../lib'; import { toCloudFormation } from './util'; nodeunitShim({ diff --git a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts index f62df683c422a..0bc368bcd28a7 100644 --- a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts +++ b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts @@ -1,8 +1,9 @@ import * as fs from 'fs'; import * as path from 'path'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { App, CfnParameter, CfnResource, Construct, Lazy, Stack, TreeInspector } from '../../lib/index'; +import { App, CfnParameter, CfnResource, Lazy, Stack, TreeInspector } from '../../lib/index'; abstract class AbstractCfnResource extends CfnResource { constructor(scope: Construct, id: string) { diff --git a/packages/@aws-cdk/core/test/resource.test.ts b/packages/@aws-cdk/core/test/resource.test.ts index b883d11f8d752..acc2ffddd376c 100644 --- a/packages/@aws-cdk/core/test/resource.test.ts +++ b/packages/@aws-cdk/core/test/resource.test.ts @@ -1,8 +1,9 @@ import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; import { App, App as Root, CfnCondition, - CfnDeletionPolicy, CfnResource, Construct, + CfnDeletionPolicy, CfnResource, Fn, RemovalPolicy, Stack, } from '../lib'; import { synthesize } from '../lib/private/synthesis'; diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index 63c04be2e81de..ee6fe6de474b0 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -1,8 +1,9 @@ import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; import { App, CfnCondition, CfnInclude, CfnOutput, CfnParameter, - CfnResource, Construct, Lazy, ScopedAws, Stack, validateString, ISynthesisSession, Tags, LegacyStackSynthesizer, DefaultStackSynthesizer, + CfnResource, Lazy, ScopedAws, Stack, validateString, ISynthesisSession, Tags, LegacyStackSynthesizer, DefaultStackSynthesizer, } from '../lib'; import { Intrinsic } from '../lib/private/intrinsic'; import { resolveReferences } from '../lib/private/refs'; @@ -988,7 +989,7 @@ nodeunitShim({ let called = false; class MyStack extends Stack { - synthesize(session: ISynthesisSession) { + _synthesizeTemplate(session: ISynthesisSession) { called = true; test.ok(session.outdir); test.equal(session.assembly.outdir, session.outdir); diff --git a/packages/@aws-cdk/core/test/stage.test.ts b/packages/@aws-cdk/core/test/stage.test.ts index 897b3513d6163..4fb4d13462ffc 100644 --- a/packages/@aws-cdk/core/test/stage.test.ts +++ b/packages/@aws-cdk/core/test/stage.test.ts @@ -1,7 +1,8 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; +import { Construct, IConstruct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { App, CfnResource, Construct, IAspect, IConstruct, Stack, Stage, Aspects } from '../lib'; +import { App, CfnResource, IAspect, Stack, Stage, Aspects } from '../lib'; nodeunitShim({ 'Stack inherits unspecified part of the env from Stage'(test: Test) { @@ -119,28 +120,6 @@ nodeunitShim({ test.done(); }, - 'When we synth() a stage, prepare must be called on constructs in the stage'(test: Test) { - // GIVEN - const app = new App(); - let prepared = false; - const stage = new Stage(app, 'MyStage'); - const stack = new BogusStack(stage, 'Stack'); - class HazPrepare extends Construct { - protected prepare() { - prepared = true; - } - } - new HazPrepare(stack, 'Preparable'); - - // WHEN - stage.synth(); - - // THEN - test.equals(prepared, true); - - test.done(); - }, - 'When we synth() a stage, aspects inside it must have been applied'(test: Test) { // GIVEN const app = new App(); diff --git a/packages/@aws-cdk/core/test/synthesis.test.ts b/packages/@aws-cdk/core/test/synthesis.test.ts index 464e544cc562a..89ebf7d6b47ce 100644 --- a/packages/@aws-cdk/core/test/synthesis.test.ts +++ b/packages/@aws-cdk/core/test/synthesis.test.ts @@ -4,6 +4,7 @@ import * as path from 'path'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { nodeunitShim, Test } from 'nodeunit-shim'; import * as cdk from '../lib'; +import { synthesize } from '../lib/private/synthesis'; function createModernApp() { return new cdk.App(); @@ -61,65 +62,22 @@ nodeunitShim({ test.done(); }, - 'some random construct implements "synthesize"'(test: Test) { - // GIVEN - const app = createModernApp(); - const stack = new cdk.Stack(app, 'one-stack'); - - class MyConstruct extends cdk.Construct { - protected synthesize(s: cdk.ISynthesisSession) { - writeJson(s.assembly.outdir, 'foo.json', { bar: 123 }); - s.assembly.addArtifact('my-random-construct', { - type: cxschema.ArtifactType.AWS_CLOUDFORMATION_STACK, - environment: 'aws://12345/bar', - properties: { - templateFile: 'foo.json', - }, - }); - } - } - - new MyConstruct(stack, 'MyConstruct'); - - // WHEN - const session = app.synth(); - - // THEN - test.ok(list(session.directory).includes('one-stack.template.json')); - test.ok(list(session.directory).includes('foo.json')); - - test.deepEqual(readJson(session.directory, 'foo.json'), { bar: 123 }); - test.deepEqual(session.manifest, { - version: cxschema.Manifest.version(), - artifacts: { - 'Tree': { - type: 'cdk:tree', - properties: { file: 'tree.json' }, - }, - 'my-random-construct': { - type: 'aws:cloudformation:stack', - environment: 'aws://12345/bar', - properties: { templateFile: 'foo.json' }, - }, - 'one-stack': { - type: 'aws:cloudformation:stack', - environment: 'aws://unknown-account/unknown-region', - properties: { templateFile: 'one-stack.template.json' }, - }, - }, - }); - test.done(); - }, - 'it should be possible to synthesize without an app'(test: Test) { const calls = new Array(); - class SynthesizeMe extends cdk.Construct { + class SynthesizeMe extends cdk.Stack { constructor() { super(undefined as any, 'id'); + + this.node.addValidation({ + validate: () => { + calls.push('validate'); + return []; + }, + }); } - protected synthesize(session: cdk.ISynthesisSession) { + public _synthesizeTemplate(session: cdk.ISynthesisSession) { calls.push('synthesize'); session.assembly.addArtifact('art', { @@ -136,21 +94,12 @@ nodeunitShim({ writeJson(session.assembly.outdir, 'hey.json', { hello: 123 }); } - - protected validate(): string[] { - calls.push('validate'); - return []; - } - - protected prepare(): void { - calls.push('prepare'); - } } const root = new SynthesizeMe(); - const assembly = cdk.ConstructNode.synth(root.node, { outdir: fs.mkdtempSync(path.join(os.tmpdir(), 'outdir')) }); + const assembly = synthesize(root, { outdir: fs.mkdtempSync(path.join(os.tmpdir(), 'outdir')) }); - test.deepEqual(calls, ['prepare', 'validate', 'synthesize']); + test.deepEqual(calls, ['validate', 'synthesize']); const stack = assembly.getStackByName('art'); test.deepEqual(stack.template, { hello: 123 }); test.deepEqual(stack.templateFile, 'hey.json'); diff --git a/packages/@aws-cdk/core/test/tag-aspect.test.ts b/packages/@aws-cdk/core/test/tag-aspect.test.ts index cb2c5363e2153..342147902c4a1 100644 --- a/packages/@aws-cdk/core/test/tag-aspect.test.ts +++ b/packages/@aws-cdk/core/test/tag-aspect.test.ts @@ -1,5 +1,6 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { CfnResource, CfnResourceProps, Construct, RemoveTag, Stack, Tag, TagManager, TagType, Aspects, Tags } from '../lib'; +import { CfnResource, CfnResourceProps, RemoveTag, Stack, Tag, TagManager, TagType, Aspects, Tags } from '../lib'; import { synthesize } from '../lib/private/synthesis'; class TaggableResource extends CfnResource { diff --git a/packages/@aws-cdk/core/test/util.test.ts b/packages/@aws-cdk/core/test/util.test.ts index 3b9c33f14c9f4..60889584a1158 100644 --- a/packages/@aws-cdk/core/test/util.test.ts +++ b/packages/@aws-cdk/core/test/util.test.ts @@ -1,5 +1,6 @@ +import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { CfnResource, Construct, Stack } from '../lib'; +import { CfnResource, Stack } from '../lib'; import { capitalizePropertyNames, filterUndefined, findLastCommonElement, ignoreEmpty, pathToTopLevelStack } from '../lib/util'; nodeunitShim({ diff --git a/packages/@aws-cdk/custom-resources/lib/aws-custom-resource/aws-custom-resource.ts b/packages/@aws-cdk/custom-resources/lib/aws-custom-resource/aws-custom-resource.ts index 7a6e48a583d69..92ebcee2bffb6 100644 --- a/packages/@aws-cdk/custom-resources/lib/aws-custom-resource/aws-custom-resource.ts +++ b/packages/@aws-cdk/custom-resources/lib/aws-custom-resource/aws-custom-resource.ts @@ -274,7 +274,7 @@ export interface AwsCustomResourceProps { * You can specify exactly which calls are invoked for the 'CREATE', 'UPDATE' and 'DELETE' life cycle events. * */ -export class AwsCustomResource extends cdk.Construct implements iam.IGrantable { +export class AwsCustomResource extends Construct implements iam.IGrantable { private static breakIgnoreErrorsCircuit(sdkCalls: Array, caller: string) { diff --git a/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts b/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts index 3ae10fdf2e560..f346644b21d35 100644 --- a/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts +++ b/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts @@ -3,7 +3,7 @@ import * as cfn from '@aws-cdk/aws-cloudformation'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as lambda from '@aws-cdk/aws-lambda'; import * as logs from '@aws-cdk/aws-logs'; -import { Construct as CoreConstruct, Duration } from '@aws-cdk/core'; +import { Duration } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as consts from './runtime/consts'; import { calculateRetryPolicy } from './util'; @@ -94,7 +94,7 @@ export interface ProviderProps { /** * Defines an AWS CloudFormation custom resource provider. */ -export class Provider extends CoreConstruct implements cfn.ICustomResourceProvider { +export class Provider extends Construct implements cfn.ICustomResourceProvider { /** * The user-defined AWS Lambda function which is invoked for all resource @@ -162,7 +162,7 @@ export class Provider extends CoreConstruct implements cfn.ICustomResourceProvid * Called by `CustomResource` which uses this provider. * @deprecated use `provider.serviceToken` instead */ - public bind(_: CoreConstruct): cfn.CustomResourceProviderConfig { + public bind(_: Construct): cfn.CustomResourceProviderConfig { return { serviceToken: this.entrypoint.functionArn, }; diff --git a/packages/@aws-cdk/custom-resources/lib/provider-framework/waiter-state-machine.ts b/packages/@aws-cdk/custom-resources/lib/provider-framework/waiter-state-machine.ts index 513e18d7f9c8b..c404c656028f2 100644 --- a/packages/@aws-cdk/custom-resources/lib/provider-framework/waiter-state-machine.ts +++ b/packages/@aws-cdk/custom-resources/lib/provider-framework/waiter-state-machine.ts @@ -1,6 +1,7 @@ import { Grant, IGrantable, PolicyStatement, Role, ServicePrincipal } from '@aws-cdk/aws-iam'; import { IFunction } from '@aws-cdk/aws-lambda'; -import { CfnResource, Construct, Duration, Stack } from '@aws-cdk/core'; +import { CfnResource, Duration, Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; export interface WaiterStateMachineProps { /** diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index f80c16fb76a51..950f35ce496db 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -99,7 +99,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -110,7 +110,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-assert.ts b/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-assert.ts index 369369945632f..e20403d0cccac 100644 --- a/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-assert.ts +++ b/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-assert.ts @@ -6,10 +6,6 @@ import { CustomResource, Duration, Stack } from '@aws-cdk/core'; import { Construct, Node } from 'constructs'; import * as cr from '../../../lib'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - export interface S3AssertProps { /** * The s3 bucket to query. @@ -34,7 +30,7 @@ export interface S3AssertProps { * * Code is written in Python because why not. */ -export class S3Assert extends CoreConstruct { +export class S3Assert extends Construct { constructor(scope: Construct, id: string, props: S3AssertProps) { super(scope, id); @@ -51,7 +47,7 @@ export class S3Assert extends CoreConstruct { } } -class S3AssertProvider extends CoreConstruct { +class S3AssertProvider extends Construct { /** * Returns the singleton provider. diff --git a/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-file.ts b/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-file.ts index d70759be12b79..01338a2857e7a 100644 --- a/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-file.ts +++ b/packages/@aws-cdk/custom-resources/test/provider-framework/integration-test-fixtures/s3-file.ts @@ -7,10 +7,6 @@ import { Construct, Node } from 'constructs'; import * as cr from '../../../lib'; import * as api from './s3-file-handler/api'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - interface S3FileProps { /** * The bucket in which the file will be created. @@ -37,7 +33,7 @@ interface S3FileProps { readonly public?: boolean; } -export class S3File extends CoreConstruct { +export class S3File extends Construct { public readonly objectKey: string; public readonly url: string; public readonly etag: string; @@ -62,7 +58,7 @@ export class S3File extends CoreConstruct { } } -class S3FileProvider extends CoreConstruct { +class S3FileProvider extends Construct { /** * Returns the singleton provider. diff --git a/packages/@aws-cdk/example-construct-library/package.json b/packages/@aws-cdk/example-construct-library/package.json index f234c7f43c21c..826d9b02e1b8b 100644 --- a/packages/@aws-cdk/example-construct-library/package.json +++ b/packages/@aws-cdk/example-construct-library/package.json @@ -79,7 +79,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -89,7 +89,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 00dc16cb349b1..44e7ed826958f 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -74,13 +74,13 @@ "dependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index be961694f1606..3b7c09f51e0af 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -80,13 +80,13 @@ "dependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { "@aws-cdk/aws-lambda": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" diff --git a/packages/@aws-cdk/pipelines/lib/actions/deploy-cdk-stack-action.ts b/packages/@aws-cdk/pipelines/lib/actions/deploy-cdk-stack-action.ts index 9fe520112931f..c2203c1253b2b 100644 --- a/packages/@aws-cdk/pipelines/lib/actions/deploy-cdk-stack-action.ts +++ b/packages/@aws-cdk/pipelines/lib/actions/deploy-cdk-stack-action.ts @@ -11,10 +11,6 @@ import { Construct, Node } from 'constructs'; import { appOf, assemblyBuilderOf } from '../private/construct-internals'; import { toPosixPath } from '../private/fs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Customization options for a DeployCdkStackAction */ @@ -168,7 +164,7 @@ export class DeployCdkStackAction implements codepipeline.IAction { // We need the path of the template relative to the root Cloud Assembly // It should be easier to get this, but for now it is what it is. - const appAsmRoot = assemblyBuilderOf(appOf(scope as CoreConstruct)).outdir; + const appAsmRoot = assemblyBuilderOf(appOf(scope)).outdir; const fullTemplatePath = path.join(artifact.assembly.directory, artifact.templateFile); let fullConfigPath; @@ -267,7 +263,7 @@ export class DeployCdkStackAction implements codepipeline.IAction { /** * Exists to implement IAction */ - public bind(scope: CoreConstruct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + public bind(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { stage.addAction(this.prepareChangeSetAction); diff --git a/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts b/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts index 0c661b61e9251..31c036fdb4d22 100644 --- a/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts +++ b/packages/@aws-cdk/pipelines/lib/actions/publish-assets-action.ts @@ -7,10 +7,6 @@ import * as iam from '@aws-cdk/aws-iam'; import { Lazy } from '@aws-cdk/core'; import { Construct } from 'constructs'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Type of the asset that is being published */ @@ -92,7 +88,7 @@ export interface PublishAssetsActionProps { * You do not need to instantiate this action -- it will automatically * be added by the pipeline when you add stacks that use assets. */ -export class PublishAssetsAction extends CoreConstruct implements codepipeline.IAction { +export class PublishAssetsAction extends Construct implements codepipeline.IAction { private readonly action: codepipeline.IAction; private readonly commands = new Array(); @@ -159,7 +155,7 @@ export class PublishAssetsAction extends CoreConstruct implements codepipeline.I /** * Exists to implement IAction */ - public bind(scope: CoreConstruct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + public bind(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { return this.action.bind(scope, stage, options); } diff --git a/packages/@aws-cdk/pipelines/lib/actions/update-pipeline-action.ts b/packages/@aws-cdk/pipelines/lib/actions/update-pipeline-action.ts index 20dce58246c27..8cfa0888fde08 100644 --- a/packages/@aws-cdk/pipelines/lib/actions/update-pipeline-action.ts +++ b/packages/@aws-cdk/pipelines/lib/actions/update-pipeline-action.ts @@ -6,10 +6,6 @@ import * as iam from '@aws-cdk/aws-iam'; import { Construct } from 'constructs'; import { embeddedAsmPath } from '../private/construct-internals'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Props for the UpdatePipelineAction */ @@ -48,7 +44,7 @@ export interface UpdatePipelineActionProps { * You do not need to instantiate this action -- it will automatically * be added by the pipeline. */ -export class UpdatePipelineAction extends CoreConstruct implements codepipeline.IAction { +export class UpdatePipelineAction extends Construct implements codepipeline.IAction { private readonly action: codepipeline.IAction; constructor(scope: Construct, id: string, props: UpdatePipelineActionProps) { @@ -103,7 +99,7 @@ export class UpdatePipelineAction extends CoreConstruct implements codepipeline. /** * Exists to implement IAction */ - public bind(scope: CoreConstruct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): + public bind(scope: Construct, stage: codepipeline.IStage, options: codepipeline.ActionBindOptions): codepipeline.ActionConfig { return this.action.bind(scope, stage, options); } diff --git a/packages/@aws-cdk/pipelines/lib/pipeline.ts b/packages/@aws-cdk/pipelines/lib/pipeline.ts index 6e39f92b7582d..3d7b9881a36df 100644 --- a/packages/@aws-cdk/pipelines/lib/pipeline.ts +++ b/packages/@aws-cdk/pipelines/lib/pipeline.ts @@ -8,10 +8,6 @@ import { AssetType, DeployCdkStackAction, PublishAssetsAction, UpdatePipelineAct import { appOf, assemblyBuilderOf } from './private/construct-internals'; import { AddStageOptions, AssetPublishingCommand, CdkStage, StackOutput } from './stage'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Properties for a CdkPipeline */ @@ -133,7 +129,7 @@ export interface CdkPipelineProps { * - Keeping the pipeline up-to-date as the CDK apps change. * - Using stack outputs later on in the pipeline. */ -export class CdkPipeline extends CoreConstruct { +export class CdkPipeline extends Construct { private readonly _pipeline: codepipeline.Pipeline; private readonly _assets: AssetPublishing; private readonly _stages: CdkStage[] = []; @@ -212,6 +208,8 @@ export class CdkPipeline extends CoreConstruct { vpc: props.vpc, subnetSelection: props.subnetSelection, }); + + this.node.addValidation({ validate: () => this.validatePipeline() }); } /** @@ -298,7 +296,7 @@ export class CdkPipeline extends CoreConstruct { * Our own convenience methods will never generate a pipeline that does that (although * this is a nice verification), but a user can also add the stacks by hand. */ - protected validate(): string[] { + private validatePipeline(): string[] { const ret = new Array(); ret.push(...this.validateDeployOrder()); @@ -363,7 +361,7 @@ interface AssetPublishingProps { /** * Add appropriate publishing actions to the asset publishing stage */ -class AssetPublishing extends CoreConstruct { +class AssetPublishing extends Construct { // CodePipelines has a hard limit of 50 actions per stage. See https://github.com/aws/aws-cdk/issues/9353 private readonly MAX_PUBLISHERS_PER_STAGE = 50; diff --git a/packages/@aws-cdk/pipelines/lib/stage.ts b/packages/@aws-cdk/pipelines/lib/stage.ts index 863aa8869d8bd..f6f2038ad34a3 100644 --- a/packages/@aws-cdk/pipelines/lib/stage.ts +++ b/packages/@aws-cdk/pipelines/lib/stage.ts @@ -7,10 +7,6 @@ import { AssetType, DeployCdkStackAction } from './actions'; import { AssetManifestReader, DockerImageManifestEntry, FileManifestEntry } from './private/asset-manifest'; import { topologicalSort } from './private/toposort'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Construction properties for a CdkStage */ @@ -42,7 +38,7 @@ export interface CdkStageProps { * You don't need to instantiate this class directly. Use * `cdkPipeline.addStage()` instead. */ -export class CdkStage extends CoreConstruct { +export class CdkStage extends Construct { private _nextSequentialRunOrder = 1; // Must start at 1 eh private _manualApprovalCounter = 1; private readonly pipelineStage: codepipeline.IStage; diff --git a/packages/@aws-cdk/pipelines/lib/synths/simple-synth-action.ts b/packages/@aws-cdk/pipelines/lib/synths/simple-synth-action.ts index d04408b9175cd..8cedf6c45bc83 100644 --- a/packages/@aws-cdk/pipelines/lib/synths/simple-synth-action.ts +++ b/packages/@aws-cdk/pipelines/lib/synths/simple-synth-action.ts @@ -6,7 +6,8 @@ import * as codepipeline_actions from '@aws-cdk/aws-codepipeline-actions'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { cloudAssemblyBuildSpecDir } from '../private/construct-internals'; import { toPosixPath } from '../private/fs'; import { copyEnvironmentVariables, filterEmpty } from './_util'; diff --git a/packages/@aws-cdk/pipelines/lib/validation/_files.ts b/packages/@aws-cdk/pipelines/lib/validation/_files.ts index 2f2bbf7be35ea..fc54c1f69930b 100644 --- a/packages/@aws-cdk/pipelines/lib/validation/_files.ts +++ b/packages/@aws-cdk/pipelines/lib/validation/_files.ts @@ -1,7 +1,7 @@ import * as codepipeline from '@aws-cdk/aws-codepipeline'; import { IGrantable } from '@aws-cdk/aws-iam'; import * as s3assets from '@aws-cdk/aws-s3-assets'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Additional files to use in a shell script diff --git a/packages/@aws-cdk/pipelines/lib/validation/shell-script-action.ts b/packages/@aws-cdk/pipelines/lib/validation/shell-script-action.ts index 1b439fe309c7e..1ff23aa835253 100644 --- a/packages/@aws-cdk/pipelines/lib/validation/shell-script-action.ts +++ b/packages/@aws-cdk/pipelines/lib/validation/shell-script-action.ts @@ -4,7 +4,7 @@ import * as codepipeline_actions from '@aws-cdk/aws-codepipeline-actions'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { StackOutput } from '../stage'; /** diff --git a/packages/@aws-cdk/pipelines/package.json b/packages/@aws-cdk/pipelines/package.json index be60aa19a0706..59af9ff1fe5cf 100644 --- a/packages/@aws-cdk/pipelines/package.json +++ b/packages/@aws-cdk/pipelines/package.json @@ -41,7 +41,7 @@ "@aws-cdk/aws-ecr-assets": "0.0.0" }, "peerDependencies": { - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-codebuild": "0.0.0", "@aws-cdk/aws-codepipeline": "0.0.0", @@ -55,7 +55,7 @@ "@aws-cdk/aws-cloudformation": "0.0.0" }, "dependencies": { - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "@aws-cdk/core": "0.0.0", "@aws-cdk/aws-codebuild": "0.0.0", "@aws-cdk/aws-codepipeline": "0.0.0", diff --git a/packages/@monocdk-experiment/assert/package.json b/packages/@monocdk-experiment/assert/package.json index e995c67ff7a4a..80e5e4d380f4e 100644 --- a/packages/@monocdk-experiment/assert/package.json +++ b/packages/@monocdk-experiment/assert/package.json @@ -41,7 +41,7 @@ "@types/jest": "^26.0.15", "@types/node": "^10.17.48", "cdk-build-tools": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "jest": "^26.6.3", "monocdk": "0.0.0", "pkglint": "0.0.0", diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 4f06b908dc966..61826d7af01c7 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -275,7 +275,7 @@ "@types/fs-extra": "^8.1.1", "@types/node": "^10.17.48", "cdk-build-tools": "0.0.0", - "constructs": "^3.2.0", + "constructs": "10.0.0-pre.5", "fs-extra": "^9.0.1", "pkglint": "0.0.0", "ts-node": "^9.1.0", @@ -283,7 +283,7 @@ "ubergen": "0.0.0" }, "peerDependencies": { - "constructs": "^3.0.4" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "engines": { diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj index 0ac3cc0a4c6cb..a839c9651027a 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%.template.csproj @@ -10,6 +10,7 @@ + + + + diff --git a/packages/@aws-cdk/alexa-ask/package.json b/packages/@aws-cdk/alexa-ask/package.json index 7758e78a06c8a..b14e11df91d8e 100644 --- a/packages/@aws-cdk/alexa-ask/package.json +++ b/packages/@aws-cdk/alexa-ask/package.json @@ -89,10 +89,10 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", - "maturity": "experimental", + "maturity": "cfn-only", "awscdkio": { "announce": false } diff --git a/packages/@aws-cdk/app-delivery/package.json b/packages/@aws-cdk/app-delivery/package.json index 50ec9c01b73cf..929246d143257 100644 --- a/packages/@aws-cdk/app-delivery/package.json +++ b/packages/@aws-cdk/app-delivery/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "deprecated", "maturity": "deprecated", diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index c2444a9ede633..c5178d691e66a 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -51,7 +51,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index b1791d6fa0963..7c2d554666f99 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "deprecated", "maturity": "deprecated", diff --git a/packages/@aws-cdk/aws-accessanalyzer/package.json b/packages/@aws-cdk/aws-accessanalyzer/package.json index 5d1c39ee62e43..f71b75a9da62d 100644 --- a/packages/@aws-cdk/aws-accessanalyzer/package.json +++ b/packages/@aws-cdk/aws-accessanalyzer/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-acmpca/README.md b/packages/@aws-cdk/aws-acmpca/README.md index fd3c39c9f5e4c..04d167836539c 100644 --- a/packages/@aws-cdk/aws-acmpca/README.md +++ b/packages/@aws-cdk/aws-acmpca/README.md @@ -9,6 +9,14 @@ > > [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib +![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) + +> The APIs of higher level constructs in this module are experimental and under active development. +> They are subject to non-backward compatible changes or removal in any future version. These are +> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be +> announced in the release notes. This means that while you may use them, you may need to update +> your source code when upgrading to a newer version of this package. + --- diff --git a/packages/@aws-cdk/aws-acmpca/package.json b/packages/@aws-cdk/aws-acmpca/package.json index 5422e74d07d87..d462cce372238 100644 --- a/packages/@aws-cdk/aws-acmpca/package.json +++ b/packages/@aws-cdk/aws-acmpca/package.json @@ -90,10 +90,10 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", - "maturity": "cfn-only", + "maturity": "experimental", "awscdkio": { "announce": false } diff --git a/packages/@aws-cdk/aws-amazonmq/package.json b/packages/@aws-cdk/aws-amazonmq/package.json index 9676bb176e4f2..9402b6afcc479 100644 --- a/packages/@aws-cdk/aws-amazonmq/package.json +++ b/packages/@aws-cdk/aws-amazonmq/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-amplify/package.json b/packages/@aws-cdk/aws-amplify/package.json index 1fd6faa048cb4..49f6496d7ae0f 100644 --- a/packages/@aws-cdk/aws-amplify/package.json +++ b/packages/@aws-cdk/aws-amplify/package.json @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-apigateway/package.json b/packages/@aws-cdk/aws-apigateway/package.json index 109bb8bbf704a..976a0d8cad79f 100644 --- a/packages/@aws-cdk/aws-apigateway/package.json +++ b/packages/@aws-cdk/aws-apigateway/package.json @@ -112,7 +112,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "nyc": { "exclude": [ diff --git a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json index 49b9cbb3cd2ae..70cd006b9282b 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-apigatewayv2/README.md b/packages/@aws-cdk/aws-apigatewayv2/README.md index 297ec5ce2bfdb..1fda5a731ff40 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/README.md +++ b/packages/@aws-cdk/aws-apigatewayv2/README.md @@ -95,7 +95,13 @@ httpApi.addRoutes({ }); ``` -The URL to the endpoint can be retrieved via the `apiEndpoint` attribute. +The URL to the endpoint can be retrieved via the `apiEndpoint` attribute. By default this URL is enabled for clients. Use `disableExecuteApiEndpoint` to disable it. + +```ts +const httpApi = new HttpApi(stack, 'HttpApi', { + disableExecuteApiEndpoint: true, +}); +``` The `defaultIntegration` option while defining HTTP APIs lets you create a default catch-all integration that is matched when a client reaches a route that is not explicitly defined. diff --git a/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts b/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts index cc2e646443f0e..5ced1f20f18a0 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts @@ -128,6 +128,15 @@ export interface HttpApiProps { * @default - no default domain mapping configured. meaningless if `createDefaultStage` is `false`. */ readonly defaultDomainMapping?: DefaultDomainMappingOptions; + + /** + * Specifies whether clients can invoke your API using the default endpoint. + * By default, clients can invoke your API with the default + * `https://{api_id}.execute-api.{region}.amazonaws.com` endpoint. Enable + * this if you would like clients to use your custom domain name. + * @default false execute-api endpoint enabled. + */ + readonly disableExecuteApiEndpoint?: boolean; } /** @@ -283,17 +292,24 @@ export class HttpApi extends HttpApiBase { */ public readonly httpApiName?: string; public readonly httpApiId: string; - public readonly apiEndpoint: string; + + /** + * Specifies whether clients can invoke this HTTP API by using the default execute-api endpoint. + */ + public readonly disableExecuteApiEndpoint?: boolean; /** * default stage of the api resource */ public readonly defaultStage: HttpStage | undefined; + private readonly _apiEndpoint: string; + constructor(scope: Construct, id: string, props?: HttpApiProps) { super(scope, id); this.httpApiName = props?.apiName ?? id; + this.disableExecuteApiEndpoint = props?.disableExecuteApiEndpoint; let corsConfiguration: CfnApi.CorsProperty | undefined; if (props?.corsPreflight) { @@ -324,11 +340,12 @@ export class HttpApi extends HttpApiBase { protocolType: 'HTTP', corsConfiguration, description: props?.description, + disableExecuteApiEndpoint: this.disableExecuteApiEndpoint, }; const resource = new CfnApi(this, 'Resource', apiProps); this.httpApiId = resource.ref; - this.apiEndpoint = resource.attrApiEndpoint; + this._apiEndpoint = resource.attrApiEndpoint; if (props?.defaultIntegration) { new HttpRoute(this, 'DefaultRoute', { @@ -357,6 +374,16 @@ export class HttpApi extends HttpApiBase { } } + /** + * Get the default endpoint for this API. + */ + public get apiEndpoint(): string { + if (this.disableExecuteApiEndpoint) { + throw new Error('apiEndpoint is not accessible when disableExecuteApiEndpoint is set to true.'); + } + return this._apiEndpoint; + } + /** * Get the URL to the default stage of this API. * Returns `undefined` if `createDefaultStage` is unset. diff --git a/packages/@aws-cdk/aws-apigatewayv2/package.json b/packages/@aws-cdk/aws-apigatewayv2/package.json index 2273b4773d06f..47d08c5f18ce5 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts b/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts index b061f613f4ca3..70bc45000ddec 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts @@ -215,6 +215,19 @@ describe('HttpApi', () => { }); }); + test('disableExecuteApiEndpoint is enabled', () => { + const stack = new Stack(); + new HttpApi(stack, 'api', { + disableExecuteApiEndpoint: true, + }); + + expect(stack).toHaveResource('AWS::ApiGatewayV2::Api', { + Name: 'api', + ProtocolType: 'HTTP', + DisableExecuteApiEndpoint: true, + }); + }); + test('can add a vpc links', () => { // GIVEN const stack = new Stack(); @@ -261,6 +274,17 @@ describe('HttpApi', () => { expect(api.apiEndpoint).toBeDefined(); }); + test('throws when accessing apiEndpoint and disableExecuteApiEndpoint is true', () => { + const stack = new Stack(); + const api = new HttpApi(stack, 'api', { + disableExecuteApiEndpoint: true, + }); + + expect(() => api.apiEndpoint).toThrow( + /apiEndpoint is not accessible when disableExecuteApiEndpoint is set to true./, + ); + }); + test('apiEndpoint for imported', () => { const stack = new Stack(); const api = HttpApi.fromHttpApiAttributes(stack, 'imported', { httpApiId: 'api-1234' }); diff --git a/packages/@aws-cdk/aws-appconfig/package.json b/packages/@aws-cdk/aws-appconfig/package.json index 2b53f982ac627..a5a4ff2cffeaf 100644 --- a/packages/@aws-cdk/aws-appconfig/package.json +++ b/packages/@aws-cdk/aws-appconfig/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appflow/package.json b/packages/@aws-cdk/aws-appflow/package.json index 77ecabd32dfc7..c4c9e0656ece7 100644 --- a/packages/@aws-cdk/aws-appflow/package.json +++ b/packages/@aws-cdk/aws-appflow/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts index 1949e53f771e2..092609125e70f 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts @@ -57,7 +57,7 @@ export interface StepScalingPolicyProps extends BasicStepScalingPolicyProps { } /** - * Define a acaling strategy which scales depending on absolute values of some metric. + * Define a scaling strategy which scales depending on absolute values of some metric. * * You can specify the scaling behavior for various values of the metric. * diff --git a/packages/@aws-cdk/aws-applicationautoscaling/package.json b/packages/@aws-cdk/aws-applicationautoscaling/package.json index a05d2c8d7a96b..9fdb2bc837af4 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/package.json +++ b/packages/@aws-cdk/aws-applicationautoscaling/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "nyc": { "branches": 65, diff --git a/packages/@aws-cdk/aws-applicationinsights/package.json b/packages/@aws-cdk/aws-applicationinsights/package.json index 046e2e03399c8..143f9273c9f58 100644 --- a/packages/@aws-cdk/aws-applicationinsights/package.json +++ b/packages/@aws-cdk/aws-applicationinsights/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appmesh/README.md b/packages/@aws-cdk/aws-appmesh/README.md index 9a4fcddf386cc..2253b12d2987d 100644 --- a/packages/@aws-cdk/aws-appmesh/README.md +++ b/packages/@aws-cdk/aws-appmesh/README.md @@ -241,6 +241,44 @@ The `backends` property can be added with `node.addBackend()`. We define a virtu The `backendsDefaultClientPolicy` property are added to the node while creating the virtual node. These are virtual node's service backends client policy defaults. +## Adding TLS to a listener + +The `tlsCertificate` property can be added to a Virtual Node listener or Virtual Gateway listener to add TLS configuration. +A certificate from AWS Certificate Manager can be incorporated or a customer provided certificate can be specified with a `certificateChain` path file and a `privateKey` file path. + +```typescript +import * as certificatemanager from '@aws-cdk/aws-certificatemanager'; + +// A Virtual Node with listener TLS from an ACM provided certificate +const cert = new certificatemanager.Certificate(this, 'cert', {...}); + +const node = new appmesh.VirtualNode(stack, 'node', { + mesh, + dnsHostName: 'node', + listeners: [appmesh.VirtualNodeListener.grpc({ + port: 80, + tlsCertificate: appmesh.TlsCertificate.acm({ + certificate: cert, + tlsMode: TlsMode.STRICT, + }), + })], +}); + +// A Virtual Gateway with listener TLS from a customer provided file certificate +const gateway = new appmesh.VirtualGateway(this, 'gateway', { + mesh: mesh, + listeners: [appmesh.VirtualGatewayListener.grpc({ + port: 8080, + tlsCertificate: appmesh.TlsCertificate.file({ + certificateChain: 'path/to/certChain', + privateKey: 'path/to/privateKey', + tlsMode: TlsMode.STRICT, + }), + })], + virtualGatewayName: 'gateway', +}); +``` + ## Adding a Route A `route` is associated with a virtual router, and it's used to match requests for a virtual router and distribute traffic accordingly to its associated virtual nodes. diff --git a/packages/@aws-cdk/aws-appmesh/lib/index.ts b/packages/@aws-cdk/aws-appmesh/lib/index.ts index a10ef54aa977b..1f5ca87def34d 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/index.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/index.ts @@ -5,6 +5,7 @@ export * from './route'; export * from './service-discovery'; export * from './route-spec'; export * from './shared-interfaces'; +export * from './tls-certificate'; export * from './virtual-node'; export * from './virtual-router'; export * from './virtual-router-listener'; diff --git a/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts b/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts index 91884cecb2550..5793bbf746eda 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts @@ -2,7 +2,6 @@ import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; - /** * Represents the properties needed to define CloudMap Service Discovery */ diff --git a/packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts b/packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts new file mode 100644 index 0000000000000..8fde7e8b7694f --- /dev/null +++ b/packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts @@ -0,0 +1,173 @@ +import * as acm from '@aws-cdk/aws-certificatemanager'; +import { Construct } from 'constructs'; +import { CfnVirtualNode } from './appmesh.generated'; + +/** + * Enum of supported TLS modes + */ +export enum TlsMode { + /** + * Only accept encrypted traffic + */ + STRICT = 'STRICT', + + /** + * Accept encrypted and plaintext traffic. + */ + PERMISSIVE = 'PERMISSIVE', + + /** + * TLS is disabled, only accept plaintext traffic. + */ + DISABLED = 'DISABLED', +} + +/** + * A wrapper for the tls config returned by {@link TlsCertificate.bind} + */ +export interface TlsCertificateConfig { + /** + * The CFN shape for a listener TLS certificate + */ + readonly tlsCertificate: CfnVirtualNode.ListenerTlsCertificateProperty, + + /** + * The TLS mode. + */ + readonly tlsMode: TlsMode; +} + +/** + * ACM Certificate Properties + */ +export interface AcmCertificateOptions { + /** + * The TLS mode. + */ + readonly tlsMode: TlsMode; + + /** + * The ACM certificate + */ + readonly certificate: acm.ICertificate; +} + +/** + * File Certificate Properties + */ +export interface FileCertificateOptions { + /** + * The TLS mode. + */ + readonly tlsMode: TlsMode; + + /** + * The file path of the certificate chain file. + */ + readonly certificateChainPath: string; + + /** + * The file path of the private key file. + */ + readonly privateKeyPath: string; +} + +/** + * Represents a TLS certificate + */ +export abstract class TlsCertificate { + /** + * Returns an File TLS Certificate + */ + public static file(props: FileCertificateOptions): TlsCertificate { + return new FileTlsCertificate(props); + } + + /** + * Returns an ACM TLS Certificate + */ + public static acm(props: AcmCertificateOptions): TlsCertificate { + return new AcmTlsCertificate(props); + } + + /** + * Returns TLS certificate based provider. + */ + public abstract bind(_scope: Construct): TlsCertificateConfig; + +} + +/** + * Represents a ACM provided TLS certificate + */ +class AcmTlsCertificate extends TlsCertificate { + /** + * The TLS mode. + * + * @default - TlsMode.DISABLED + */ + readonly tlsMode: TlsMode; + + /** + * The ARN of the ACM certificate + */ + readonly acmCertificate: acm.ICertificate; + + constructor(props: AcmCertificateOptions) { + super(); + this.tlsMode = props.tlsMode; + this.acmCertificate = props.certificate; + } + + bind(_scope: Construct): TlsCertificateConfig { + return { + tlsCertificate: { + acm: { + certificateArn: this.acmCertificate.certificateArn, + }, + }, + tlsMode: this.tlsMode, + }; + } +} + +/** + * Represents a file provided TLS certificate + */ +class FileTlsCertificate extends TlsCertificate { + /** + * The TLS mode. + * + * @default - TlsMode.DISABLED + */ + readonly tlsMode: TlsMode; + + /** + * The file path of the certificate chain file. + */ + readonly certificateChain: string; + + /** + * The file path of the private key file. + */ + readonly privateKey: string; + + constructor(props: FileCertificateOptions) { + super(); + this.tlsMode = props.tlsMode; + this.certificateChain = props.certificateChainPath; + this.privateKey = props.privateKeyPath; + } + + bind(_scope: Construct): TlsCertificateConfig { + return { + tlsCertificate: { + file: { + certificateChain: this.certificateChain, + privateKey: this.privateKey, + }, + }, + tlsMode: this.tlsMode, + }; + } +} diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts index 0fdcbbf7e256a..9428b2fd41748 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { CfnVirtualGateway } from './appmesh.generated'; import { validateHealthChecks } from './private/utils'; import { HealthCheck, Protocol } from './shared-interfaces'; +import { TlsCertificate, TlsCertificateConfig } from './tls-certificate'; /** * Represents the properties needed to define HTTP Listeners for a VirtualGateway @@ -21,6 +22,13 @@ export interface HttpGatewayListenerOptions { * @default - no healthcheck */ readonly healthCheck?: HealthCheck; + + /** + * Represents the configuration for enabling TLS on a listener + * + * @default - none + */ + readonly tlsCertificate?: TlsCertificate; } /** @@ -40,6 +48,13 @@ export interface GrpcGatewayListenerOptions { * @default - no healthcheck */ readonly healthCheck?: HealthCheck; + + /** + * Represents the listener certificate + * + * @default - none + */ + readonly tlsCertificate?: TlsCertificate; } /** @@ -49,7 +64,7 @@ export interface VirtualGatewayListenerConfig { /** * Single listener config for a VirtualGateway */ - readonly listener: CfnVirtualGateway.VirtualGatewayListenerProperty, + readonly listener: CfnVirtualGateway.VirtualGatewayListenerProperty; } /** @@ -60,21 +75,21 @@ export abstract class VirtualGatewayListener { * Returns an HTTP Listener for a VirtualGateway */ public static http(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { - return new HttpGatewayListener(options); + return new VirtualGatewayListenerImpl(Protocol.HTTP, options.healthCheck, options.port, options.tlsCertificate); } /** * Returns an HTTP2 Listener for a VirtualGateway */ public static http2(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { - return new Http2GatewayListener(options); + return new VirtualGatewayListenerImpl(Protocol.HTTP2, options.healthCheck, options.port, options.tlsCertificate); } /** * Returns a GRPC Listener for a VirtualGateway */ public static grpc(options: GrpcGatewayListenerOptions = {}): VirtualGatewayListener { - return new GrpcGatewayListener(options); + return new VirtualGatewayListenerImpl(Protocol.GRPC, options.healthCheck, options.port, options.tlsCertificate); } /** @@ -87,37 +102,21 @@ export abstract class VirtualGatewayListener { /** * Represents the properties needed to define an HTTP Listener for a VirtualGateway */ -class HttpGatewayListener extends VirtualGatewayListener { - /** - * Port to listen for connections on - * - * @default - 8080 - */ - readonly port: number; +class VirtualGatewayListenerImpl extends VirtualGatewayListener { - /** - * Health checking strategy upstream nodes should use when communicating with the listener - * - * @default - no healthcheck - */ - readonly healthCheck?: HealthCheck; - - /** - * Protocol the listener implements - */ - protected protocol: Protocol = Protocol.HTTP; - - constructor(options: HttpGatewayListenerOptions = {}) { + constructor(private readonly protocol: Protocol, + private readonly healthCheck: HealthCheck | undefined, + private readonly port: number = 8080, + private readonly tlsCertificate: TlsCertificate | undefined) { super(); - this.port = options.port ? options.port : 8080; - this.healthCheck = options.healthCheck; } /** * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ - public bind(_scope: Construct): VirtualGatewayListenerConfig { + public bind(scope: Construct): VirtualGatewayListenerConfig { + const tlsConfig = this.tlsCertificate?.bind(scope); return { listener: { portMapping: { @@ -125,69 +124,25 @@ class HttpGatewayListener extends VirtualGatewayListener { protocol: this.protocol, }, healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, + tls: tlsConfig ? renderTls(tlsConfig) : undefined, }, }; } -} -/** -* Represents the properties needed to define an HTTP2 Listener for a VirtualGateway -*/ -class Http2GatewayListener extends HttpGatewayListener { - constructor(options: HttpGatewayListenerOptions = {}) { - super(options); - this.protocol = Protocol.HTTP2; - } } /** - * Represents the properties needed to define a GRPC Listener for Virtual Gateway + * Renders the TLS config for a listener */ -class GrpcGatewayListener extends VirtualGatewayListener { - /** - * Port to listen for connections on - * - * @default - 8080 - */ - readonly port: number; - - /** - * Health checking strategy upstream nodes should use when communicating with the listener - * - * @default - no healthcheck - */ - readonly healthCheck?: HealthCheck; - - /** - * Protocol the listener implements - */ - protected protocol: Protocol = Protocol.GRPC; - - constructor(options: HttpGatewayListenerOptions = {}) { - super(); - this.port = options.port ? options.port : 8080; - this.healthCheck = options.healthCheck; - } - - /** - * Called when the GatewayListener type is initialized. Can be used to enforce - * mutual exclusivity - */ - public bind(_scope: Construct): VirtualGatewayListenerConfig { - return { - listener: { - portMapping: { - port: this.port, - protocol: Protocol.GRPC, - }, - healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, - }, - }; - } +function renderTls(tlsCertificateConfig: TlsCertificateConfig): CfnVirtualGateway.VirtualGatewayListenerTlsProperty { + return { + certificate: tlsCertificateConfig.tlsCertificate, + mode: tlsCertificateConfig.tlsMode.toString(), + }; } -function renderHealthCheck( - hc: HealthCheck, listenerProtocol: Protocol, listenerPort: number): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty { +function renderHealthCheck(hc: HealthCheck, listenerProtocol: Protocol, + listenerPort: number): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty { if (hc.protocol === Protocol.TCP) { throw new Error('TCP health checks are not permitted for gateway listeners'); diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts index af690970ab192..f918fb9443228 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts @@ -3,6 +3,7 @@ import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; import { validateHealthChecks } from './private/utils'; import { HealthCheck, Protocol, HttpTimeout, GrpcTimeout, TcpTimeout } from './shared-interfaces'; +import { TlsCertificate, TlsCertificateConfig } from './tls-certificate'; /** * Properties for a VirtualNode listener @@ -31,6 +32,13 @@ interface VirtualNodeListenerCommonOptions { * @default - no healthcheck */ readonly healthCheck?: HealthCheck; + + /** + * Represents the configuration for enabling TLS on a listener + * + * @default - none + */ + readonly tlsCertificate?: TlsCertificate; } /** @@ -77,28 +85,28 @@ export abstract class VirtualNodeListener { * Returns an HTTP Listener for a VirtualNode */ public static http(props: HttpVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.HTTP, props.healthCheck, props.timeout, props.port); + return new VirtualNodeListenerImpl(Protocol.HTTP, props.healthCheck, props.timeout, props.port, props.tlsCertificate); } /** * Returns an HTTP2 Listener for a VirtualNode */ public static http2(props: HttpVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.HTTP2, props.healthCheck, props.timeout, props.port); + return new VirtualNodeListenerImpl(Protocol.HTTP2, props.healthCheck, props.timeout, props.port, props.tlsCertificate); } /** * Returns an GRPC Listener for a VirtualNode */ public static grpc(props: GrpcVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.GRPC, props.healthCheck, props.timeout, props.port); + return new VirtualNodeListenerImpl(Protocol.GRPC, props.healthCheck, props.timeout, props.port, props.tlsCertificate); } /** * Returns an TCP Listener for a VirtualNode */ public static tcp(props: TcpVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.TCP, props.healthCheck, props.timeout, props.port); + return new VirtualNodeListenerImpl(Protocol.TCP, props.healthCheck, props.timeout, props.port, props.tlsCertificate); } /** @@ -112,9 +120,11 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { constructor(private readonly protocol: Protocol, private readonly healthCheck: HealthCheck | undefined, private readonly timeout: HttpTimeout | undefined, - private readonly port: number = 8080) { super(); } + private readonly port: number = 8080, + private readonly tlsCertificate: TlsCertificate | undefined) { super(); } - public bind(_scope: Construct): VirtualNodeListenerConfig { + public bind(scope: Construct): VirtualNodeListenerConfig { + const tlsConfig = this.tlsCertificate?.bind(scope); return { listener: { portMapping: { @@ -123,10 +133,21 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { }, healthCheck: this.healthCheck ? this.renderHealthCheck(this.healthCheck) : undefined, timeout: this.timeout ? this.renderTimeout(this.timeout) : undefined, + tls: tlsConfig ? this.renderTls(tlsConfig) : undefined, }, }; } + /** + * Renders the TLS config for a listener + */ + private renderTls(tlsCertificateConfig: TlsCertificateConfig): CfnVirtualNode.ListenerTlsProperty { + return { + certificate: tlsCertificateConfig.tlsCertificate, + mode: tlsCertificateConfig.tlsMode.toString(), + }; + } + private renderHealthCheck(hc: HealthCheck): CfnVirtualNode.HealthCheckProperty | undefined { if (hc === undefined) { return undefined; } @@ -168,3 +189,4 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { }); } } + diff --git a/packages/@aws-cdk/aws-appmesh/package.json b/packages/@aws-cdk/aws-appmesh/package.json index d684ac2641dc2..b2dd882828beb 100644 --- a/packages/@aws-cdk/aws-appmesh/package.json +++ b/packages/@aws-cdk/aws-appmesh/package.json @@ -88,6 +88,7 @@ }, "dependencies": { "@aws-cdk/aws-acmpca": "0.0.0", + "@aws-cdk/aws-certificatemanager": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", @@ -96,6 +97,7 @@ }, "peerDependencies": { "@aws-cdk/aws-acmpca": "0.0.0", + "@aws-cdk/aws-certificatemanager": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", @@ -103,7 +105,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json index e642633387206..db9277d071432 100644 --- a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json +++ b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json @@ -649,6 +649,17 @@ "VirtualServiceName": "service1.domain.local" } }, + "cert56CA94EB": { + "Type": "AWS::CertificateManager::Certificate", + "Properties": { + "DomainName":"node1.domain.local", + "DomainValidationOptions": [{ + "DomainName":"node1.domain.local", + "ValidationDomain":"local" + }], + "ValidationMethod": "EMAIL" + } + }, "meshnode726C787D": { "Type": "AWS::AppMesh::VirtualNode", "Properties": { @@ -695,6 +706,16 @@ "PortMapping": { "Port": 8080, "Protocol": "http" + }, + "TLS": { + "Certificate": { + "ACM": { + "CertificateArn": { + "Ref": "cert56CA94EB" + } + } + }, + "Mode": "STRICT" } } ], @@ -1019,6 +1040,15 @@ "PortMapping": { "Port": 443, "Protocol": "http" + }, + "TLS": { + "Certificate": { + "File": { + "CertificateChain": "path/to/certChain", + "PrivateKey": "path/to/privateKey" + } + }, + "Mode": "STRICT" } } ] diff --git a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts index 2f1884b3f7e63..730418aef7970 100644 --- a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts +++ b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts @@ -1,4 +1,5 @@ import * as acmpca from '@aws-cdk/aws-acmpca'; +import * as acm from '@aws-cdk/aws-certificatemanager'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import * as cdk from '@aws-cdk/core'; @@ -29,6 +30,10 @@ const virtualService = mesh.addVirtualService('service', { virtualServiceName: 'service1.domain.local', }); +const cert = new acm.Certificate(stack, 'cert', { + domainName: `node1.${namespace.namespaceName}`, +}); + const node = mesh.addVirtualNode('node', { serviceDiscovery: appmesh.ServiceDiscovery.dns(`node1.${namespace.namespaceName}`), listeners: [appmesh.VirtualNodeListener.http({ @@ -36,6 +41,10 @@ const node = mesh.addVirtualNode('node', { healthyThreshold: 3, path: '/check-path', }, + tlsCertificate: appmesh.TlsCertificate.acm({ + certificate: cert, + tlsMode: appmesh.TlsMode.STRICT, + }), })], backends: [ virtualService, @@ -155,6 +164,11 @@ new appmesh.VirtualGateway(stack, 'gateway2', { healthCheck: { interval: cdk.Duration.seconds(10), }, + tlsCertificate: appmesh.TlsCertificate.file({ + certificateChainPath: 'path/to/certChain', + privateKeyPath: 'path/to/privateKey', + tlsMode: appmesh.TlsMode.STRICT, + }), })], }); diff --git a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts index 6207e49ce0be1..7b4a563c90d34 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts @@ -1,7 +1,7 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; +import * as acm from '@aws-cdk/aws-certificatemanager'; import * as cdk from '@aws-cdk/core'; import { Test } from 'nodeunit'; - import * as appmesh from '../lib'; export = { @@ -153,6 +153,142 @@ export = { })); test.done(); }, + + 'with an http listener with a TLS certificate from ACM'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + const mesh = new appmesh.Mesh(stack, 'mesh', { + meshName: 'test-mesh', + }); + + const cert = new acm.Certificate(stack, 'cert', { + domainName: '', + }); + + new appmesh.VirtualGateway(stack, 'testGateway', { + virtualGatewayName: 'test-gateway', + mesh: mesh, + listeners: [appmesh.VirtualGatewayListener.http({ + port: 8080, + tlsCertificate: appmesh.TlsCertificate.acm({ + tlsMode: appmesh.TlsMode.STRICT, + certificate: cert, + }), + })], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualGateway', { + Spec: { + Listeners: [ + { + TLS: { + Mode: appmesh.TlsMode.STRICT, + Certificate: { + ACM: { + CertificateArn: { + Ref: 'cert56CA94EB', + }, + }, + }, + }, + }, + ], + }, + })); + + test.done(); + }, + + 'with an grpc listener with a TLS certificate from file'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + const mesh = new appmesh.Mesh(stack, 'mesh', { + meshName: 'test-mesh', + }); + + new appmesh.VirtualGateway(stack, 'testGateway', { + virtualGatewayName: 'test-gateway', + mesh: mesh, + listeners: [appmesh.VirtualGatewayListener.grpc({ + port: 8080, + tlsCertificate: appmesh.TlsCertificate.file({ + certificateChainPath: 'path/to/certChain', + privateKeyPath: 'path/to/privateKey', + tlsMode: appmesh.TlsMode.STRICT, + }), + })], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualGateway', { + Spec: { + Listeners: [ + { + TLS: { + Mode: appmesh.TlsMode.STRICT, + Certificate: { + File: { + CertificateChain: 'path/to/certChain', + PrivateKey: 'path/to/privateKey', + }, + }, + }, + }, + ], + }, + })); + + test.done(); + }, + + 'with an grpc listener with the TLS mode permissive'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + const mesh = new appmesh.Mesh(stack, 'mesh', { + meshName: 'test-mesh', + }); + + new appmesh.VirtualGateway(stack, 'testGateway', { + virtualGatewayName: 'test-gateway', + mesh: mesh, + listeners: [appmesh.VirtualGatewayListener.grpc({ + port: 8080, + tlsCertificate: appmesh.TlsCertificate.file({ + certificateChainPath: 'path/to/certChain', + privateKeyPath: 'path/to/privateKey', + tlsMode: appmesh.TlsMode.PERMISSIVE, + }), + })], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualGateway', { + Spec: { + Listeners: [ + { + TLS: { + Mode: appmesh.TlsMode.PERMISSIVE, + Certificate: { + File: { + CertificateChain: 'path/to/certChain', + PrivateKey: 'path/to/privateKey', + }, + }, + }, + }, + ], + }, + })); + + test.done(); + }, }, 'When adding a gateway route to existing VirtualGateway ': { diff --git a/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts b/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts index ffc7e60107ba1..9fb05931a2a44 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts @@ -1,5 +1,6 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as acmpca from '@aws-cdk/aws-acmpca'; +import * as acm from '@aws-cdk/aws-certificatemanager'; import * as cdk from '@aws-cdk/core'; import { Test } from 'nodeunit'; import * as appmesh from '../lib'; @@ -357,7 +358,149 @@ export = { test.done(); }, }, + + 'when a grpc listener is added with a TLS certificate from ACM': { + 'the listener should include the TLS configuration'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + const mesh = new appmesh.Mesh(stack, 'mesh', { + meshName: 'test-mesh', + }); + + const cert = new acm.Certificate(stack, 'cert', { + domainName: '', + }); + + new appmesh.VirtualNode(stack, 'test-node', { + mesh, + listeners: [appmesh.VirtualNodeListener.grpc({ + port: 80, + tlsCertificate: appmesh.TlsCertificate.acm({ + certificate: cert, + tlsMode: appmesh.TlsMode.STRICT, + }), + }, + )], + }); + + // THEN + + expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualNode', { + Spec: { + Listeners: [ + { + TLS: { + Mode: appmesh.TlsMode.STRICT, + Certificate: { + ACM: { + CertificateArn: { + Ref: 'cert56CA94EB', + }, + }, + }, + }, + }, + ], + }, + })); + + test.done(); + }, + }, + + 'when an http listener is added with a TLS certificate from file': { + 'the listener should include the TLS configuration'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + const mesh = new appmesh.Mesh(stack, 'mesh', { + meshName: 'test-mesh', + }); + + new appmesh.VirtualNode(stack, 'test-node', { + mesh, + listeners: [appmesh.VirtualNodeListener.http({ + port: 80, + tlsCertificate: appmesh.TlsCertificate.file({ + certificateChainPath: 'path/to/certChain', + privateKeyPath: 'path/to/privateKey', + tlsMode: appmesh.TlsMode.STRICT, + }), + })], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualNode', { + Spec: { + Listeners: [ + { + TLS: { + Mode: appmesh.TlsMode.STRICT, + Certificate: { + File: { + CertificateChain: 'path/to/certChain', + PrivateKey: 'path/to/privateKey', + }, + }, + }, + }, + ], + }, + })); + + test.done(); + }, + }, + + 'when an http listener is added with the TLS mode permissive': { + 'the listener should include the TLS configuration'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + + // WHEN + const mesh = new appmesh.Mesh(stack, 'mesh', { + meshName: 'test-mesh', + }); + + new appmesh.VirtualNode(stack, 'test-node', { + mesh, + listeners: [appmesh.VirtualNodeListener.http({ + port: 80, + tlsCertificate: appmesh.TlsCertificate.file({ + certificateChainPath: 'path/to/certChain', + privateKeyPath: 'path/to/privateKey', + tlsMode: appmesh.TlsMode.PERMISSIVE, + }), + })], + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualNode', { + Spec: { + Listeners: [ + { + TLS: { + Mode: appmesh.TlsMode.PERMISSIVE, + Certificate: { + File: { + CertificateChain: 'path/to/certChain', + PrivateKey: 'path/to/privateKey', + }, + }, + }, + }, + ], + }, + })); + + test.done(); + }, + }, }, + 'Can import Virtual Nodes using an ARN'(test: Test) { // GIVEN const stack = new cdk.Stack(); diff --git a/packages/@aws-cdk/aws-appstream/package.json b/packages/@aws-cdk/aws-appstream/package.json index dc58f32d7dfe0..bd25e2530059d 100644 --- a/packages/@aws-cdk/aws-appstream/package.json +++ b/packages/@aws-cdk/aws-appstream/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appsync/README.md b/packages/@aws-cdk/aws-appsync/README.md index 794cff6db3cda..61c4e797f5bb4 100644 --- a/packages/@aws-cdk/aws-appsync/README.md +++ b/packages/@aws-cdk/aws-appsync/README.md @@ -75,20 +75,23 @@ const demoTable = new db.Table(stack, 'DemoTable', { const demoDS = api.addDynamoDbDataSource('demoDataSource', demoTable); -// Resolver for the Query "getDemos" that scans the DyanmoDb table and returns the entire list. +// Resolver for the Query "getDemos" that scans the DynamoDb table and returns the entire list. demoDS.createResolver({ typeName: 'Query', fieldName: 'getDemos', - requestMappingTemplate: MappingTemplate.dynamoDbScanTable(), - responseMappingTemplate: MappingTemplate.dynamoDbResultList(), + requestMappingTemplate: appsync.MappingTemplate.dynamoDbScanTable(), + responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultList(), }); // Resolver for the Mutation "addDemo" that puts the item into the DynamoDb table. demoDS.createResolver({ typeName: 'Mutation', fieldName: 'addDemo', - requestMappingTemplate: MappingTemplate.dynamoDbPutItem(PrimaryKey.partition('id').auto(), Values.projecting('demo')), - responseMappingTemplate: MappingTemplate.dynamoDbResultItem(), + requestMappingTemplate: appsync.MappingTemplate.dynamoDbPutItem( + appsync.PrimaryKey.partition('id').auto(), + appsync.Values.projecting('demo') + ), + responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultItem(), }); ``` diff --git a/packages/@aws-cdk/aws-appsync/lib/data-source.ts b/packages/@aws-cdk/aws-appsync/lib/data-source.ts index 70e0576687de7..0132de1534383 100644 --- a/packages/@aws-cdk/aws-appsync/lib/data-source.ts +++ b/packages/@aws-cdk/aws-appsync/lib/data-source.ts @@ -3,7 +3,7 @@ import { Grant, IGrantable, IPrincipal, IRole, Role, ServicePrincipal } from '@a import { IFunction } from '@aws-cdk/aws-lambda'; import { IDatabaseCluster } from '@aws-cdk/aws-rds'; import { ISecret } from '@aws-cdk/aws-secretsmanager'; -import { IResolvable, Stack } from '@aws-cdk/core'; +import { IResolvable, Lazy, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { BaseAppsyncFunctionProps, AppsyncFunction } from './appsync-function'; import { CfnDataSource } from './appsync.generated'; @@ -314,17 +314,25 @@ export class RdsDataSource extends BackedDataSource { relationalDatabaseConfig: { rdsHttpEndpointConfig: { awsRegion: props.databaseCluster.stack.region, - dbClusterIdentifier: props.databaseCluster.clusterIdentifier, + dbClusterIdentifier: Lazy.string({ + produce: () => { + return Stack.of(this).formatArn({ + service: 'rds', + resource: `cluster:${props.databaseCluster.clusterIdentifier}`, + }); + }, + }), awsSecretStoreArn: props.secretStore.secretArn, }, relationalDatabaseSourceType: 'RDS_HTTP_ENDPOINT', }, }); - props.secretStore.grantRead(this); const clusterArn = Stack.of(this).formatArn({ service: 'rds', resource: `cluster:${props.databaseCluster.clusterIdentifier}`, }); + props.secretStore.grantRead(this); + // Change to grant with RDS grant becomes implemented Grant.addToPrincipal({ grantee: this, diff --git a/packages/@aws-cdk/aws-appsync/package.json b/packages/@aws-cdk/aws-appsync/package.json index 675b7dd08f3a7..1f4779edad008 100644 --- a/packages/@aws-cdk/aws-appsync/package.json +++ b/packages/@aws-cdk/aws-appsync/package.json @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts b/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts index ba0d80d00037b..97cea819de8f3 100644 --- a/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts +++ b/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts @@ -97,6 +97,32 @@ describe('Rds Data Source configuration', () => { }); }); + test('rds cluster arn saved to RdsHttpEndpointConfig', () => { + // WHEN + api.addRdsDataSource('ds', cluster, secret); + + // THEN + expect(stack).toHaveResourceLike('AWS::AppSync::DataSource', { + Type: 'RELATIONAL_DATABASE', + RelationalDatabaseConfig: { + RdsHttpEndpointConfig: { + AwsRegion: { Ref: 'AWS::Region' }, + AwsSecretStoreArn: { Ref: 'AuroraSecret41E6E877' }, + DbClusterIdentifier: { + 'Fn::Join': ['', ['arn:', + { Ref: 'AWS::Partition' }, + ':rds:', + { Ref: 'AWS::Region' }, + ':', + { Ref: 'AWS::AccountId' }, + ':cluster:', + { Ref: 'AuroraCluster23D869C0' }]], + }, + }, + }, + }); + }); + test('default configuration produces name identical to the id', () => { // WHEN api.addRdsDataSource('ds', cluster, secret); diff --git a/packages/@aws-cdk/aws-athena/package.json b/packages/@aws-cdk/aws-athena/package.json index 60190909b1eb7..636e7e0db2440 100644 --- a/packages/@aws-cdk/aws-athena/package.json +++ b/packages/@aws-cdk/aws-athena/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-auditmanager/.eslintrc.js b/packages/@aws-cdk/aws-auditmanager/.eslintrc.js new file mode 100644 index 0000000000000..61dd8dd001f63 --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-auditmanager/.gitignore b/packages/@aws-cdk/aws-auditmanager/.gitignore new file mode 100644 index 0000000000000..62ebc95d75ce6 --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/.gitignore @@ -0,0 +1,19 @@ +*.js +*.js.map +*.d.ts +tsconfig.json +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk +nyc.config.js +!.eslintrc.js +!jest.config.js +junit.xml diff --git a/packages/@aws-cdk/aws-auditmanager/.npmignore b/packages/@aws-cdk/aws-auditmanager/.npmignore new file mode 100644 index 0000000000000..e4486030fcb17 --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/.npmignore @@ -0,0 +1,28 @@ +# Don't include original .ts files when doing `npm pack` +*.ts +!*.d.ts +coverage +.nyc_output +*.tgz + +dist +.LAST_PACKAGE +.LAST_BUILD +!*.js + +# Include .jsii +!.jsii + +*.snk + +*.tsbuildinfo + +tsconfig.json + +.eslintrc.js +jest.config.js + +# exclude cdk artifacts +**/cdk.out +junit.xml +test/ diff --git a/packages/@aws-cdk/aws-auditmanager/LICENSE b/packages/@aws-cdk/aws-auditmanager/LICENSE new file mode 100644 index 0000000000000..28e4bdcec77ec --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-auditmanager/NOTICE b/packages/@aws-cdk/aws-auditmanager/NOTICE new file mode 100644 index 0000000000000..5fc3826926b5b --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-auditmanager/README.md b/packages/@aws-cdk/aws-auditmanager/README.md new file mode 100644 index 0000000000000..ee34051ab78e3 --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/README.md @@ -0,0 +1,20 @@ +# AWS::AuditManager Construct Library + + +--- + +![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) + +> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use. +> +> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib + +--- + + + +This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. + +```ts +import auditmanager = require('@aws-cdk/aws-auditmanager'); +``` diff --git a/packages/@aws-cdk/aws-auditmanager/jest.config.js b/packages/@aws-cdk/aws-auditmanager/jest.config.js new file mode 100644 index 0000000000000..54e28beb9798b --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-auditmanager/lib/index.ts b/packages/@aws-cdk/aws-auditmanager/lib/index.ts new file mode 100644 index 0000000000000..f6234117e603f --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::AuditManager CloudFormation Resources: +export * from './auditmanager.generated'; diff --git a/packages/@aws-cdk/aws-auditmanager/package.json b/packages/@aws-cdk/aws-auditmanager/package.json new file mode 100644 index 0000000000000..6ba8246bf99e5 --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/package.json @@ -0,0 +1,100 @@ +{ + "name": "@aws-cdk/aws-auditmanager", + "version": "0.0.0", + "description": "The CDK Construct Library for AWS::AuditManager", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "projectReferences": true, + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.AuditManager", + "packageId": "Amazon.CDK.AWS.AuditManager", + "signAssembly": true, + "assemblyOriginatorKeyFile": "../../key.snk", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "java": { + "package": "software.amazon.awscdk.services.auditmanager", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "auditmanager" + } + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 1" + ], + "distName": "aws-cdk.aws-auditmanager", + "module": "aws_cdk.aws_auditmanager" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-auditmanager" + }, + "homepage": "https://github.com/aws/aws-cdk", + "scripts": { + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "cdk-integ", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", + "cfn2ts": "cfn2ts", + "build+test+package": "npm run build+test && npm run package", + "build+test": "npm run build && npm test", + "compat": "cdk-compat", + "gen": "cfn2ts", + "rosetta:extract": "yarn --silent jsii-rosetta extract" + }, + "cdk-build": { + "cloudformation": "AWS::AuditManager", + "jest": true, + "env": { + "AWSLINT_BASE_CONSTRUCT": "true" + } + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "AWS::AuditManager", + "aws-auditmanager" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "0.0.0", + "cdk-build-tools": "0.0.0", + "cfn2ts": "0.0.0", + "pkglint": "0.0.0" + }, + "dependencies": { + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" + }, + "peerDependencies": { + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" + }, + "engines": { + "node": ">= 14.15.0" + }, + "stability": "experimental", + "maturity": "cfn-only", + "awscdkio": { + "announce": false + }, + "private": true +} diff --git a/packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts b/packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts new file mode 100644 index 0000000000000..e394ef336bfb4 --- /dev/null +++ b/packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts @@ -0,0 +1,6 @@ +import '@aws-cdk/assert/jest'; +import {} from '../lib'; + +test('No tests are specified for this package', () => { + expect(true).toBe(true); +}); diff --git a/packages/@aws-cdk/aws-autoscaling-common/package.json b/packages/@aws-cdk/aws-autoscaling-common/package.json index 74ee22b8e4e68..d2a4727f8dd5f 100644 --- a/packages/@aws-cdk/aws-autoscaling-common/package.json +++ b/packages/@aws-cdk/aws-autoscaling-common/package.json @@ -106,7 +106,7 @@ ] }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index 92243308c0f6f..817a72b2a57df 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-autoscaling/package.json b/packages/@aws-cdk/aws-autoscaling/package.json index d3ae544c25854..866ab4faa891b 100644 --- a/packages/@aws-cdk/aws-autoscaling/package.json +++ b/packages/@aws-cdk/aws-autoscaling/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-autoscalingplans/package.json b/packages/@aws-cdk/aws-autoscalingplans/package.json index dc3f19ca4eacb..3471d9669f49d 100644 --- a/packages/@aws-cdk/aws-autoscalingplans/package.json +++ b/packages/@aws-cdk/aws-autoscalingplans/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-backup/package.json b/packages/@aws-cdk/aws-backup/package.json index 73e4aea43bad6..aaab59716d22d 100644 --- a/packages/@aws-cdk/aws-backup/package.json +++ b/packages/@aws-cdk/aws-backup/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-batch/package.json b/packages/@aws-cdk/aws-batch/package.json index 1138c735829cb..a0466afc56ced 100644 --- a/packages/@aws-cdk/aws-batch/package.json +++ b/packages/@aws-cdk/aws-batch/package.json @@ -103,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-budgets/package.json b/packages/@aws-cdk/aws-budgets/package.json index 9e6337dacca2e..14b8c8e6a27dd 100644 --- a/packages/@aws-cdk/aws-budgets/package.json +++ b/packages/@aws-cdk/aws-budgets/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-cassandra/package.json b/packages/@aws-cdk/aws-cassandra/package.json index 260bf21b88421..52e56a27d2e4d 100644 --- a/packages/@aws-cdk/aws-cassandra/package.json +++ b/packages/@aws-cdk/aws-cassandra/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ce/package.json b/packages/@aws-cdk/aws-ce/package.json index cea361aa5330e..846c609faa1f8 100644 --- a/packages/@aws-cdk/aws-ce/package.json +++ b/packages/@aws-cdk/aws-ce/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-certificatemanager/package.json b/packages/@aws-cdk/aws-certificatemanager/package.json index 1408d12da5030..186844eba2905 100644 --- a/packages/@aws-cdk/aws-certificatemanager/package.json +++ b/packages/@aws-cdk/aws-certificatemanager/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-chatbot/package.json b/packages/@aws-cdk/aws-chatbot/package.json index 411d86b8decf6..fd0bd2e678b02 100644 --- a/packages/@aws-cdk/aws-chatbot/package.json +++ b/packages/@aws-cdk/aws-chatbot/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-cloud9/package.json b/packages/@aws-cdk/aws-cloud9/package.json index 75392c444cc7b..f03ea8fc68eb4 100644 --- a/packages/@aws-cdk/aws-cloud9/package.json +++ b/packages/@aws-cdk/aws-cloud9/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudformation/package.json b/packages/@aws-cdk/aws-cloudformation/package.json index 5eb0f585689bb..7d6b8ce021e9c 100644 --- a/packages/@aws-cdk/aws-cloudformation/package.json +++ b/packages/@aws-cdk/aws-cloudformation/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index 2f54cd51caa60..8ba4f39f0d7b3 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "pkglint": "0.0.0" @@ -95,7 +95,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index eaee0e452a805..d75c587889e3d 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -75,7 +75,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index 8a768f18b97c7..1d2e72f08a587 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -75,7 +75,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -112,7 +112,7 @@ ] }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index a500201df2b70..0ec045589ab34 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-cloudwatch/package.json b/packages/@aws-cdk/aws-cloudwatch/package.json index 145245299dde3..ef6b44705ebc5 100644 --- a/packages/@aws-cdk/aws-cloudwatch/package.json +++ b/packages/@aws-cdk/aws-cloudwatch/package.json @@ -115,7 +115,7 @@ ] }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-codeartifact/package.json b/packages/@aws-cdk/aws-codeartifact/package.json index f7ecfab89b381..af2f92dc4d913 100644 --- a/packages/@aws-cdk/aws-codeartifact/package.json +++ b/packages/@aws-cdk/aws-codeartifact/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codebuild/lib/project.ts b/packages/@aws-cdk/aws-codebuild/lib/project.ts index 656772bd6b188..fe3ab4424220d 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/project.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/project.ts @@ -1431,6 +1431,8 @@ export class LinuxBuildImage implements IBuildImage { public static readonly STANDARD_3_0 = LinuxBuildImage.codeBuildImage('aws/codebuild/standard:3.0'); /** The `aws/codebuild/standard:4.0` build image. */ public static readonly STANDARD_4_0 = LinuxBuildImage.codeBuildImage('aws/codebuild/standard:4.0'); + /** The `aws/codebuild/standard:5.0` build image. */ + public static readonly STANDARD_5_0 = LinuxBuildImage.codeBuildImage('aws/codebuild/standard:5.0'); public static readonly AMAZON_LINUX_2 = LinuxBuildImage.codeBuildImage('aws/codebuild/amazonlinux2-x86_64-standard:1.0'); public static readonly AMAZON_LINUX_2_2 = LinuxBuildImage.codeBuildImage('aws/codebuild/amazonlinux2-x86_64-standard:2.0'); @@ -1771,8 +1773,10 @@ export interface BuildEnvironmentVariable { readonly type?: BuildEnvironmentVariableType; /** - * The value of the environment variable (or the name of the parameter in - * the SSM parameter store.) + * The value of the environment variable. + * For plain-text variables (the default), this is the literal value of variable. + * For SSM parameter variables, pass the name of the parameter here (`parameterName` property of `IParameter`). + * For SecretsManager variables secrets, pass the secret name here (`secretName` property of `ISecret`). */ readonly value: any; } diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index caa6ea540bf3b..c6695504192d0 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -81,7 +81,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -126,7 +126,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index 0b0a1e59e0067..b6984776ef19a 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -81,7 +81,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-codedeploy/package.json b/packages/@aws-cdk/aws-codedeploy/package.json index f148fda75d9a7..30f68f86a19a6 100644 --- a/packages/@aws-cdk/aws-codedeploy/package.json +++ b/packages/@aws-cdk/aws-codedeploy/package.json @@ -112,7 +112,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codeguruprofiler/package.json b/packages/@aws-cdk/aws-codeguruprofiler/package.json index de619dff0c1ce..427d99cfccf4e 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/package.json +++ b/packages/@aws-cdk/aws-codeguruprofiler/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-codegurureviewer/package.json b/packages/@aws-cdk/aws-codegurureviewer/package.json index ff9b04bf1dcca..9aa4f8c52be08 100644 --- a/packages/@aws-cdk/aws-codegurureviewer/package.json +++ b/packages/@aws-cdk/aws-codegurureviewer/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts index 0273a1cafe827..0805ae2ab8cab 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts @@ -112,6 +112,12 @@ export class S3DeployAction extends Action { // pipeline needs permissions to write to the S3 bucket this.props.bucket.grantWrite(options.role); + if (this.props.accessControl !== undefined) { + // we need to modify the ACL settings of objects within the Bucket, + // so grant the Action's Role permissions to do that + this.props.bucket.grantPutAcl(options.role); + } + // the Action Role also needs to read from the Pipeline's bucket options.bucket.grantRead(options.role); diff --git a/packages/@aws-cdk/aws-codepipeline-actions/package.json b/packages/@aws-cdk/aws-codepipeline-actions/package.json index d083acbf9cefd..7461f76edf534 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/package.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/package.json @@ -127,7 +127,7 @@ "case" ], "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json index d6bc02e90525c..d37bdc0c6798c 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json @@ -12,155 +12,9 @@ }, "DeployBucket67E2C076": { "Type": "AWS::S3::Bucket", - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, - "PipelineArtifactsBucketEncryptionKey01D58D69": { - "Type": "AWS::KMS::Key", - "Properties": { - "KeyPolicy": { - "Statement": [ - { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::", - { - "Ref": "AWS::AccountId" - }, - ":root" - ] - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceCodePipelineActionRoleC6F9E7F5", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineDeployDeployActionCodePipelineActionRole1C288A60", - "Arn" - ] - } - }, - "Resource": "*" - } - ], - "Version": "2012-10-17" - } - }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" }, - "PipelineArtifactsBucketEncryptionKeyAlias5C510EEE": { - "Type": "AWS::KMS::Alias", - "Properties": { - "AliasName": "alias/codepipeline-awscdkcodepipelines3deploypipeline907bf1e7", - "TargetKeyId": { - "Fn::GetAtt": [ - "PipelineArtifactsBucketEncryptionKey01D58D69", - "Arn" - ] - } - }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete" - }, - "PipelineArtifactsBucket22248F97": { - "Type": "AWS::S3::Bucket", - "Properties": { - "BucketEncryption": { - "ServerSideEncryptionConfiguration": [ - { - "ServerSideEncryptionByDefault": { - "KMSMasterKeyID": { - "Fn::GetAtt": [ - "PipelineArtifactsBucketEncryptionKey01D58D69", - "Arn" - ] - }, - "SSEAlgorithm": "aws:kms" - } - } - ] - }, - "PublicAccessBlockConfiguration": { - "BlockPublicAcls": true, - "BlockPublicPolicy": true, - "IgnorePublicAcls": true, - "RestrictPublicBuckets": true - } - }, - "UpdateReplacePolicy": "Retain", - "DeletionPolicy": "Retain" - }, "PipelineRoleD68726F7": { "Type": "AWS::IAM::Role", "Properties": { @@ -196,7 +50,7 @@ "Resource": [ { "Fn::GetAtt": [ - "PipelineArtifactsBucket22248F97", + "PipelineBucketB967BD35", "Arn" ] }, @@ -206,7 +60,7 @@ [ { "Fn::GetAtt": [ - "PipelineArtifactsBucket22248F97", + "PipelineBucketB967BD35", "Arn" ] }, @@ -216,22 +70,6 @@ } ] }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Resource": { - "Fn::GetAtt": [ - "PipelineArtifactsBucketEncryptionKey01D58D69", - "Arn" - ] - } - }, { "Action": "sts:AssumeRole", "Effect": "Allow", @@ -341,17 +179,8 @@ } ], "ArtifactStore": { - "EncryptionKey": { - "Id": { - "Fn::GetAtt": [ - "PipelineArtifactsBucketEncryptionKey01D58D69", - "Arn" - ] - }, - "Type": "KMS" - }, "Location": { - "Ref": "PipelineArtifactsBucket22248F97" + "Ref": "PipelineBucketB967BD35" }, "Type": "S3" } @@ -438,7 +267,7 @@ "Resource": [ { "Fn::GetAtt": [ - "PipelineArtifactsBucket22248F97", + "PipelineBucketB967BD35", "Arn" ] }, @@ -448,7 +277,7 @@ [ { "Fn::GetAtt": [ - "PipelineArtifactsBucket22248F97", + "PipelineBucketB967BD35", "Arn" ] }, @@ -457,21 +286,6 @@ ] } ] - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Resource": { - "Fn::GetAtt": [ - "PipelineArtifactsBucketEncryptionKey01D58D69", - "Arn" - ] - } } ], "Version": "2012-10-17" @@ -551,6 +365,24 @@ } ] }, + { + "Action": "s3:PutObjectAcl", + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "DeployBucket67E2C076", + "Arn" + ] + }, + "/*" + ] + ] + } + }, { "Action": [ "s3:GetObject*", @@ -561,7 +393,7 @@ "Resource": [ { "Fn::GetAtt": [ - "PipelineArtifactsBucket22248F97", + "PipelineBucketB967BD35", "Arn" ] }, @@ -571,7 +403,7 @@ [ { "Fn::GetAtt": [ - "PipelineArtifactsBucket22248F97", + "PipelineBucketB967BD35", "Arn" ] }, @@ -580,19 +412,6 @@ ] } ] - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Resource": { - "Fn::GetAtt": [ - "PipelineArtifactsBucketEncryptionKey01D58D69", - "Arn" - ] - } } ], "Version": "2012-10-17" diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts index b012d6ff8aeb8..5277170c0ca59 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts @@ -19,9 +19,12 @@ const sourceAction = new cpactions.S3SourceAction({ bucketKey: 'key', }); -const deployBucket = new s3.Bucket(stack, 'DeployBucket', {}); +const deployBucket = new s3.Bucket(stack, 'DeployBucket', { + removalPolicy: cdk.RemovalPolicy.DESTROY, +}); new codepipeline.Pipeline(stack, 'Pipeline', { + artifactBucket: bucket, stages: [ { stageName: 'Source', diff --git a/packages/@aws-cdk/aws-codepipeline/package.json b/packages/@aws-cdk/aws-codepipeline/package.json index 26bce804351c9..bf8f9fee5a456 100644 --- a/packages/@aws-cdk/aws-codepipeline/package.json +++ b/packages/@aws-cdk/aws-codepipeline/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codestar/package.json b/packages/@aws-cdk/aws-codestar/package.json index 56bac132e6acf..7e71ddca2b7b9 100644 --- a/packages/@aws-cdk/aws-codestar/package.json +++ b/packages/@aws-cdk/aws-codestar/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codestarconnections/package.json b/packages/@aws-cdk/aws-codestarconnections/package.json index 761c8e42b7df2..ad88fe1cda03b 100644 --- a/packages/@aws-cdk/aws-codestarconnections/package.json +++ b/packages/@aws-cdk/aws-codestarconnections/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codestarnotifications/package.json b/packages/@aws-cdk/aws-codestarnotifications/package.json index 9c8feaf505dc3..6b6ee628a1565 100644 --- a/packages/@aws-cdk/aws-codestarnotifications/package.json +++ b/packages/@aws-cdk/aws-codestarnotifications/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 26064cc93dce1..085ef0953d4b7 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -104,7 +104,7 @@ "punycode" ], "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-config/package.json b/packages/@aws-cdk/aws-config/package.json index 5b8812acb1d8f..8c03cccbc41ef 100644 --- a/packages/@aws-cdk/aws-config/package.json +++ b/packages/@aws-cdk/aws-config/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json index 6a42329c36617..f516110f39116 100644 --- a/packages/@aws-cdk/aws-databrew/package.json +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-datapipeline/package.json b/packages/@aws-cdk/aws-datapipeline/package.json index 377bace5f77f4..f612b24e4bde1 100644 --- a/packages/@aws-cdk/aws-datapipeline/package.json +++ b/packages/@aws-cdk/aws-datapipeline/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-datasync/.eslintrc.js b/packages/@aws-cdk/aws-datasync/.eslintrc.js new file mode 100644 index 0000000000000..61dd8dd001f63 --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-datasync/.gitignore b/packages/@aws-cdk/aws-datasync/.gitignore new file mode 100644 index 0000000000000..62ebc95d75ce6 --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/.gitignore @@ -0,0 +1,19 @@ +*.js +*.js.map +*.d.ts +tsconfig.json +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk +nyc.config.js +!.eslintrc.js +!jest.config.js +junit.xml diff --git a/packages/@aws-cdk/aws-datasync/.npmignore b/packages/@aws-cdk/aws-datasync/.npmignore new file mode 100644 index 0000000000000..e4486030fcb17 --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/.npmignore @@ -0,0 +1,28 @@ +# Don't include original .ts files when doing `npm pack` +*.ts +!*.d.ts +coverage +.nyc_output +*.tgz + +dist +.LAST_PACKAGE +.LAST_BUILD +!*.js + +# Include .jsii +!.jsii + +*.snk + +*.tsbuildinfo + +tsconfig.json + +.eslintrc.js +jest.config.js + +# exclude cdk artifacts +**/cdk.out +junit.xml +test/ diff --git a/packages/@aws-cdk/aws-datasync/LICENSE b/packages/@aws-cdk/aws-datasync/LICENSE new file mode 100644 index 0000000000000..28e4bdcec77ec --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-datasync/NOTICE b/packages/@aws-cdk/aws-datasync/NOTICE new file mode 100644 index 0000000000000..5fc3826926b5b --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-datasync/README.md b/packages/@aws-cdk/aws-datasync/README.md new file mode 100644 index 0000000000000..ab865b0be83a8 --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/README.md @@ -0,0 +1,20 @@ +# AWS::DataSync Construct Library + + +--- + +![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) + +> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use. +> +> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib + +--- + + + +This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. + +```ts +import datasync = require('@aws-cdk/aws-datasync'); +``` diff --git a/packages/@aws-cdk/aws-datasync/jest.config.js b/packages/@aws-cdk/aws-datasync/jest.config.js new file mode 100644 index 0000000000000..54e28beb9798b --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-datasync/lib/index.ts b/packages/@aws-cdk/aws-datasync/lib/index.ts new file mode 100644 index 0000000000000..e6edd2b3a8a5f --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::DataSync CloudFormation Resources: +export * from './datasync.generated'; diff --git a/packages/@aws-cdk/aws-datasync/package.json b/packages/@aws-cdk/aws-datasync/package.json new file mode 100644 index 0000000000000..65d0fc8fab75a --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/package.json @@ -0,0 +1,100 @@ +{ + "name": "@aws-cdk/aws-datasync", + "version": "0.0.0", + "description": "The CDK Construct Library for AWS::DataSync", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "projectReferences": true, + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.DataSync", + "packageId": "Amazon.CDK.AWS.DataSync", + "signAssembly": true, + "assemblyOriginatorKeyFile": "../../key.snk", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "java": { + "package": "software.amazon.awscdk.services.datasync", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "datasync" + } + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 1" + ], + "distName": "aws-cdk.aws-datasync", + "module": "aws_cdk.aws_datasync" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-datasync" + }, + "homepage": "https://github.com/aws/aws-cdk", + "scripts": { + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "cdk-integ", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", + "cfn2ts": "cfn2ts", + "build+test+package": "npm run build+test && npm run package", + "build+test": "npm run build && npm test", + "compat": "cdk-compat", + "gen": "cfn2ts", + "rosetta:extract": "yarn --silent jsii-rosetta extract" + }, + "cdk-build": { + "cloudformation": "AWS::DataSync", + "jest": true, + "env": { + "AWSLINT_BASE_CONSTRUCT": "true" + } + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "AWS::DataSync", + "aws-datasync" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "0.0.0", + "cdk-build-tools": "0.0.0", + "cfn2ts": "0.0.0", + "pkglint": "0.0.0" + }, + "dependencies": { + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" + }, + "peerDependencies": { + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" + }, + "engines": { + "node": ">= 14.15.0" + }, + "stability": "experimental", + "maturity": "cfn-only", + "awscdkio": { + "announce": false + }, + "private": true +} diff --git a/packages/@aws-cdk/aws-datasync/test/datasync.test.ts b/packages/@aws-cdk/aws-datasync/test/datasync.test.ts new file mode 100644 index 0000000000000..e394ef336bfb4 --- /dev/null +++ b/packages/@aws-cdk/aws-datasync/test/datasync.test.ts @@ -0,0 +1,6 @@ +import '@aws-cdk/assert/jest'; +import {} from '../lib'; + +test('No tests are specified for this package', () => { + expect(true).toBe(true); +}); diff --git a/packages/@aws-cdk/aws-dax/package.json b/packages/@aws-cdk/aws-dax/package.json index b61cf80ba6694..6582f4fc69a19 100644 --- a/packages/@aws-cdk/aws-dax/package.json +++ b/packages/@aws-cdk/aws-dax/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-detective/package.json b/packages/@aws-cdk/aws-detective/package.json index c1f1e091807c4..bcc38a1b454ac 100644 --- a/packages/@aws-cdk/aws-detective/package.json +++ b/packages/@aws-cdk/aws-detective/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "awscdkio": { diff --git a/packages/@aws-cdk/aws-devopsguru/package.json b/packages/@aws-cdk/aws-devopsguru/package.json index 409a0d2a6b9c6..590085c5a5fed 100644 --- a/packages/@aws-cdk/aws-devopsguru/package.json +++ b/packages/@aws-cdk/aws-devopsguru/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-directoryservice/package.json b/packages/@aws-cdk/aws-directoryservice/package.json index 948fac3e84ef0..a3aaed26eb565 100644 --- a/packages/@aws-cdk/aws-directoryservice/package.json +++ b/packages/@aws-cdk/aws-directoryservice/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dlm/package.json b/packages/@aws-cdk/aws-dlm/package.json index 6a816e5ee5590..d9bca4e2cd251 100644 --- a/packages/@aws-cdk/aws-dlm/package.json +++ b/packages/@aws-cdk/aws-dlm/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dms/package.json b/packages/@aws-cdk/aws-dms/package.json index 1c3ff387a3029..40fa193c0c1d8 100644 --- a/packages/@aws-cdk/aws-dms/package.json +++ b/packages/@aws-cdk/aws-dms/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index f16c155a95439..32aef49367ea5 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index 8bfdc673ae756..11ac33a37de9d 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -88,7 +88,7 @@ "rosetta:extract": "yarn --silent jsii-rosetta extract" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index 7317cc34c981d..c05531dbc3da4 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -76,7 +76,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/jest": "^26.0.15", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-ec2/lib/security-group.ts b/packages/@aws-cdk/aws-ec2/lib/security-group.ts index 62a0ceb19e0ca..b5c3e4bf5cff2 100644 --- a/packages/@aws-cdk/aws-ec2/lib/security-group.ts +++ b/packages/@aws-cdk/aws-ec2/lib/security-group.ts @@ -321,6 +321,13 @@ export class SecurityGroup extends SecurityGroupBase { /** * Import an existing security group into this app. + * + * This method will assume that the Security Group has a rule in it which allows + * all outbound traffic, and so will not add egress rules to the imported Security + * Group (only ingress rules). + * + * If your existing Security Group needs to have egress rules added, pass the + * `allowAllOutbound: false` option on import. */ public static fromSecurityGroupId(scope: Construct, id: string, securityGroupId: string, options: SecurityGroupImportOptions = {}): ISecurityGroup { class MutableImport extends SecurityGroupBase { diff --git a/packages/@aws-cdk/aws-ec2/package.json b/packages/@aws-cdk/aws-ec2/package.json index afd9d1ae25081..9aa676bc06c33 100644 --- a/packages/@aws-cdk/aws-ec2/package.json +++ b/packages/@aws-cdk/aws-ec2/package.json @@ -113,7 +113,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecr-assets/package.json b/packages/@aws-cdk/aws-ecr-assets/package.json index 0fa09d212e9b2..0129b307f72de 100644 --- a/packages/@aws-cdk/aws-ecr-assets/package.json +++ b/packages/@aws-cdk/aws-ecr-assets/package.json @@ -100,7 +100,7 @@ "statements": 70 }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "bundledDependencies": [ "minimatch" diff --git a/packages/@aws-cdk/aws-ecr/package.json b/packages/@aws-cdk/aws-ecr/package.json index 396c853a88c17..1b9f1a81f3c6a 100644 --- a/packages/@aws-cdk/aws-ecr/package.json +++ b/packages/@aws-cdk/aws-ecr/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index 5aa12690e1955..330a3466e1198 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -109,7 +109,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-ecs/lib/cluster.ts b/packages/@aws-cdk/aws-ecs/lib/cluster.ts index 4b1f3cbc56aec..b27da8557b757 100644 --- a/packages/@aws-cdk/aws-ecs/lib/cluster.ts +++ b/packages/@aws-cdk/aws-ecs/lib/cluster.ts @@ -227,38 +227,42 @@ export class Cluster extends Resource implements ICluster { this._hasEc2Capacity = true; this.connections.connections.addSecurityGroup(...autoScalingGroup.connections.securityGroups); - // Tie instances to cluster - switch (options.machineImageType) { - // Bottlerocket AMI - case MachineImageType.BOTTLEROCKET: { - autoScalingGroup.addUserData( - // Connect to the cluster - // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#connecting-to-your-cluster - '[settings.ecs]', - `cluster = "${this.clusterName}"`, - ); - // Enabling SSM - // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#enabling-ssm - autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore')); - // required managed policy - autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2ContainerServiceforEC2Role')); - break; - } - default: - // Amazon ECS-optimized AMI for Amazon Linux 2 - autoScalingGroup.addUserData(`echo ECS_CLUSTER=${this.clusterName} >> /etc/ecs/ecs.config`); - if (!options.canContainersAccessInstanceRole) { - // Deny containers access to instance metadata service - // Source: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html - autoScalingGroup.addUserData('sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP'); - autoScalingGroup.addUserData('sudo service iptables save'); - // The following is only for AwsVpc networking mode, but doesn't hurt for the other modes. - autoScalingGroup.addUserData('echo ECS_AWSVPC_BLOCK_IMDS=true >> /etc/ecs/ecs.config'); - } - - if (autoScalingGroup.spotPrice && options.spotInstanceDraining) { - autoScalingGroup.addUserData('echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config'); + if ( autoScalingGroup.osType === ec2.OperatingSystemType.WINDOWS ) { + this.configureWindowsAutoScalingGroup(autoScalingGroup, options); + } else { + // Tie instances to cluster + switch (options.machineImageType) { + // Bottlerocket AMI + case MachineImageType.BOTTLEROCKET: { + autoScalingGroup.addUserData( + // Connect to the cluster + // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#connecting-to-your-cluster + '[settings.ecs]', + `cluster = "${this.clusterName}"`, + ); + // Enabling SSM + // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#enabling-ssm + autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore')); + // required managed policy + autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2ContainerServiceforEC2Role')); + break; } + default: + // Amazon ECS-optimized AMI for Amazon Linux 2 + autoScalingGroup.addUserData(`echo ECS_CLUSTER=${this.clusterName} >> /etc/ecs/ecs.config`); + if (!options.canContainersAccessInstanceRole) { + // Deny containers access to instance metadata service + // Source: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html + autoScalingGroup.addUserData('sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP'); + autoScalingGroup.addUserData('sudo service iptables save'); + // The following is only for AwsVpc networking mode, but doesn't hurt for the other modes. + autoScalingGroup.addUserData('echo ECS_AWSVPC_BLOCK_IMDS=true >> /etc/ecs/ecs.config'); + } + + if (autoScalingGroup.spotPrice && options.spotInstanceDraining) { + autoScalingGroup.addUserData('echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config'); + } + } } // ECS instances must be able to do these things @@ -315,6 +319,33 @@ export class Cluster extends Resource implements ICluster { } } + private configureWindowsAutoScalingGroup(autoScalingGroup: autoscaling.AutoScalingGroup, options: AddAutoScalingGroupCapacityOptions = {}) { + // clear the cache of the agent + autoScalingGroup.addUserData('Remove-Item -Recurse C:\\ProgramData\\Amazon\\ECS\\Cache'); + + // pull the latest ECS Tools + autoScalingGroup.addUserData('Import-Module ECSTools'); + + // set the cluster name environment variable + autoScalingGroup.addUserData(`[Environment]::SetEnvironmentVariable("ECS_CLUSTER", "${this.clusterName}", "Machine")`); + autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", "true", "Machine")'); + // tslint:disable-next-line: max-line-length + autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_AVAILABLE_LOGGING_DRIVERS", "[\"json-file\",\"awslogs\"]", "Machine")'); + + // enable instance draining + if (autoScalingGroup.spotPrice && options.spotInstanceDraining) { + autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_SPOT_INSTANCE_DRAINING", "true", "Machine")'); + } + + // enable task iam role + if (!options.canContainersAccessInstanceRole) { + autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_TASK_IAM_ROLE", "true", "Machine")'); + autoScalingGroup.addUserData(`Initialize-ECSAgent -Cluster '${this.clusterName}' -EnableTaskIAMRole'`); + } else { + autoScalingGroup.addUserData(`Initialize-ECSAgent -Cluster '${this.clusterName}'`); + } + } + /** * Getter for autoscaling group added to cluster */ diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index b1a530e41c624..fbaf5bb20cc2c 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -143,7 +143,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json b/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json index 7ba376073123b..34017cbb94b10 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json +++ b/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json @@ -711,14 +711,12 @@ "Code": { "ZipFile": "import boto3, json, os, time\n\necs = boto3.client('ecs')\nautoscaling = boto3.client('autoscaling')\n\n\ndef lambda_handler(event, context):\n print(json.dumps(event))\n cluster = os.environ['CLUSTER']\n snsTopicArn = event['Records'][0]['Sns']['TopicArn']\n lifecycle_event = json.loads(event['Records'][0]['Sns']['Message'])\n instance_id = lifecycle_event.get('EC2InstanceId')\n if not instance_id:\n print('Got event without EC2InstanceId: %s', json.dumps(event))\n return\n\n instance_arn = container_instance_arn(cluster, instance_id)\n print('Instance %s has container instance ARN %s' % (lifecycle_event['EC2InstanceId'], instance_arn))\n\n if not instance_arn:\n return\n\n while has_tasks(cluster, instance_arn):\n time.sleep(10)\n\n try:\n print('Terminating instance %s' % instance_id)\n autoscaling.complete_lifecycle_action(\n LifecycleActionResult='CONTINUE',\n **pick(lifecycle_event, 'LifecycleHookName', 'LifecycleActionToken', 'AutoScalingGroupName'))\n except Exception as e:\n # Lifecycle action may have already completed.\n print(str(e))\n\n\ndef container_instance_arn(cluster, instance_id):\n \"\"\"Turn an instance ID into a container instance ARN.\"\"\"\n arns = ecs.list_container_instances(cluster=cluster, filter='ec2InstanceId==' + instance_id)['containerInstanceArns']\n if not arns:\n return None\n return arns[0]\n\n\ndef has_tasks(cluster, instance_arn):\n \"\"\"Return True if the instance is running tasks for the given cluster.\"\"\"\n instances = ecs.describe_container_instances(cluster=cluster, containerInstances=[instance_arn])['containerInstances']\n if not instances:\n return False\n instance = instances[0]\n\n if instance['status'] == 'ACTIVE':\n # Start draining, then try again later\n set_container_instance_to_draining(cluster, instance_arn)\n return True\n\n tasks = instance['runningTasksCount'] + instance['pendingTasksCount']\n print('Instance %s has %s tasks' % (instance_arn, tasks))\n\n return tasks > 0\n\n\ndef set_container_instance_to_draining(cluster, instance_arn):\n ecs.update_container_instances_state(\n cluster=cluster,\n containerInstances=[instance_arn], status='DRAINING')\n\n\ndef pick(dct, *keys):\n \"\"\"Pick a subset of a dict.\"\"\"\n return {k: v for k, v in dct.items() if k in keys}\n" }, - "Handler": "index.lambda_handler", "Role": { "Fn::GetAtt": [ "EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionServiceRole94543EDA", "Arn" ] }, - "Runtime": "python3.6", "Environment": { "Variables": { "CLUSTER": { @@ -726,6 +724,8 @@ } } }, + "Handler": "index.lambda_handler", + "Runtime": "python3.6", "Tags": [ { "Key": "Name", @@ -1219,7 +1219,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00" }, "S3Key": { "Fn::Join": [ @@ -1232,7 +1232,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" } ] } @@ -1245,7 +1245,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" } ] } @@ -1255,19 +1255,19 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn" ] }, - "Runtime": "python3.6", + "Handler": "index.handler", "Layers": [ { "Ref": "EnvFileDeploymentAwsCliLayerA8FC897D" } ], + "Runtime": "python3.6", "Timeout": 900 }, "DependsOn": [ @@ -1348,17 +1348,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00": { "Type": "String", - "Description": "S3 bucket for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "S3 bucket for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76": { "Type": "String", - "Description": "S3 key for asset version \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "S3 key for asset version \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7ArtifactHash8926088E": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aArtifactHash595EC1E7": { "Type": "String", - "Description": "Artifact hash for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "Artifact hash for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, "AssetParameters972240f9dd6e036a93d5f081af9a24315b2053828ac049b3b19b2fa12d7ae64aS3Bucket1F1A8472": { "Type": "String", diff --git a/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts b/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts index cbccd0683dd0d..b8f3b3621a71c 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts +++ b/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts @@ -755,6 +755,59 @@ export = { test.done(); }, + 'configures userdata with powershell if windows machine image is specified'(test: Test) { + // GIVEN + const stack = new cdk.Stack(); + const vpc = new ec2.Vpc(stack, 'MyVpc', {}); + + const cluster = new ecs.Cluster(stack, 'EcsCluster', { vpc }); + cluster.addCapacity('WindowsAutoScalingGroup', { + instanceType: new ec2.InstanceType('t2.micro'), + machineImage: new ecs.EcsOptimizedAmi({ + windowsVersion: ecs.WindowsOptimizedVersion.SERVER_2019, + }), + }); + + // THEN + expect(stack).to(haveResource('AWS::AutoScaling::LaunchConfiguration', { + ImageId: { + Ref: 'SsmParameterValueawsserviceecsoptimizedamiwindowsserver2019englishfullrecommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter', + }, + InstanceType: 't2.micro', + IamInstanceProfile: { + Ref: 'EcsClusterWindowsAutoScalingGroupInstanceProfile65DFA6BB', + }, + SecurityGroups: [ + { + 'Fn::GetAtt': [ + 'EcsClusterWindowsAutoScalingGroupInstanceSecurityGroupDA468DF1', + 'GroupId', + ], + }, + ], + UserData: { + 'Fn::Base64': { + 'Fn::Join': [ + '', + [ + 'Remove-Item -Recurse C:\\ProgramData\\Amazon\\ECS\\Cache\nImport-Module ECSTools\n[Environment]::SetEnvironmentVariable("ECS_CLUSTER", "', + { + Ref: 'EcsCluster97242B84', + }, + "\", \"Machine\")\n[Environment]::SetEnvironmentVariable(\"ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE\", \"true\", \"Machine\")\n[Environment]::SetEnvironmentVariable(\"ECS_AVAILABLE_LOGGING_DRIVERS\", \"[\"json-file\",\"awslogs\"]\", \"Machine\")\n[Environment]::SetEnvironmentVariable(\"ECS_ENABLE_TASK_IAM_ROLE\", \"true\", \"Machine\")\nInitialize-ECSAgent -Cluster '", + { + Ref: 'EcsCluster97242B84', + }, + "' -EnableTaskIAMRole'", + ], + ], + }, + }, + })); + + test.done(); + }, + /* * TODO:v2.0.0 BEGINNING OF OBSOLETE BLOCK */ diff --git a/packages/@aws-cdk/aws-efs/package.json b/packages/@aws-cdk/aws-efs/package.json index 559a961679bc1..8ef7ebb087d9e 100644 --- a/packages/@aws-cdk/aws-efs/package.json +++ b/packages/@aws-cdk/aws-efs/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks-legacy/package.json b/packages/@aws-cdk/aws-eks-legacy/package.json index ca92246e41c7c..b5adddcd25205 100644 --- a/packages/@aws-cdk/aws-eks-legacy/package.json +++ b/packages/@aws-cdk/aws-eks-legacy/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks/README.md b/packages/@aws-cdk/aws-eks/README.md index 0b92c183fb786..35fc9c24c244e 100644 --- a/packages/@aws-cdk/aws-eks/README.md +++ b/packages/@aws-cdk/aws-eks/README.md @@ -232,8 +232,40 @@ cluster.addNodegroupCapacity('extra-ng-spot', { #### Launch Template Support -You can specify a launch template that the node group will use. Note that when using a custom AMI, Amazon EKS doesn't merge any user data. -Rather, You are responsible for supplying the required bootstrap commands for nodes to join the cluster. +You can specify a launch template that the node group will use. For example, this can be useful if you want to use +a custom AMI or add custom user data. + +When supplying a custom user data script, it must be encoded in the MIME multi-part archive format, since Amazon EKS merges with its own user data. Visit the [Launch Template Docs](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data) +for mode details. + +```ts +const userData = `MIME-Version: 1.0 +Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" + +--==MYBOUNDARY== +Content-Type: text/x-shellscript; charset="us-ascii" + +#!/bin/bash +echo "Running custom user data script" + +--==MYBOUNDARY==--\\ +`; +const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', { + launchTemplateData: { + instanceType: 't3.small', + userData: Fn.base64(userData), + }, +}); +cluster.addNodegroupCapacity('extra-ng', { + launchTemplateSpec: { + id: lt.ref, + version: lt.attrLatestVersionNumber, + }, +}); + +``` + +Note that when using a custom AMI, Amazon EKS doesn't merge any user data. Which means you do not need the multi-part encoding. and are responsible for supplying the required bootstrap commands for nodes to join the cluster. In the following example, `/ect/eks/bootstrap.sh` from the AMI will be used to bootstrap the node. ```ts @@ -245,19 +277,19 @@ userData.addCommands( const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', { launchTemplateData: { imageId: 'some-ami-id', // custom AMI - instanceType: new ec2.InstanceType('t3.small').toString(), + instanceType: 't3.small', userData: Fn.base64(userData.render()), }, }); cluster.addNodegroupCapacity('extra-ng', { launchTemplateSpec: { id: lt.ref, - version: lt.attrDefaultVersionNumber, + version: lt.attrLatestVersionNumber, }, }); ``` -You may specify one or instance types in either the `instanceTypes` property of `NodeGroup` or in the launch template, **but not both**. +You may specify one `instanceType` in the launch template or multiple `instanceTypes` in the node group, **but not both**. > For more details visit [Launch Template Support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html). @@ -401,6 +433,8 @@ terminated. > > Chart Version: [0.9.5](https://github.com/aws/eks-charts/blob/v0.0.28/stable/aws-node-termination-handler/Chart.yaml) +To disable the installation of the termination handler, set the `spotInterruptHandler` property to `false`. This applies both to `addAutoScalingGroupCapacity` and `connectAutoScalingGroupCapacity`. + #### Bottlerocket [Bottlerocket](https://aws.amazon.com/bottlerocket/) is a Linux-based open-source operating system that is purpose-built by Amazon Web Services for running containers on virtual machines or bare metal hosts. diff --git a/packages/@aws-cdk/aws-eks/lib/cluster.ts b/packages/@aws-cdk/aws-eks/lib/cluster.ts index cb35a3c719283..0b221c8347b56 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster.ts @@ -1177,6 +1177,7 @@ export class Cluster extends ClusterBase { bootstrapOptions: options.bootstrapOptions, bootstrapEnabled: options.bootstrapEnabled, machineImageType: options.machineImageType, + spotInterruptHandler: options.spotInterruptHandler, }); if (nodeTypeForInstanceType(options.instanceType) === NodeType.INFERENTIA) { @@ -1286,8 +1287,9 @@ export class Cluster extends ClusterBase { }); } + const addSpotInterruptHandler = options.spotInterruptHandler ?? true; // if this is an ASG with spot instances, install the spot interrupt handler (only if kubectl is enabled). - if (autoScalingGroup.spotPrice) { + if (autoScalingGroup.spotPrice && addSpotInterruptHandler) { this.addSpotInterruptHandler(); } } @@ -1444,7 +1446,9 @@ export class Cluster extends ClusterBase { repository: 'https://aws.github.io/eks-charts', namespace: 'kube-system', values: { - 'nodeSelector.lifecycle': LifecycleLabel.SPOT, + nodeSelector: { + lifecycle: LifecycleLabel.SPOT, + }, }, }); } @@ -1576,6 +1580,14 @@ export interface AutoScalingGroupCapacityOptions extends autoscaling.CommonAutoS * @default MachineImageType.AMAZON_LINUX_2 */ readonly machineImageType?: MachineImageType; + + /** + * Installs the AWS spot instance interrupt handler on the cluster if it's not + * already added. Only relevant if `spotPrice` is used. + * + * @default true + */ + readonly spotInterruptHandler?: boolean; } /** @@ -1667,6 +1679,14 @@ export interface AutoScalingGroupOptions { * @default MachineImageType.AMAZON_LINUX_2 */ readonly machineImageType?: MachineImageType; + + /** + * Installs the AWS spot instance interrupt handler on the cluster if it's not + * already added. Only relevant if `spotPrice` is configured on the auto-scaling group. + * + * @default true + */ + readonly spotInterruptHandler?: boolean; } /** diff --git a/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts b/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts index 576957512cc6d..7d46fb00c6e92 100644 --- a/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts +++ b/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts @@ -226,10 +226,6 @@ export interface NodegroupProps extends NodegroupOptions { * The Nodegroup resource class */ export class Nodegroup extends Resource implements INodegroup { - /** - * Default instanceTypes - */ - public static readonly DEFAULT_INSTANCE_TYPES = [new InstanceType('t3.medium')]; /** * Import the Nodegroup from attributes */ @@ -291,16 +287,17 @@ export class Nodegroup extends Resource implements INodegroup { if (props.instanceType) { Annotations.of(this).addWarning('"instanceType" is deprecated and will be removed in the next major version. please use "instanceTypes" instead'); } - const instanceTypes = props.instanceTypes ?? (props.instanceType ? [props.instanceType] : Nodegroup.DEFAULT_INSTANCE_TYPES); - // get unique AMI types from instanceTypes - const uniqAmiTypes = getAmiTypes(instanceTypes); - // uniqAmiTypes.length should be at least 1 - if (uniqAmiTypes.length > 1) { - throw new Error('instanceTypes of different CPU architectures is not allowed'); - } - const determinedAmiType = uniqAmiTypes[0]; - if (props.amiType && props.amiType !== determinedAmiType) { - throw new Error(`The specified AMI does not match the instance types architecture, either specify ${determinedAmiType} or dont specify any`); + const instanceTypes = props.instanceTypes ?? (props.instanceType ? [props.instanceType] : undefined); + let expectedAmiType = undefined; + + if (instanceTypes && instanceTypes.length > 0) { + // if the user explicitly configured instance types, we can calculate the expected ami type. + expectedAmiType = getAmiType(instanceTypes); + + // if the user explicitly configured an ami type, make sure its the same as the expected one. + if (props.amiType && props.amiType !== expectedAmiType) { + throw new Error(`The specified AMI does not match the instance types architecture, either specify ${expectedAmiType} or dont specify any`); + } } if (!props.nodeRole) { @@ -321,13 +318,18 @@ export class Nodegroup extends Resource implements INodegroup { nodegroupName: props.nodegroupName, nodeRole: this.role.roleArn, subnets: this.cluster.vpc.selectSubnets(props.subnets).subnetIds, - // AmyType is not allowed by CFN when specifying an image id in your launch template. - amiType: props.launchTemplateSpec === undefined ? determinedAmiType : undefined, + + // if a launch template is configured, we cannot apply a default since it + // might exist in the launch template as well, causing a deployment failure. + amiType: props.launchTemplateSpec !== undefined ? props.amiType : (props.amiType ?? expectedAmiType), + capacityType: props.capacityType ? props.capacityType.valueOf() : undefined, diskSize: props.diskSize, forceUpdateEnabled: props.forceUpdate ?? true, - instanceTypes: props.instanceTypes ? props.instanceTypes.map(t => t.toString()) : - props.instanceType ? [props.instanceType.toString()] : undefined, + + // note that we don't check if a launch template is configured here (even though it might configure instance types as well) + // because this doesn't have a default value, meaning the user had to explicitly configure this. + instanceTypes: instanceTypes?.map(t => t.toString()), labels: props.labels, releaseVersion: props.releaseVersion, remoteAccess: props.remoteAccess ? { @@ -392,8 +394,16 @@ function getAmiTypeForInstanceType(instanceType: InstanceType) { NodegroupAmiType.AL2_X86_64; } -function getAmiTypes(instanceType: InstanceType[]) { - const amiTypes = instanceType.map(i =>getAmiTypeForInstanceType(i)); - // retuen unique AMI types - return [...new Set(amiTypes)]; +// this function examines the CPU architecture of every instance type and determines +// what ami type is compatible for all of them. it either throws or produces a single value because +// instance types of different CPU architectures are not supported. +function getAmiType(instanceTypes: InstanceType[]) { + const amiTypes = new Set(instanceTypes.map(i => getAmiTypeForInstanceType(i))); + if (amiTypes.size == 0) { // protective code, the current implementation will never result in this. + throw new Error(`Cannot determine any ami type comptaible with instance types: ${instanceTypes.map(i => i.toString).join(',')}`); + } + if (amiTypes.size > 1) { + throw new Error('instanceTypes of different CPU architectures is not allowed'); + } + return amiTypes.values().next().value; } diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index 39a08e0352fd5..773a62c580d25 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -76,7 +76,7 @@ "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", "@types/yaml": "1.9.6", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -118,7 +118,7 @@ "@aws-cdk/lambda-layer-kubectl": "0.0.0" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json index 230268fdca0f7..5c0b4bf402a5b 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json @@ -2739,7 +2739,7 @@ "Release": "ksclustertestclusterchartspotinterrupthandlerf41ba997", "Chart": "aws-node-termination-handler", "Version": "0.13.2", - "Values": "{\"nodeSelector.lifecycle\":\"Ec2Spot\"}", + "Values": "{\"nodeSelector\":{\"lifecycle\":\"Ec2Spot\"}}", "Namespace": "kube-system", "Repository": "https://aws.github.io/eks-charts", "CreateNamespace": true diff --git a/packages/@aws-cdk/aws-eks/test/test.cluster.ts b/packages/@aws-cdk/aws-eks/test/test.cluster.ts index f485253d1eba4..171e07fdced72 100644 --- a/packages/@aws-cdk/aws-eks/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-eks/test/test.cluster.ts @@ -188,6 +188,31 @@ export = { }, + 'spot interrupt handler is not added if spotInterruptHandler is false when connecting self-managed nodes'(test: Test) { + + // GIVEN + const { stack, vpc } = testFixture(); + const cluster = new eks.Cluster(stack, 'Cluster', { + vpc, + defaultCapacity: 0, + version: CLUSTER_VERSION, + prune: false, + }); + + const selfManaged = new asg.AutoScalingGroup(stack, 'self-managed', { + instanceType: new ec2.InstanceType('t2.medium'), + vpc: vpc, + machineImage: new ec2.AmazonLinuxImage(), + spotPrice: '0.1', + }); + + // WHEN + cluster.connectAutoScalingGroupCapacity(selfManaged, { spotInterruptHandler: false }); + + test.equal(cluster.node.findAll().filter(c => c.node.id === 'chart-spot-interrupt-handler').length, 0); + test.done(); + }, + 'throws when a non cdk8s chart construct is added as cdk8s chart'(test: Test) { const { stack } = testFixture(); @@ -1285,13 +1310,30 @@ export = { expect(stack).to(haveResource(eks.HelmChart.RESOURCE_TYPE, { Release: 'stackclusterchartspotinterrupthandlerdec62e07', Chart: 'aws-node-termination-handler', - Values: '{\"nodeSelector.lifecycle\":\"Ec2Spot\"}', + Values: '{\"nodeSelector\":{\"lifecycle\":\"Ec2Spot\"}}', Namespace: 'kube-system', Repository: 'https://aws.github.io/eks-charts', })); test.done(); }, + 'interrupt handler is not added when spotInterruptHandler is false'(test: Test) { + // GIVEN + const { stack } = testFixtureNoVpc(); + const cluster = new eks.Cluster(stack, 'Cluster', { defaultCapacity: 0, version: CLUSTER_VERSION, prune: false }); + + // WHEN + cluster.addAutoScalingGroupCapacity('MyCapcity', { + instanceType: new ec2.InstanceType('m3.xlarge'), + spotPrice: '0.01', + spotInterruptHandler: false, + }); + + // THEN + test.equal(cluster.node.findAll().filter(c => c.node.id === 'chart-spot-interrupt-handler').length, 0); + test.done(); + }, + 'its possible to add two capacities with spot instances and only one stop handler will be installed'(test: Test) { // GIVEN const { stack } = testFixtureNoVpc(); diff --git a/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts b/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts index ff962572a6f92..241482d469c65 100644 --- a/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts +++ b/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts @@ -10,6 +10,92 @@ import { testFixture } from './util'; const CLUSTER_VERSION = eks.KubernetesVersion.V1_18; export = { + + 'default ami type is not applied when launch template is configured'(test: Test) { + + // GIVEN + const { stack, vpc } = testFixture(); + + const launchTemplate = new ec2.CfnLaunchTemplate(stack, 'LaunchTemplate', { + launchTemplateData: { + instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.MEDIUM).toString(), + }, + }); + + // WHEN + const cluster = new eks.Cluster(stack, 'Cluster', { + vpc, + defaultCapacity: 0, + version: CLUSTER_VERSION, + }); + new eks.Nodegroup(stack, 'Nodegroup', { + cluster, + instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE)], + launchTemplateSpec: { + id: launchTemplate.ref, + version: launchTemplate.attrLatestVersionNumber, + }, + }); + + // THEN + test.equal(expect(stack).value.Resources.Nodegroup62B4B2C1.Properties.AmiType, undefined); + test.done(); + }, + + 'explicit ami type is applied even when launch template is configured'(test: Test) { + + // GIVEN + const { stack, vpc } = testFixture(); + + const launchTemplate = new ec2.CfnLaunchTemplate(stack, 'LaunchTemplate', { + launchTemplateData: { + instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.MEDIUM).toString(), + }, + }); + + // WHEN + const cluster = new eks.Cluster(stack, 'Cluster', { + vpc, + defaultCapacity: 0, + version: CLUSTER_VERSION, + }); + new eks.Nodegroup(stack, 'Nodegroup', { + cluster, + amiType: eks.NodegroupAmiType.AL2_X86_64, + launchTemplateSpec: { + id: launchTemplate.ref, + version: launchTemplate.attrLatestVersionNumber, + }, + }); + + // THEN + test.equal(expect(stack).value.Resources.Nodegroup62B4B2C1.Properties.AmiType, 'AL2_x86_64'); + test.done(); + }, + + 'ami type is taken as is when no instance types are configured'(test: Test) { + + // GIVEN + const { stack, vpc } = testFixture(); + + // WHEN + const cluster = new eks.Cluster(stack, 'Cluster', { + vpc, + defaultCapacity: 0, + version: CLUSTER_VERSION, + }); + new eks.Nodegroup(stack, 'Nodegroup', { + cluster, + amiType: eks.NodegroupAmiType.AL2_X86_64_GPU, + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::EKS::Nodegroup', { + AmiType: 'AL2_x86_64_GPU', + })); + test.done(); + }, + 'create nodegroup correctly'(test: Test) { // GIVEN const { stack, vpc } = testFixture(); diff --git a/packages/@aws-cdk/aws-elasticache/package.json b/packages/@aws-cdk/aws-elasticache/package.json index 8f89a5c5b7238..c28539b5b06b5 100644 --- a/packages/@aws-cdk/aws-elasticache/package.json +++ b/packages/@aws-cdk/aws-elasticache/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-elasticbeanstalk/package.json b/packages/@aws-cdk/aws-elasticbeanstalk/package.json index da4ed4bc4f320..c112c9280c718 100644 --- a/packages/@aws-cdk/aws-elasticbeanstalk/package.json +++ b/packages/@aws-cdk/aws-elasticbeanstalk/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/package.json b/packages/@aws-cdk/aws-elasticloadbalancing/package.json index 42612b65ae9ea..7792b2c813531 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancing/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "nyc": { "statements": 75 diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index f0df897f6db29..ae4c86ed370c7 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index 2c5de8a263103..a3813eea37f1d 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json index 25f2a85c1d082..141302e37b87a 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json @@ -108,7 +108,7 @@ "@aws-cdk/region-info": "0.0.0" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts index 480361c1358f6..668086dab5372 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts @@ -1474,6 +1474,36 @@ export class Domain extends DomainBase implements IDomain { }); } + const logPublishing: Record = {}; + + if (this.appLogGroup) { + logPublishing.ES_APPLICATION_LOGS = { + enabled: true, + cloudWatchLogsLogGroupArn: this.appLogGroup.logGroupArn, + }; + } + + if (this.slowSearchLogGroup) { + logPublishing.SEARCH_SLOW_LOGS = { + enabled: true, + cloudWatchLogsLogGroupArn: this.slowSearchLogGroup.logGroupArn, + }; + } + + if (this.slowIndexLogGroup) { + logPublishing.INDEX_SLOW_LOGS = { + enabled: true, + cloudWatchLogsLogGroupArn: this.slowIndexLogGroup.logGroupArn, + }; + } + + if (this.auditLogGroup) { + logPublishing.AUDIT_LOGS = { + enabled: this.auditLogGroup != null, + cloudWatchLogsLogGroupArn: this.auditLogGroup?.logGroupArn, + }; + } + // Create the domain this.domain = new CfnDomain(this, 'Resource', { domainName: this.physicalName, @@ -1506,24 +1536,7 @@ export class Domain extends DomainBase implements IDomain { : undefined, }, nodeToNodeEncryptionOptions: { enabled: nodeToNodeEncryptionEnabled }, - logPublishingOptions: { - AUDIT_LOGS: { - enabled: this.auditLogGroup != null, - cloudWatchLogsLogGroupArn: this.auditLogGroup?.logGroupArn, - }, - ES_APPLICATION_LOGS: { - enabled: this.appLogGroup != null, - cloudWatchLogsLogGroupArn: this.appLogGroup?.logGroupArn, - }, - SEARCH_SLOW_LOGS: { - enabled: this.slowSearchLogGroup != null, - cloudWatchLogsLogGroupArn: this.slowSearchLogGroup?.logGroupArn, - }, - INDEX_SLOW_LOGS: { - enabled: this.slowIndexLogGroup != null, - cloudWatchLogsLogGroupArn: this.slowIndexLogGroup?.logGroupArn, - }, - }, + logPublishingOptions: logPublishing, cognitoOptions: { enabled: props.cognitoKibanaAuth != null, identityPoolId: props.cognitoKibanaAuth?.identityPoolId, diff --git a/packages/@aws-cdk/aws-elasticsearch/package.json b/packages/@aws-cdk/aws-elasticsearch/package.json index 07c8b997db14c..00cf8c59b320d 100644 --- a/packages/@aws-cdk/aws-elasticsearch/package.json +++ b/packages/@aws-cdk/aws-elasticsearch/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts b/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts index affa1d45e4477..ff85a85e218f8 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts @@ -89,18 +89,10 @@ test('minimal example renders correctly', () => { Enabled: false, }, LogPublishingOptions: { - AUDIT_LOGS: { - Enabled: false, - }, - ES_APPLICATION_LOGS: { - Enabled: false, - }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + AUDIT_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, NodeToNodeEncryptionOptions: { Enabled: false, @@ -133,9 +125,6 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { - ES_APPLICATION_LOGS: { - Enabled: false, - }, SEARCH_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -145,9 +134,9 @@ describe('log groups', () => { }, Enabled: true, }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + AUDIT_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -162,12 +151,6 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { - ES_APPLICATION_LOGS: { - Enabled: false, - }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, INDEX_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -177,6 +160,9 @@ describe('log groups', () => { }, Enabled: true, }, + AUDIT_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -200,12 +186,9 @@ describe('log groups', () => { }, Enabled: true, }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + AUDIT_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -237,15 +220,9 @@ describe('log groups', () => { }, Enabled: true, }, - ES_APPLICATION_LOGS: { - Enabled: false, - }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + ES_APPLICATION_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -296,6 +273,7 @@ describe('log groups', () => { }, Enabled: true, }, + AUDIT_LOGS: assert.ABSENT, }, }); expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { @@ -327,6 +305,7 @@ describe('log groups', () => { }, Enabled: true, }, + AUDIT_LOGS: assert.ABSENT, }, }); }); @@ -385,12 +364,6 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { - AUDIT_LOGS: { - Enabled: false, - }, - ES_APPLICATION_LOGS: { - Enabled: false, - }, SEARCH_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -400,9 +373,9 @@ describe('log groups', () => { }, Enabled: true, }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + AUDIT_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -420,15 +393,6 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { - AUDIT_LOGS: { - Enabled: false, - }, - ES_APPLICATION_LOGS: { - Enabled: false, - }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, INDEX_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -438,6 +402,9 @@ describe('log groups', () => { }, Enabled: true, }, + AUDIT_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -455,9 +422,6 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { - AUDIT_LOGS: { - Enabled: false, - }, ES_APPLICATION_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -467,12 +431,9 @@ describe('log groups', () => { }, Enabled: true, }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + AUDIT_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -507,15 +468,9 @@ describe('log groups', () => { }, Enabled: true, }, - ES_APPLICATION_LOGS: { - Enabled: false, - }, - SEARCH_SLOW_LOGS: { - Enabled: false, - }, - INDEX_SLOW_LOGS: { - Enabled: false, - }, + ES_APPLICATION_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: assert.ABSENT, }, }); }); diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json index a4ec48af68521..e919ee6365e8e 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json @@ -40,20 +40,7 @@ "EncryptionAtRestOptions": { "Enabled": true }, - "LogPublishingOptions": { - "AUDIT_LOGS": { - "Enabled": false - }, - "ES_APPLICATION_LOGS": { - "Enabled": false - }, - "SEARCH_SLOW_LOGS": { - "Enabled": false - }, - "INDEX_SLOW_LOGS": { - "Enabled": false - } - }, + "LogPublishingOptions": {}, "NodeToNodeEncryptionOptions": { "Enabled": true } diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json index f987bec734004..fafc653e73740 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json @@ -211,9 +211,6 @@ } }, "LogPublishingOptions": { - "AUDIT_LOGS": { - "Enabled": false - }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn": { "Fn::GetAtt": [ @@ -231,9 +228,6 @@ ] }, "Enabled": true - }, - "INDEX_SLOW_LOGS": { - "Enabled": false } }, "NodeToNodeEncryptionOptions": { @@ -442,13 +436,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json index a6a6dd2b0d37f..6c782aee20cc9 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json @@ -157,9 +157,6 @@ "Enabled": true }, "LogPublishingOptions": { - "AUDIT_LOGS": { - "Enabled": false - }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn": { "Fn::GetAtt": [ @@ -177,9 +174,6 @@ ] }, "Enabled": true - }, - "INDEX_SLOW_LOGS": { - "Enabled": false } }, "NodeToNodeEncryptionOptions": { @@ -358,13 +352,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, @@ -529,9 +523,6 @@ "Enabled": true }, "LogPublishingOptions": { - "AUDIT_LOGS": { - "Enabled": false - }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn": { "Fn::GetAtt": [ @@ -549,9 +540,6 @@ ] }, "Enabled": true - }, - "INDEX_SLOW_LOGS": { - "Enabled": false } }, "NodeToNodeEncryptionOptions": { diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json index 99ca282a3469a..b55ac9e14df69 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json @@ -4,8 +4,8 @@ "Type": "AWS::SecretsManager::Secret", "Properties": { "GenerateSecretString": { - "GenerateStringKey": "password", "ExcludeCharacters": "{}'\\*[]()`", + "GenerateStringKey": "password", "SecretStringTemplate": "{\"username\":\"admin\"}" } } @@ -54,20 +54,7 @@ "EncryptionAtRestOptions": { "Enabled": true }, - "LogPublishingOptions": { - "AUDIT_LOGS": { - "Enabled": false - }, - "ES_APPLICATION_LOGS": { - "Enabled": false - }, - "SEARCH_SLOW_LOGS": { - "Enabled": false - }, - "INDEX_SLOW_LOGS": { - "Enabled": false - } - }, + "LogPublishingOptions": {}, "NodeToNodeEncryptionOptions": { "Enabled": true } @@ -297,4 +284,4 @@ "Description": "Artifact hash for asset \"b64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94\"" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-emr/package.json b/packages/@aws-cdk/aws-emr/package.json index 184ed9060344a..12827772ad057 100644 --- a/packages/@aws-cdk/aws-emr/package.json +++ b/packages/@aws-cdk/aws-emr/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index 9f67340edfe04..b7f6923e10b0d 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -77,7 +77,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -126,7 +126,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-events/package.json b/packages/@aws-cdk/aws-events/package.json index 4f4831fcd03c3..6ce0c48eb34db 100644 --- a/packages/@aws-cdk/aws-events/package.json +++ b/packages/@aws-cdk/aws-events/package.json @@ -94,7 +94,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eventschemas/package.json b/packages/@aws-cdk/aws-eventschemas/package.json index c6430908d2217..a1f8138f6e3bf 100644 --- a/packages/@aws-cdk/aws-eventschemas/package.json +++ b/packages/@aws-cdk/aws-eventschemas/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-fms/package.json b/packages/@aws-cdk/aws-fms/package.json index 168a95167750b..37db1822688df 100644 --- a/packages/@aws-cdk/aws-fms/package.json +++ b/packages/@aws-cdk/aws-fms/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-fsx/package.json b/packages/@aws-cdk/aws-fsx/package.json index 39cac9ed7ffc0..62a572c56f0f1 100644 --- a/packages/@aws-cdk/aws-fsx/package.json +++ b/packages/@aws-cdk/aws-fsx/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-gamelift/package.json b/packages/@aws-cdk/aws-gamelift/package.json index fda4f58696f60..dbf22cc3ba4ce 100644 --- a/packages/@aws-cdk/aws-gamelift/package.json +++ b/packages/@aws-cdk/aws-gamelift/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-globalaccelerator/package.json b/packages/@aws-cdk/aws-globalaccelerator/package.json index 331ba5ddea4fc..40b1013bc82b8 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator/package.json @@ -96,7 +96,7 @@ "@aws-cdk/custom-resources": "0.0.0" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-glue/package.json b/packages/@aws-cdk/aws-glue/package.json index 1d50c80e32441..4a4a540875740 100644 --- a/packages/@aws-cdk/aws-glue/package.json +++ b/packages/@aws-cdk/aws-glue/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-greengrass/package.json b/packages/@aws-cdk/aws-greengrass/package.json index 93dfabe51ee99..606c143dbe8f3 100644 --- a/packages/@aws-cdk/aws-greengrass/package.json +++ b/packages/@aws-cdk/aws-greengrass/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-greengrassv2/package.json b/packages/@aws-cdk/aws-greengrassv2/package.json index 635baceaae643..d653e6304a4c4 100644 --- a/packages/@aws-cdk/aws-greengrassv2/package.json +++ b/packages/@aws-cdk/aws-greengrassv2/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-guardduty/package.json b/packages/@aws-cdk/aws-guardduty/package.json index 26a7e84f19f97..ffad049d9738a 100644 --- a/packages/@aws-cdk/aws-guardduty/package.json +++ b/packages/@aws-cdk/aws-guardduty/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iam/README.md b/packages/@aws-cdk/aws-iam/README.md index a676af6352cf2..d9488e7d081c8 100644 --- a/packages/@aws-cdk/aws-iam/README.md +++ b/packages/@aws-cdk/aws-iam/README.md @@ -320,6 +320,34 @@ const provider = new iam.OpenIdConnectProvider(this, 'MyProvider', { const principal = new iam.OpenIdConnectPrincipal(provider); ``` +## Users + +IAM manages users for your AWS account. To create a new user: + +```ts +const user = new User(this, 'MyUser'); +``` + +To import an existing user by name [with path](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names): + +```ts +const user = User.fromUserName(stack, 'MyImportedUserByName', 'johnsmith'); +``` + +To import an existing user by ARN: + +```ts +const user = User.fromUserArn(this, 'MyImportedUserByArn', 'arn:aws:iam::123456789012:user/johnsmith'); +``` + +To import an existing user by attributes: + +```ts +const user = User.fromUserAttributes(stack, 'MyImportedUserByAttributes', { + userArn: 'arn:aws:iam::123456789012:user/johnsmith', +}); +``` + ## Features * Policy name uniqueness is enforced. If two policies by the same name are attached to the same diff --git a/packages/@aws-cdk/aws-iam/lib/user.ts b/packages/@aws-cdk/aws-iam/lib/user.ts index a8c3b61443771..5c8f6418a9bb8 100644 --- a/packages/@aws-cdk/aws-iam/lib/user.ts +++ b/packages/@aws-cdk/aws-iam/lib/user.ts @@ -1,4 +1,4 @@ -import { Aws, Lazy, Resource, SecretValue, Stack } from '@aws-cdk/core'; +import { Arn, Aws, Lazy, Resource, SecretValue, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { IGroup } from './group'; import { CfnUser } from './iam.generated'; @@ -119,6 +119,18 @@ export interface UserProps { readonly passwordResetRequired?: boolean; } +/** + * Represents a user defined outside of this stack. + */ +export interface UserAttributes { + /** + * The ARN of the user. + * + * Format: arn::iam:::user/ + */ + readonly userArn: string; +} + /** * Define a new IAM user */ @@ -131,20 +143,42 @@ export class User extends Resource implements IIdentity, IUser { * @param userName the username of the existing user to import */ public static fromUserName(scope: Construct, id: string, userName: string): IUser { - const arn = Stack.of(scope).formatArn({ + const userArn = Stack.of(scope).formatArn({ service: 'iam', region: '', resource: 'user', resourceName: userName, }); + return User.fromUserAttributes(scope, id, { userArn }); + } + + /** + * Import an existing user given a user ARN. + * + * @param scope construct scope + * @param id construct id + * @param userArn the ARN of an existing user to import + */ + public static fromUserArn(scope: Construct, id: string, userArn: string): IUser { + return User.fromUserAttributes(scope, id, { userArn }); + } + + /** + * Import an existing user given user attributes. + * + * @param scope construct scope + * @param id construct id + * @param attrs the attributes of the user to import + */ + public static fromUserAttributes(scope: Construct, id: string, attrs: UserAttributes): IUser { class Import extends Resource implements IUser { public readonly grantPrincipal: IPrincipal = this; public readonly principalAccount = Aws.ACCOUNT_ID; - public readonly userName: string = userName; - public readonly userArn: string = arn; + public readonly userName: string = Arn.extractResourceName(attrs.userArn, 'user'); + public readonly userArn: string = attrs.userArn; public readonly assumeRoleAction: string = 'sts:AssumeRole'; - public readonly policyFragment: PrincipalPolicyFragment = new ArnPrincipal(arn).policyFragment; + public readonly policyFragment: PrincipalPolicyFragment = new ArnPrincipal(attrs.userArn).policyFragment; private readonly attachedPolicies = new AttachedPolicies(); private defaultPolicy?: Policy; diff --git a/packages/@aws-cdk/aws-iam/package.json b/packages/@aws-cdk/aws-iam/package.json index 1697e6f640398..ebb1a574fe55c 100644 --- a/packages/@aws-cdk/aws-iam/package.json +++ b/packages/@aws-cdk/aws-iam/package.json @@ -101,7 +101,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-iam/test/integ.user.expected.json b/packages/@aws-cdk/aws-iam/test/integ.user.expected.json index 2c4bc6c9b52c0..a57b3db4c6f32 100644 --- a/packages/@aws-cdk/aws-iam/test/integ.user.expected.json +++ b/packages/@aws-cdk/aws-iam/test/integ.user.expected.json @@ -4,11 +4,22 @@ "Type": "AWS::IAM::User", "Properties": { "LoginProfile": { - "Password": "1234", + "Password": "Test1234567890!", "PasswordResetRequired": true }, "UserName": "benisrae" } } + }, + "Outputs": { + "NameForUserImportedByArn": { + "Value": "rossrhodes" + }, + "NameForUserImportedByAttributes": { + "Value": "johndoe" + }, + "NameForUserImportedByName": { + "Value": "janedoe" + } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-iam/test/integ.user.ts b/packages/@aws-cdk/aws-iam/test/integ.user.ts index 198f3ecb77c4c..7f8d00695742c 100644 --- a/packages/@aws-cdk/aws-iam/test/integ.user.ts +++ b/packages/@aws-cdk/aws-iam/test/integ.user.ts @@ -1,4 +1,4 @@ -import { App, SecretValue, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, SecretValue, Stack } from '@aws-cdk/core'; import { User } from '../lib'; const app = new App(); @@ -7,8 +7,18 @@ const stack = new Stack(app, 'aws-cdk-iam-user'); new User(stack, 'MyUser', { userName: 'benisrae', - password: SecretValue.plainText('1234'), + password: SecretValue.plainText('Test1234567890!'), passwordResetRequired: true, }); +const userImportedByArn = User.fromUserArn(stack, 'ImportedUserByArn', 'arn:aws:iam::123456789012:user/rossrhodes'); +const userImportedByAttributes = User.fromUserAttributes(stack, 'ImportedUserByAttributes', { + userArn: 'arn:aws:iam::123456789012:user/johndoe', +}); +const userImportedByName = User.fromUserName(stack, 'ImportedUserByName', 'janedoe'); + +new CfnOutput(stack, 'NameForUserImportedByArn', { value: userImportedByArn.userName }); +new CfnOutput(stack, 'NameForUserImportedByAttributes', { value: userImportedByAttributes.userName }); +new CfnOutput(stack, 'NameForUserImportedByName', { value: userImportedByName.userName }); + app.synth(); diff --git a/packages/@aws-cdk/aws-iam/test/user.test.ts b/packages/@aws-cdk/aws-iam/test/user.test.ts index 9908eeac2c6c7..4a59a86d4a45d 100644 --- a/packages/@aws-cdk/aws-iam/test/user.test.ts +++ b/packages/@aws-cdk/aws-iam/test/user.test.ts @@ -81,7 +81,7 @@ describe('IAM user', () => { }); }); - test('imported user has an ARN', () => { + test('user imported by user name has an ARN', () => { // GIVEN const stack = new Stack(); @@ -94,6 +94,32 @@ describe('IAM user', () => { }); }); + test('user imported by user ARN has a name', () => { + // GIVEN + const stack = new Stack(); + const userName = 'MyUserName'; + + // WHEN + const user = User.fromUserArn(stack, 'import', `arn:aws:iam::account-id:user/${userName}`); + + // THEN + expect(stack.resolve(user.userName)).toStrictEqual(userName); + }); + + test('user imported by user attributes has a name', () => { + // GIVEN + const stack = new Stack(); + const userName = 'MyUserName'; + + // WHEN + const user = User.fromUserAttributes(stack, 'import', { + userArn: `arn:aws:iam::account-id:user/${userName}`, + }); + + // THEN + expect(stack.resolve(user.userName)).toStrictEqual(userName); + }); + test('add to policy of imported user', () => { // GIVEN const stack = new Stack(); diff --git a/packages/@aws-cdk/aws-imagebuilder/package.json b/packages/@aws-cdk/aws-imagebuilder/package.json index ff0ed2bbe9678..452e2f6ed8fa2 100644 --- a/packages/@aws-cdk/aws-imagebuilder/package.json +++ b/packages/@aws-cdk/aws-imagebuilder/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-inspector/package.json b/packages/@aws-cdk/aws-inspector/package.json index 72920e0d8da05..d767da5c11463 100644 --- a/packages/@aws-cdk/aws-inspector/package.json +++ b/packages/@aws-cdk/aws-inspector/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iot/package.json b/packages/@aws-cdk/aws-iot/package.json index 1a93905cc3e9f..ecb5945f55aba 100644 --- a/packages/@aws-cdk/aws-iot/package.json +++ b/packages/@aws-cdk/aws-iot/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iot1click/package.json b/packages/@aws-cdk/aws-iot1click/package.json index 6ca9e533cc1ea..5b2e454c8cb81 100644 --- a/packages/@aws-cdk/aws-iot1click/package.json +++ b/packages/@aws-cdk/aws-iot1click/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotanalytics/package.json b/packages/@aws-cdk/aws-iotanalytics/package.json index 4b630c634fb92..6d575f2a93943 100644 --- a/packages/@aws-cdk/aws-iotanalytics/package.json +++ b/packages/@aws-cdk/aws-iotanalytics/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotevents/package.json b/packages/@aws-cdk/aws-iotevents/package.json index 270da397bb18a..adba82161f209 100644 --- a/packages/@aws-cdk/aws-iotevents/package.json +++ b/packages/@aws-cdk/aws-iotevents/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotsitewise/package.json b/packages/@aws-cdk/aws-iotsitewise/package.json index 9a2540e65c512..aa3c45d292f89 100644 --- a/packages/@aws-cdk/aws-iotsitewise/package.json +++ b/packages/@aws-cdk/aws-iotsitewise/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotthingsgraph/package.json b/packages/@aws-cdk/aws-iotthingsgraph/package.json index 69732aa3d083e..2c4767ead3820 100644 --- a/packages/@aws-cdk/aws-iotthingsgraph/package.json +++ b/packages/@aws-cdk/aws-iotthingsgraph/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotwireless/package.json b/packages/@aws-cdk/aws-iotwireless/package.json index 0c23c066e878b..3fb0230c95f8a 100644 --- a/packages/@aws-cdk/aws-iotwireless/package.json +++ b/packages/@aws-cdk/aws-iotwireless/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ivs/package.json b/packages/@aws-cdk/aws-ivs/package.json index 1d7d8f8ee01ab..185b02bf71af2 100644 --- a/packages/@aws-cdk/aws-ivs/package.json +++ b/packages/@aws-cdk/aws-ivs/package.json @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-kendra/package.json b/packages/@aws-cdk/aws-kendra/package.json index 85d72f4303039..155a344e95d7c 100644 --- a/packages/@aws-cdk/aws-kendra/package.json +++ b/packages/@aws-cdk/aws-kendra/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kinesis/package.json b/packages/@aws-cdk/aws-kinesis/package.json index 5e19c404ba772..23b368db79eb4 100644 --- a/packages/@aws-cdk/aws-kinesis/package.json +++ b/packages/@aws-cdk/aws-kinesis/package.json @@ -96,7 +96,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-kinesisanalytics/package.json b/packages/@aws-cdk/aws-kinesisanalytics/package.json index 2daa7d2bd9f2b..58e6fff01d6f0 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kinesisfirehose/package.json b/packages/@aws-cdk/aws-kinesisfirehose/package.json index 471d30713a914..da5ce87c6c6c7 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kms/package.json b/packages/@aws-cdk/aws-kms/package.json index 16df28eb2ec90..6fa29b998daa0 100644 --- a/packages/@aws-cdk/aws-kms/package.json +++ b/packages/@aws-cdk/aws-kms/package.json @@ -94,7 +94,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-lakeformation/package.json b/packages/@aws-cdk/aws-lakeformation/package.json index 0282c39139f47..bf47bee33119f 100644 --- a/packages/@aws-cdk/aws-lakeformation/package.json +++ b/packages/@aws-cdk/aws-lakeformation/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index 50e53b0389e75..9ff5c4376d83f 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index 332e03d15e83c..d633b09927b32 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index 90d7f73f18cde..daf110688f6fd 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -70,7 +70,7 @@ "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "delay": "4.4.0", - "esbuild": "^0.8.31", + "esbuild": "^0.8.32", "pkglint": "0.0.0" }, "dependencies": { @@ -85,7 +85,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index 5cab113b0f8f6..70a147b834984 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -84,7 +84,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-lambda/README.md b/packages/@aws-cdk/aws-lambda/README.md index 54e7811688134..5b7ee7cd3240e 100644 --- a/packages/@aws-cdk/aws-lambda/README.md +++ b/packages/@aws-cdk/aws-lambda/README.md @@ -458,5 +458,5 @@ new lambda.Function(this, 'Function', { Language-specific higher level constructs are provided in separate modules: -* Node.js: [`@aws-cdk/aws-lambda-nodejs`](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-nodejs) -* Python: [`@aws-cdk/aws-lambda-python`](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-python) +* `@aws-cdk/aws-lambda-nodejs`: [Github](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-nodejs) & [CDK Docs](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-nodejs-readme.html) +* `@aws-cdk/aws-lambda-python`: [Github](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-python) & [CDK Docs](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-python-readme.html) diff --git a/packages/@aws-cdk/aws-lambda/lib/code.ts b/packages/@aws-cdk/aws-lambda/lib/code.ts index 491644b6c5ab6..af8b9d6dc26fd 100644 --- a/packages/@aws-cdk/aws-lambda/lib/code.ts +++ b/packages/@aws-cdk/aws-lambda/lib/code.ts @@ -249,6 +249,9 @@ export class AssetCode extends Code { path: this.path, ...this.options, }); + } else if (cdk.Stack.of(this.asset) !== cdk.Stack.of(scope)) { + throw new Error(`Asset is already associated with another stack '${cdk.Stack.of(this.asset).stackName}'. ` + + 'Create a new Code instance for every stack.'); } if (!this.asset.isZipArchive) { diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index 8c5def823b223..c67ad82ff7f74 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -128,7 +128,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-lambda/test/code.test.ts b/packages/@aws-cdk/aws-lambda/test/code.test.ts index a822ba698697e..9b99c095c2467 100644 --- a/packages/@aws-cdk/aws-lambda/test/code.test.ts +++ b/packages/@aws-cdk/aws-lambda/test/code.test.ts @@ -77,6 +77,26 @@ describe('code', () => { }, }, ResourcePart.CompleteDefinition); }); + + test('fails if asset is bound with a second stack', () => { + // GIVEN + const asset = lambda.Code.fromAsset(path.join(__dirname, 'my-lambda-handler')); + + const app = new cdk.App(); + const stack1 = new cdk.Stack(app, 'Stack1'); + new lambda.Function(stack1, 'Func', { + code: asset, + runtime: lambda.Runtime.NODEJS_10_X, + handler: 'foom', + }); + + const stack2 = new cdk.Stack(app, 'Stack2'); + expect(() => new lambda.Function(stack2, 'Func', { + code: asset, + runtime: lambda.Runtime.NODEJS_10_X, + handler: 'foom', + })).toThrow(/already associated/); + }); }); describe('lambda.Code.fromCfnParameters', () => { diff --git a/packages/@aws-cdk/aws-licensemanager/package.json b/packages/@aws-cdk/aws-licensemanager/package.json index 42d765826a30d..d20a899707fa0 100644 --- a/packages/@aws-cdk/aws-licensemanager/package.json +++ b/packages/@aws-cdk/aws-licensemanager/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index 5185d7075e1e3..13e6a5543905c 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index 711de0a3d82bc..b8df0773819e7 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -103,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-macie/package.json b/packages/@aws-cdk/aws-macie/package.json index 3d47c18c61083..b406426cc12e2 100644 --- a/packages/@aws-cdk/aws-macie/package.json +++ b/packages/@aws-cdk/aws-macie/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-managedblockchain/package.json b/packages/@aws-cdk/aws-managedblockchain/package.json index f9afaaef1e147..fa719693e2864 100644 --- a/packages/@aws-cdk/aws-managedblockchain/package.json +++ b/packages/@aws-cdk/aws-managedblockchain/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediaconnect/.eslintrc.js b/packages/@aws-cdk/aws-mediaconnect/.eslintrc.js new file mode 100644 index 0000000000000..61dd8dd001f63 --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/.eslintrc.js @@ -0,0 +1,3 @@ +const baseConfig = require('cdk-build-tools/config/eslintrc'); +baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-mediaconnect/.gitignore b/packages/@aws-cdk/aws-mediaconnect/.gitignore new file mode 100644 index 0000000000000..62ebc95d75ce6 --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/.gitignore @@ -0,0 +1,19 @@ +*.js +*.js.map +*.d.ts +tsconfig.json +node_modules +*.generated.ts +dist +.jsii + +.LAST_BUILD +.nyc_output +coverage +.nycrc +.LAST_PACKAGE +*.snk +nyc.config.js +!.eslintrc.js +!jest.config.js +junit.xml diff --git a/packages/@aws-cdk/aws-mediaconnect/.npmignore b/packages/@aws-cdk/aws-mediaconnect/.npmignore new file mode 100644 index 0000000000000..e4486030fcb17 --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/.npmignore @@ -0,0 +1,28 @@ +# Don't include original .ts files when doing `npm pack` +*.ts +!*.d.ts +coverage +.nyc_output +*.tgz + +dist +.LAST_PACKAGE +.LAST_BUILD +!*.js + +# Include .jsii +!.jsii + +*.snk + +*.tsbuildinfo + +tsconfig.json + +.eslintrc.js +jest.config.js + +# exclude cdk artifacts +**/cdk.out +junit.xml +test/ diff --git a/packages/@aws-cdk/aws-mediaconnect/LICENSE b/packages/@aws-cdk/aws-mediaconnect/LICENSE new file mode 100644 index 0000000000000..28e4bdcec77ec --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/@aws-cdk/aws-mediaconnect/NOTICE b/packages/@aws-cdk/aws-mediaconnect/NOTICE new file mode 100644 index 0000000000000..5fc3826926b5b --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-mediaconnect/README.md b/packages/@aws-cdk/aws-mediaconnect/README.md new file mode 100644 index 0000000000000..46776462c67ff --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/README.md @@ -0,0 +1,20 @@ +# AWS::MediaConnect Construct Library + + +--- + +![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) + +> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use. +> +> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib + +--- + + + +This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. + +```ts +import mediaconnect = require('@aws-cdk/aws-mediaconnect'); +``` diff --git a/packages/@aws-cdk/aws-mediaconnect/jest.config.js b/packages/@aws-cdk/aws-mediaconnect/jest.config.js new file mode 100644 index 0000000000000..54e28beb9798b --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('cdk-build-tools/config/jest.config'); +module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-mediaconnect/lib/index.ts b/packages/@aws-cdk/aws-mediaconnect/lib/index.ts new file mode 100644 index 0000000000000..ffee08204e7b6 --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::MediaConnect CloudFormation Resources: +export * from './mediaconnect.generated'; diff --git a/packages/@aws-cdk/aws-mediaconnect/package.json b/packages/@aws-cdk/aws-mediaconnect/package.json new file mode 100644 index 0000000000000..cba3f940f3510 --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/package.json @@ -0,0 +1,100 @@ +{ + "name": "@aws-cdk/aws-mediaconnect", + "version": "0.0.0", + "description": "The CDK Construct Library for AWS::MediaConnect", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "projectReferences": true, + "targets": { + "dotnet": { + "namespace": "Amazon.CDK.AWS.MediaConnect", + "packageId": "Amazon.CDK.AWS.MediaConnect", + "signAssembly": true, + "assemblyOriginatorKeyFile": "../../key.snk", + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" + }, + "java": { + "package": "software.amazon.awscdk.services.mediaconnect", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "mediaconnect" + } + }, + "python": { + "classifiers": [ + "Framework :: AWS CDK", + "Framework :: AWS CDK :: 1" + ], + "distName": "aws-cdk.aws-mediaconnect", + "module": "aws_cdk.aws_mediaconnect" + } + } + }, + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-cdk.git", + "directory": "packages/@aws-cdk/aws-mediaconnect" + }, + "homepage": "https://github.com/aws/aws-cdk", + "scripts": { + "build": "cdk-build", + "watch": "cdk-watch", + "lint": "cdk-lint", + "test": "cdk-test", + "integ": "cdk-integ", + "pkglint": "pkglint -f", + "package": "cdk-package", + "awslint": "cdk-awslint", + "cfn2ts": "cfn2ts", + "build+test+package": "npm run build+test && npm run package", + "build+test": "npm run build && npm test", + "compat": "cdk-compat", + "gen": "cfn2ts", + "rosetta:extract": "yarn --silent jsii-rosetta extract" + }, + "cdk-build": { + "cloudformation": "AWS::MediaConnect", + "jest": true, + "env": { + "AWSLINT_BASE_CONSTRUCT": "true" + } + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "AWS::MediaConnect", + "aws-mediaconnect" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "0.0.0", + "cdk-build-tools": "0.0.0", + "cfn2ts": "0.0.0", + "pkglint": "0.0.0" + }, + "dependencies": { + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" + }, + "peerDependencies": { + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" + }, + "engines": { + "node": ">= 14.15.0" + }, + "stability": "experimental", + "maturity": "cfn-only", + "awscdkio": { + "announce": false + }, + "private": true +} diff --git a/packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts b/packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts new file mode 100644 index 0000000000000..e394ef336bfb4 --- /dev/null +++ b/packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts @@ -0,0 +1,6 @@ +import '@aws-cdk/assert/jest'; +import {} from '../lib'; + +test('No tests are specified for this package', () => { + expect(true).toBe(true); +}); diff --git a/packages/@aws-cdk/aws-mediaconvert/package.json b/packages/@aws-cdk/aws-mediaconvert/package.json index 0a44b32b9d184..de7f37a53ca1d 100644 --- a/packages/@aws-cdk/aws-mediaconvert/package.json +++ b/packages/@aws-cdk/aws-mediaconvert/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-medialive/package.json b/packages/@aws-cdk/aws-medialive/package.json index c6d5d99df2a29..8a6e1a6ed4095 100644 --- a/packages/@aws-cdk/aws-medialive/package.json +++ b/packages/@aws-cdk/aws-medialive/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediapackage/package.json b/packages/@aws-cdk/aws-mediapackage/package.json index bfe6be1316e52..e8da81e9330ed 100644 --- a/packages/@aws-cdk/aws-mediapackage/package.json +++ b/packages/@aws-cdk/aws-mediapackage/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediastore/package.json b/packages/@aws-cdk/aws-mediastore/package.json index a519de117fded..25fb05a01edb9 100644 --- a/packages/@aws-cdk/aws-mediastore/package.json +++ b/packages/@aws-cdk/aws-mediastore/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-msk/package.json b/packages/@aws-cdk/aws-msk/package.json index a65ca6e875c4d..62603ab056c80 100644 --- a/packages/@aws-cdk/aws-msk/package.json +++ b/packages/@aws-cdk/aws-msk/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mwaa/package.json b/packages/@aws-cdk/aws-mwaa/package.json index dc9b81df0ed47..1fa969e08b06d 100644 --- a/packages/@aws-cdk/aws-mwaa/package.json +++ b/packages/@aws-cdk/aws-mwaa/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-neptune/package.json b/packages/@aws-cdk/aws-neptune/package.json index a3ec119e4387a..1f006cbc69c52 100644 --- a/packages/@aws-cdk/aws-neptune/package.json +++ b/packages/@aws-cdk/aws-neptune/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json index f5bd7120e51ed..ca8c3ecf2bf30 100644 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-networkmanager/package.json b/packages/@aws-cdk/aws-networkmanager/package.json index a78f59a812e28..f15f61d559b79 100644 --- a/packages/@aws-cdk/aws-networkmanager/package.json +++ b/packages/@aws-cdk/aws-networkmanager/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-opsworks/package.json b/packages/@aws-cdk/aws-opsworks/package.json index cd7725a8fb859..ea9d4e937e706 100644 --- a/packages/@aws-cdk/aws-opsworks/package.json +++ b/packages/@aws-cdk/aws-opsworks/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-opsworkscm/package.json b/packages/@aws-cdk/aws-opsworkscm/package.json index 1a6ac9dc50b12..7d7647e4df78d 100644 --- a/packages/@aws-cdk/aws-opsworkscm/package.json +++ b/packages/@aws-cdk/aws-opsworkscm/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-pinpoint/package.json b/packages/@aws-cdk/aws-pinpoint/package.json index 1d5d4678eb364..779029d2c56a6 100644 --- a/packages/@aws-cdk/aws-pinpoint/package.json +++ b/packages/@aws-cdk/aws-pinpoint/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-pinpointemail/package.json b/packages/@aws-cdk/aws-pinpointemail/package.json index 1c1f984d535f2..c496a4050238b 100644 --- a/packages/@aws-cdk/aws-pinpointemail/package.json +++ b/packages/@aws-cdk/aws-pinpointemail/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-qldb/package.json b/packages/@aws-cdk/aws-qldb/package.json index cf6b0007c39ac..4ba97349e2de4 100644 --- a/packages/@aws-cdk/aws-qldb/package.json +++ b/packages/@aws-cdk/aws-qldb/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ram/package.json b/packages/@aws-cdk/aws-ram/package.json index 97889d4010649..1d4706a60e3bd 100644 --- a/packages/@aws-cdk/aws-ram/package.json +++ b/packages/@aws-cdk/aws-ram/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts b/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts index 6fa16927fd51a..b877db48533e6 100644 --- a/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts +++ b/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts @@ -422,6 +422,10 @@ export class AuroraPostgresEngineVersion { public static readonly VER_9_6_16 = AuroraPostgresEngineVersion.of('9.6.16', '9.6'); /** Version "9.6.17". */ public static readonly VER_9_6_17 = AuroraPostgresEngineVersion.of('9.6.17', '9.6'); + /** Version "9.6.18". */ + public static readonly VER_9_6_18 = AuroraPostgresEngineVersion.of('9.6.18', '9.6'); + /** Version "9.6.19". */ + public static readonly VER_9_6_19 = AuroraPostgresEngineVersion.of('9.6.19', '9.6'); /** Version "10.4". */ public static readonly VER_10_4 = AuroraPostgresEngineVersion.of('10.4', '10'); /** Version "10.5". */ @@ -434,6 +438,10 @@ export class AuroraPostgresEngineVersion { public static readonly VER_10_11 = AuroraPostgresEngineVersion.of('10.11', '10', { s3Import: true, s3Export: true }); /** Version "10.12". */ public static readonly VER_10_12 = AuroraPostgresEngineVersion.of('10.12', '10', { s3Import: true, s3Export: true }); + /** Version "10.13". */ + public static readonly VER_10_13 = AuroraPostgresEngineVersion.of('10.13', '10', { s3Import: true, s3Export: true }); + /** Version "10.14". */ + public static readonly VER_10_14 = AuroraPostgresEngineVersion.of('10.14', '10', { s3Import: true, s3Export: true }); /** Version "11.4". */ public static readonly VER_11_4 = AuroraPostgresEngineVersion.of('11.4', '11', { s3Import: true }); /** Version "11.6". */ diff --git a/packages/@aws-cdk/aws-rds/package.json b/packages/@aws-cdk/aws-rds/package.json index ea25b5bd99d77..4505e29e5da29 100644 --- a/packages/@aws-cdk/aws-rds/package.json +++ b/packages/@aws-cdk/aws-rds/package.json @@ -109,7 +109,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-redshift/package.json b/packages/@aws-cdk/aws-redshift/package.json index 7347b516e04dd..5ce179a8c1419 100644 --- a/packages/@aws-cdk/aws-redshift/package.json +++ b/packages/@aws-cdk/aws-redshift/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-resourcegroups/package.json b/packages/@aws-cdk/aws-resourcegroups/package.json index 189f725467b50..47984d69dd1b1 100644 --- a/packages/@aws-cdk/aws-resourcegroups/package.json +++ b/packages/@aws-cdk/aws-resourcegroups/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-robomaker/package.json b/packages/@aws-cdk/aws-robomaker/package.json index 242d9f031ba37..f8485776136d7 100644 --- a/packages/@aws-cdk/aws-robomaker/package.json +++ b/packages/@aws-cdk/aws-robomaker/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index 0e34f572424a9..b510696b08f54 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index 4aede2b1be6c8..c7ef229dc3407 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -106,7 +106,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index f549ea9dc319e..f91398736574e 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-route53resolver/README.md b/packages/@aws-cdk/aws-route53resolver/README.md index f6eea77064f22..9cf4ab7748b3d 100644 --- a/packages/@aws-cdk/aws-route53resolver/README.md +++ b/packages/@aws-cdk/aws-route53resolver/README.md @@ -9,14 +9,6 @@ > > [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib -![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) - -> The APIs of higher level constructs in this module are experimental and under active development. -> They are subject to non-backward compatible changes or removal in any future version. These are -> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be -> announced in the release notes. This means that while you may use them, you may need to update -> your source code when upgrading to a newer version of this package. - --- diff --git a/packages/@aws-cdk/aws-route53resolver/package.json b/packages/@aws-cdk/aws-route53resolver/package.json index a7d4597fa58f9..d1dcd3718c83c 100644 --- a/packages/@aws-cdk/aws-route53resolver/package.json +++ b/packages/@aws-cdk/aws-route53resolver/package.json @@ -89,10 +89,10 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", - "maturity": "experimental", + "maturity": "cfn-only", "awscdkio": { "announce": false } diff --git a/packages/@aws-cdk/aws-s3-assets/package.json b/packages/@aws-cdk/aws-s3-assets/package.json index 10dfc20dc1cd4..c3254542be8af 100644 --- a/packages/@aws-cdk/aws-s3-assets/package.json +++ b/packages/@aws-cdk/aws-s3-assets/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py b/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py index 34a2da1681f4d..bf16d84608517 100644 --- a/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py +++ b/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py @@ -7,10 +7,11 @@ import logging import shutil import boto3 +import contextlib from datetime import datetime from uuid import uuid4 -from botocore.vendored import requests +from urllib.request import Request, urlopen from zipfile import ZipFile logger = logging.getLogger() @@ -212,8 +213,9 @@ def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId } try: - response = requests.put(responseUrl, data=body, headers=headers) - logger.info("| status code: " + response.reason) + request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) + with contextlib.closing(urlopen(request)) as response: + logger.info("| status code: " + response.reason) except Exception as e: logger.error("| unable to send response to CloudFormation") logger.exception(e) diff --git a/packages/@aws-cdk/aws-s3-deployment/package.json b/packages/@aws-cdk/aws-s3-deployment/package.json index 0ae5312216d20..1c6a156813c45 100644 --- a/packages/@aws-cdk/aws-s3-deployment/package.json +++ b/packages/@aws-cdk/aws-s3-deployment/package.json @@ -111,7 +111,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json index aa8c7fddd60c7..3e138f405e0d6 100644 --- a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json +++ b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json @@ -295,7 +295,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00" }, "S3Key": { "Fn::Join": [ @@ -308,7 +308,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" } ] } @@ -321,7 +321,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" } ] } @@ -331,19 +331,19 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn" ] }, - "Runtime": "python3.6", + "Handler": "index.handler", "Layers": [ { "Ref": "DeployWithInvalidationAwsCliLayerDEDD5787" } ], + "Runtime": "python3.6", "Timeout": 900 }, "DependsOn": [ @@ -365,17 +365,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00": { "Type": "String", - "Description": "S3 bucket for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "S3 bucket for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76": { "Type": "String", - "Description": "S3 key for asset version \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "S3 key for asset version \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7ArtifactHash8926088E": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aArtifactHash595EC1E7": { "Type": "String", - "Description": "Artifact hash for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "Artifact hash for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, "AssetParametersfc4481abf279255619ff7418faa5d24456fef3432ea0da59c95542578ff0222eS3Bucket9CD8B20A": { "Type": "String", diff --git a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json index 267c6eaa23476..9d52b89269f5a 100644 --- a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json +++ b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json @@ -304,7 +304,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00" }, "S3Key": { "Fn::Join": [ @@ -317,7 +317,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" } ] } @@ -330,7 +330,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" + "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" } ] } @@ -340,19 +340,19 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn" ] }, - "Runtime": "python3.6", + "Handler": "index.handler", "Layers": [ { "Ref": "DeployMeAwsCliLayer5F9219E9" } ], + "Runtime": "python3.6", "Timeout": 900 }, "DependsOn": [ @@ -700,17 +700,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00": { "Type": "String", - "Description": "S3 bucket for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "S3 bucket for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76": { "Type": "String", - "Description": "S3 key for asset version \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "S3 key for asset version \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, - "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7ArtifactHash8926088E": { + "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aArtifactHash595EC1E7": { "Type": "String", - "Description": "Artifact hash for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" + "Description": "Artifact hash for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" }, "AssetParametersfc4481abf279255619ff7418faa5d24456fef3432ea0da59c95542578ff0222eS3Bucket9CD8B20A": { "Type": "String", diff --git a/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py b/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py index cd88eaf6a5269..fcd79f18af4d5 100644 --- a/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py +++ b/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py @@ -425,7 +425,7 @@ def read_aws_out(): # resourceProps: map to pass to "ResourceProperties" # expected_status: "SUCCESS" or "FAILED" def invoke_handler(requestType, resourceProps, old_resource_props=None, physical_id=None, expected_status='SUCCESS'): - response_url = '' + response_url = 'http://' event={ 'ResponseURL': response_url, @@ -443,25 +443,33 @@ def invoke_handler(requestType, resourceProps, old_resource_props=None, physical event['PhysicalResourceId'] = physical_id class ContextMock: log_stream_name = 'log_stream' - class ResponseMock: reason = 'OK' + class ResponseMock: + reason = 'OK' + # needed because the context manager calls this + close = lambda _: _ context = ContextMock() - requests.put = MagicMock(return_value=ResponseMock()) + index.urlopen = MagicMock(return_value=ResponseMock()) #-------------------- # invoke the handler #-------------------- index.handler(event, context) - requests.put.assert_called_once() - (pos_args, kw_args) = requests.put.call_args + index.urlopen.assert_called_once() + (pos_args, _) = index.urlopen.call_args - actual_url = pos_args[0] - actual_data = kw_args['data'] + actual_request = pos_args[0] + actual_url = actual_request.full_url + actual_data = actual_request.data + actual_method = actual_request.method if actual_url != response_url: raise Exception("Invalid url used for sending CFN response. expected=%s actual=%s" % (response_url, actual_url)) + if actual_method != 'PUT': + raise Exception("Invalid method used for sending CFN response. expected=PUT actual=%s" % (actual_method,)) + resp = json.loads(actual_data) def assert_field(name, expect=None): diff --git a/packages/@aws-cdk/aws-s3-notifications/package.json b/packages/@aws-cdk/aws-s3-notifications/package.json index 89d5fa86793b1..7f5bb8ab5a193 100644 --- a/packages/@aws-cdk/aws-s3-notifications/package.json +++ b/packages/@aws-cdk/aws-s3-notifications/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-s3/lib/bucket.ts b/packages/@aws-cdk/aws-s3/lib/bucket.ts index 2d3a10285198f..4dbda84d6b34d 100644 --- a/packages/@aws-cdk/aws-s3/lib/bucket.ts +++ b/packages/@aws-cdk/aws-s3/lib/bucket.ts @@ -5,8 +5,9 @@ import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import { Fn, IResource, Lazy, RemovalPolicy, Resource, ResourceProps, Stack, Token, - CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, + CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, FeatureFlags, } from '@aws-cdk/core'; +import * as cxapi from '@aws-cdk/cx-api'; import { Construct } from 'constructs'; import { BucketPolicy } from './bucket-policy'; import { IBucketNotificationDestination } from './destination'; @@ -161,6 +162,18 @@ export interface IBucket extends IResource { */ grantPut(identity: iam.IGrantable, objectsKeyPattern?: any): iam.Grant; + /** + * Grant the given IAM identity permissions to modify the ACLs of objects in the given Bucket. + * + * If your application has the '@aws-cdk/aws-s3:grantWriteWithoutAcl' feature flag set, + * calling {@link grantWrite} or {@link grantReadWrite} no longer grants permissions to modify the ACLs of the objects; + * in this case, if you need to modify object ACLs, call this method explicitly. + * + * @param identity The principal + * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') + */ + grantPutAcl(identity: iam.IGrantable, objectsKeyPattern?: string): iam.Grant; + /** * Grants s3:DeleteObject* permission to an IAM pricipal for objects * in this bucket. @@ -584,7 +597,7 @@ abstract class BucketBase extends Resource implements IBucket { * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') */ public grantWrite(identity: iam.IGrantable, objectsKeyPattern: any = '*') { - return this.grant(identity, perms.BUCKET_WRITE_ACTIONS, perms.KEY_WRITE_ACTIONS, + return this.grant(identity, this.writeActions, perms.KEY_WRITE_ACTIONS, this.bucketArn, this.arnForObjects(objectsKeyPattern)); } @@ -598,7 +611,12 @@ abstract class BucketBase extends Resource implements IBucket { * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') */ public grantPut(identity: iam.IGrantable, objectsKeyPattern: any = '*') { - return this.grant(identity, perms.BUCKET_PUT_ACTIONS, perms.KEY_WRITE_ACTIONS, + return this.grant(identity, this.putActions, perms.KEY_WRITE_ACTIONS, + this.arnForObjects(objectsKeyPattern)); + } + + public grantPutAcl(identity: iam.IGrantable, objectsKeyPattern: string = '*') { + return this.grant(identity, perms.BUCKET_PUT_ACL_ACTIONS, [], this.arnForObjects(objectsKeyPattern)); } @@ -625,7 +643,7 @@ abstract class BucketBase extends Resource implements IBucket { * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') */ public grantReadWrite(identity: iam.IGrantable, objectsKeyPattern: any = '*') { - const bucketActions = perms.BUCKET_READ_ACTIONS.concat(perms.BUCKET_WRITE_ACTIONS); + const bucketActions = perms.BUCKET_READ_ACTIONS.concat(this.writeActions); // we need unique permissions because some permissions are common between read and write key actions const keyActions = [...new Set([...perms.KEY_READ_ACTIONS, ...perms.KEY_WRITE_ACTIONS])]; @@ -673,6 +691,19 @@ abstract class BucketBase extends Resource implements IBucket { }); } + private get writeActions(): string[] { + return [ + ...perms.BUCKET_DELETE_ACTIONS, + ...this.putActions, + ]; + } + + private get putActions(): string[] { + return FeatureFlags.of(this).isEnabled(cxapi.S3_GRANT_WRITE_WITHOUT_ACL) + ? perms.BUCKET_PUT_ACTIONS + : perms.LEGACY_BUCKET_PUT_ACTIONS; + } + private urlJoin(...components: string[]): string { return components.reduce((result, component) => { if (result.endsWith('/')) { diff --git a/packages/@aws-cdk/aws-s3/lib/perms.ts b/packages/@aws-cdk/aws-s3/lib/perms.ts index 544bdda936da9..eebab60da2104 100644 --- a/packages/@aws-cdk/aws-s3/lib/perms.ts +++ b/packages/@aws-cdk/aws-s3/lib/perms.ts @@ -4,18 +4,22 @@ export const BUCKET_READ_ACTIONS = [ 's3:List*', ]; -export const BUCKET_PUT_ACTIONS = [ +export const LEGACY_BUCKET_PUT_ACTIONS = [ 's3:PutObject*', 's3:Abort*', ]; -export const BUCKET_DELETE_ACTIONS = [ - 's3:DeleteObject*', +export const BUCKET_PUT_ACTIONS = [ + 's3:PutObject', + 's3:Abort*', ]; -export const BUCKET_WRITE_ACTIONS = [ - ...BUCKET_DELETE_ACTIONS, - ...BUCKET_PUT_ACTIONS, +export const BUCKET_PUT_ACL_ACTIONS = [ + 's3:PutObjectAcl', +]; + +export const BUCKET_DELETE_ACTIONS = [ + 's3:DeleteObject*', ]; export const KEY_READ_ACTIONS = [ diff --git a/packages/@aws-cdk/aws-s3/package.json b/packages/@aws-cdk/aws-s3/package.json index 3ed503ab990cd..5fd6bb04be7b9 100644 --- a/packages/@aws-cdk/aws-s3/package.json +++ b/packages/@aws-cdk/aws-s3/package.json @@ -86,7 +86,8 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" + "constructs": "10.0.0-pre.5", + "@aws-cdk/cx-api": "0.0.0" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -94,10 +95,11 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" + "constructs": "10.0.0-pre.5", + "@aws-cdk/cx-api": "0.0.0" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-s3/test/bucket.test.ts b/packages/@aws-cdk/aws-s3/test/bucket.test.ts index 997a3abd4e56f..cb9202b28cfd7 100644 --- a/packages/@aws-cdk/aws-s3/test/bucket.test.ts +++ b/packages/@aws-cdk/aws-s3/test/bucket.test.ts @@ -3,6 +3,7 @@ import { countResources, expect, haveResource, haveResourceLike, ResourcePart, S import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import * as cdk from '@aws-cdk/core'; +import * as cxapi from '@aws-cdk/cx-api'; import { nodeunitShim, Test } from 'nodeunit-shim'; import * as s3 from '../lib'; @@ -1085,176 +1086,293 @@ nodeunitShim({ test.done(); }, - }, - 'grantWrite with KMS key has appropriate permissions for multipart uploads'(test: Test) { - const stack = new cdk.Stack(); - const bucket = new s3.Bucket(stack, 'MyBucket', { encryption: s3.BucketEncryption.KMS }); - const user = new iam.User(stack, 'MyUser'); - bucket.grantWrite(user); + 'does not grant PutObjectAcl when the S3_GRANT_WRITE_WITHOUT_ACL feature is enabled'(test: Test) { + const app = new cdk.App({ + context: { + [cxapi.S3_GRANT_WRITE_WITHOUT_ACL]: true, + }, + }); + const stack = new cdk.Stack(app, 'Stack'); + const bucket = new s3.Bucket(stack, 'MyBucket'); + const user = new iam.User(stack, 'MyUser'); - expect(stack).toMatch({ - 'Resources': { - 'MyBucketKeyC17130CF': { - 'Type': 'AWS::KMS::Key', - 'Properties': { - 'KeyPolicy': { - 'Statement': [ + bucket.grantReadWrite(user); + + expect(stack).to(haveResourceLike('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': [ + { + 'Action': [ + 's3:GetObject*', + 's3:GetBucket*', + 's3:List*', + 's3:DeleteObject*', + 's3:PutObject', + 's3:Abort*', + ], + 'Resource': [ + { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, { - 'Action': [ - 'kms:Create*', - 'kms:Describe*', - 'kms:Enable*', - 'kms:List*', - 'kms:Put*', - 'kms:Update*', - 'kms:Revoke*', - 'kms:Disable*', - 'kms:Get*', - 'kms:Delete*', - 'kms:ScheduleKeyDeletion', - 'kms:CancelKeyDeletion', - 'kms:GenerateDataKey', - 'kms:TagResource', - 'kms:UntagResource', - ], - 'Effect': 'Allow', - 'Principal': { - 'AWS': { - 'Fn::Join': [ - '', - [ - 'arn:', - { - 'Ref': 'AWS::Partition', - }, - ':iam::', - { - 'Ref': 'AWS::AccountId', - }, - ':root', + 'Fn::Join': ['', [ + { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, + '/*', + ]], + }, + ], + }, + ], + }, + })); + + test.done(); + }, + }, + + 'grantWrite': { + 'with KMS key has appropriate permissions for multipart uploads'(test: Test) { + const stack = new cdk.Stack(); + const bucket = new s3.Bucket(stack, 'MyBucket', { encryption: s3.BucketEncryption.KMS }); + const user = new iam.User(stack, 'MyUser'); + bucket.grantWrite(user); + + expect(stack).toMatch({ + 'Resources': { + 'MyBucketKeyC17130CF': { + 'Type': 'AWS::KMS::Key', + 'Properties': { + 'KeyPolicy': { + 'Statement': [ + { + 'Action': [ + 'kms:Create*', + 'kms:Describe*', + 'kms:Enable*', + 'kms:List*', + 'kms:Put*', + 'kms:Update*', + 'kms:Revoke*', + 'kms:Disable*', + 'kms:Get*', + 'kms:Delete*', + 'kms:ScheduleKeyDeletion', + 'kms:CancelKeyDeletion', + 'kms:GenerateDataKey', + 'kms:TagResource', + 'kms:UntagResource', + ], + 'Effect': 'Allow', + 'Principal': { + 'AWS': { + 'Fn::Join': [ + '', + [ + 'arn:', + { + 'Ref': 'AWS::Partition', + }, + ':iam::', + { + 'Ref': 'AWS::AccountId', + }, + ':root', + ], ], - ], + }, }, + 'Resource': '*', }, - 'Resource': '*', - }, - { - 'Action': [ - 'kms:Encrypt', - 'kms:ReEncrypt*', - 'kms:GenerateDataKey*', - 'kms:Decrypt', - ], - 'Effect': 'Allow', - 'Principal': { - 'AWS': { - 'Fn::GetAtt': [ - 'MyUserDC45028B', - 'Arn', - ], + { + 'Action': [ + 'kms:Encrypt', + 'kms:ReEncrypt*', + 'kms:GenerateDataKey*', + 'kms:Decrypt', + ], + 'Effect': 'Allow', + 'Principal': { + 'AWS': { + 'Fn::GetAtt': [ + 'MyUserDC45028B', + 'Arn', + ], + }, }, + 'Resource': '*', }, - 'Resource': '*', - }, - ], - 'Version': '2012-10-17', + ], + 'Version': '2012-10-17', + }, + 'Description': 'Created by Default/MyBucket', }, - 'Description': 'Created by Default/MyBucket', + 'UpdateReplacePolicy': 'Retain', + 'DeletionPolicy': 'Retain', }, - 'UpdateReplacePolicy': 'Retain', - 'DeletionPolicy': 'Retain', - }, - 'MyBucketF68F3FF0': { - 'Type': 'AWS::S3::Bucket', - 'Properties': { - 'BucketEncryption': { - 'ServerSideEncryptionConfiguration': [ - { - 'ServerSideEncryptionByDefault': { - 'KMSMasterKeyID': { + 'MyBucketF68F3FF0': { + 'Type': 'AWS::S3::Bucket', + 'Properties': { + 'BucketEncryption': { + 'ServerSideEncryptionConfiguration': [ + { + 'ServerSideEncryptionByDefault': { + 'KMSMasterKeyID': { + 'Fn::GetAtt': [ + 'MyBucketKeyC17130CF', + 'Arn', + ], + }, + 'SSEAlgorithm': 'aws:kms', + }, + }, + ], + }, + }, + 'UpdateReplacePolicy': 'Retain', + 'DeletionPolicy': 'Retain', + }, + 'MyUserDC45028B': { + 'Type': 'AWS::IAM::User', + }, + 'MyUserDefaultPolicy7B897426': { + 'Type': 'AWS::IAM::Policy', + 'Properties': { + 'PolicyDocument': { + 'Statement': [ + { + 'Action': [ + 's3:DeleteObject*', + 's3:PutObject*', + 's3:Abort*', + ], + 'Effect': 'Allow', + 'Resource': [ + { + 'Fn::GetAtt': [ + 'MyBucketF68F3FF0', + 'Arn', + ], + }, + { + 'Fn::Join': [ + '', + [ + { + 'Fn::GetAtt': [ + 'MyBucketF68F3FF0', + 'Arn', + ], + }, + '/*', + ], + ], + }, + ], + }, + { + 'Action': [ + 'kms:Encrypt', + 'kms:ReEncrypt*', + 'kms:GenerateDataKey*', + 'kms:Decrypt', + ], + 'Effect': 'Allow', + 'Resource': { 'Fn::GetAtt': [ 'MyBucketKeyC17130CF', 'Arn', ], }, - 'SSEAlgorithm': 'aws:kms', }, + ], + 'Version': '2012-10-17', + }, + 'PolicyName': 'MyUserDefaultPolicy7B897426', + 'Users': [ + { + 'Ref': 'MyUserDC45028B', }, ], }, }, - 'UpdateReplacePolicy': 'Retain', - 'DeletionPolicy': 'Retain', }, - 'MyUserDC45028B': { - 'Type': 'AWS::IAM::User', + }); + + test.done(); + }, + + 'does not grant PutObjectAcl when the S3_GRANT_WRITE_WITHOUT_ACL feature is enabled'(test: Test) { + const app = new cdk.App({ + context: { + [cxapi.S3_GRANT_WRITE_WITHOUT_ACL]: true, }, - 'MyUserDefaultPolicy7B897426': { - 'Type': 'AWS::IAM::Policy', - 'Properties': { - 'PolicyDocument': { - 'Statement': [ - { - 'Action': [ - 's3:DeleteObject*', - 's3:PutObject*', - 's3:Abort*', - ], - 'Effect': 'Allow', - 'Resource': [ - { - 'Fn::GetAtt': [ - 'MyBucketF68F3FF0', - 'Arn', - ], - }, - { - 'Fn::Join': [ - '', - [ - { - 'Fn::GetAtt': [ - 'MyBucketF68F3FF0', - 'Arn', - ], - }, - '/*', - ], - ], - }, - ], - }, + }); + const stack = new cdk.Stack(app, 'Stack'); + const bucket = new s3.Bucket(stack, 'MyBucket'); + const user = new iam.User(stack, 'MyUser'); + + bucket.grantWrite(user); + + expect(stack).to(haveResourceLike('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': [ + { + 'Action': [ + 's3:DeleteObject*', + 's3:PutObject', + 's3:Abort*', + ], + 'Resource': [ + { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, { - 'Action': [ - 'kms:Encrypt', - 'kms:ReEncrypt*', - 'kms:GenerateDataKey*', - 'kms:Decrypt', - ], - 'Effect': 'Allow', - 'Resource': { - 'Fn::GetAtt': [ - 'MyBucketKeyC17130CF', - 'Arn', - ], - }, + 'Fn::Join': ['', [ + { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, + '/*', + ]], }, ], - 'Version': '2012-10-17', }, - 'PolicyName': 'MyUserDefaultPolicy7B897426', - 'Users': [ - { - 'Ref': 'MyUserDC45028B', + ], + }, + })); + + test.done(); + }, + }, + + 'grantPut': { + 'does not grant PutObjectAcl when the S3_GRANT_WRITE_WITHOUT_ACL feature is enabled'(test: Test) { + const app = new cdk.App({ + context: { + [cxapi.S3_GRANT_WRITE_WITHOUT_ACL]: true, + }, + }); + const stack = new cdk.Stack(app, 'Stack'); + const bucket = new s3.Bucket(stack, 'MyBucket'); + const user = new iam.User(stack, 'MyUser'); + + bucket.grantPut(user); + + expect(stack).to(haveResourceLike('AWS::IAM::Policy', { + 'PolicyDocument': { + 'Statement': [ + { + 'Action': [ + 's3:PutObject', + 's3:Abort*', + ], + 'Resource': { + 'Fn::Join': ['', [ + { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, + '/*', + ]], }, - ], - }, + }, + ], }, - }, - }); + })); - test.done(); + test.done(); + }, }, 'more grants'(test: Test) { diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json index d6c58403a5414..e4981ab8180e0 100644 --- a/packages/@aws-cdk/aws-sagemaker/package.json +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sam/package.json b/packages/@aws-cdk/aws-sam/package.json index e4ccbaa37c62f..fd6cd8628a312 100644 --- a/packages/@aws-cdk/aws-sam/package.json +++ b/packages/@aws-cdk/aws-sam/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sdb/package.json b/packages/@aws-cdk/aws-sdb/package.json index 2ae25527bbcbf..c536472f8c508 100644 --- a/packages/@aws-cdk/aws-sdb/package.json +++ b/packages/@aws-cdk/aws-sdb/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-secretsmanager/package.json b/packages/@aws-cdk/aws-secretsmanager/package.json index 0420b2402529c..fd74429eddca2 100644 --- a/packages/@aws-cdk/aws-secretsmanager/package.json +++ b/packages/@aws-cdk/aws-secretsmanager/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-securityhub/package.json b/packages/@aws-cdk/aws-securityhub/package.json index cddae0a79b9b0..cdcd56d59ba6d 100644 --- a/packages/@aws-cdk/aws-securityhub/package.json +++ b/packages/@aws-cdk/aws-securityhub/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicecatalog/package.json b/packages/@aws-cdk/aws-servicecatalog/package.json index 535b2205ee518..ccbf4b26d856d 100644 --- a/packages/@aws-cdk/aws-servicecatalog/package.json +++ b/packages/@aws-cdk/aws-servicecatalog/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicediscovery/package.json b/packages/@aws-cdk/aws-servicediscovery/package.json index a2f12ab225ebc..99ee44935b839 100644 --- a/packages/@aws-cdk/aws-servicediscovery/package.json +++ b/packages/@aws-cdk/aws-servicediscovery/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index 31d1cfa549e39..a4b0472f346c3 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-ses/package.json b/packages/@aws-cdk/aws-ses/package.json index bd5b41df2ce40..c44c7e3c4ef78 100644 --- a/packages/@aws-cdk/aws-ses/package.json +++ b/packages/@aws-cdk/aws-ses/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json index 26ae15e0fec33..1c8fdfa9efa8d 100644 --- a/packages/@aws-cdk/aws-signer/package.json +++ b/packages/@aws-cdk/aws-signer/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index 7dfacbe739f40..8c39536ed26f0 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-sns/README.md b/packages/@aws-cdk/aws-sns/README.md index 05ad30fc9af17..b5d9f52c3d9b9 100644 --- a/packages/@aws-cdk/aws-sns/README.md +++ b/packages/@aws-cdk/aws-sns/README.md @@ -30,9 +30,12 @@ const topic = new sns.Topic(this, 'Topic', { contentBasedDeduplication: true, displayName: 'Customer subscription topic', fifo: true, + topicName: 'customerTopic', }); ``` +Note that FIFO topics require a topic name to be provided. The required `.fifo` suffix will be automatically added to the topic name if it is not explicitly provided. + ## Subscriptions Various subscriptions can be added to the topic by calling the diff --git a/packages/@aws-cdk/aws-sns/lib/topic.ts b/packages/@aws-cdk/aws-sns/lib/topic.ts index 532c138fd7ef3..f4bbfc10cb2ca 100644 --- a/packages/@aws-cdk/aws-sns/lib/topic.ts +++ b/packages/@aws-cdk/aws-sns/lib/topic.ts @@ -80,13 +80,26 @@ export class Topic extends TopicBase { physicalName: props.topicName, }); + if (props.fifo && !props.topicName) { + // NOTE: Workaround for CloudFormation problem reported in CDK issue 12386 + // see https://github.com/aws/aws-cdk/issues/12386 + throw new Error('FIFO SNS topics must be given a topic name.'); + } + if (props.contentBasedDeduplication && !props.fifo) { throw new Error('Content based deduplication can only be enabled for FIFO SNS topics.'); } + let cfnTopicName: string; + if (props.fifo && props.topicName && !props.topicName.endsWith('.fifo')) { + cfnTopicName = this.physicalName + '.fifo'; + } else { + cfnTopicName = this.physicalName; + } + const resource = new CfnTopic(this, 'Resource', { displayName: props.displayName, - topicName: this.physicalName, + topicName: cfnTopicName, kmsMasterKeyId: props.masterKey && props.masterKey.keyArn, contentBasedDeduplication: props.contentBasedDeduplication, fifoTopic: props.fifo, diff --git a/packages/@aws-cdk/aws-sns/package.json b/packages/@aws-cdk/aws-sns/package.json index b79497e6e998a..1e701393a8cff 100644 --- a/packages/@aws-cdk/aws-sns/package.json +++ b/packages/@aws-cdk/aws-sns/package.json @@ -105,7 +105,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts b/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts index 76e4cef96994c..a4352cbe6fe44 100644 --- a/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts +++ b/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts @@ -6,7 +6,7 @@ class SNSFifoInteg extends Stack { super(scope, id, props); new Topic(this, 'MyTopic', { - topicName: 'fooTopic.fifo', + topicName: 'fooTopic', displayName: 'fooDisplayName', contentBasedDeduplication: true, fifo: true, diff --git a/packages/@aws-cdk/aws-sns/test/test.sns.ts b/packages/@aws-cdk/aws-sns/test/test.sns.ts index bbe171ca188ab..cc4b50aed717c 100644 --- a/packages/@aws-cdk/aws-sns/test/test.sns.ts +++ b/packages/@aws-cdk/aws-sns/test/test.sns.ts @@ -81,7 +81,7 @@ export = { test.done(); }, - 'specify both'(test: Test) { + 'specify displayName and topicName'(test: Test) { const stack = new cdk.Stack(); new sns.Topic(stack, 'MyTopic', { @@ -104,11 +104,70 @@ export = { test.done(); }, + // NOTE: This test case should be invalid when CloudFormation problem reported in CDK issue 12386 is resolved + // see https://github.com/aws/aws-cdk/issues/12386 + 'throw with missing topicName on fifo topic'(test: Test) { + const stack = new cdk.Stack(); + + test.throws(() => new sns.Topic(stack, 'MyTopic', { + fifo: true, + }), /FIFO SNS topics must be given a topic name./); + + test.done(); + }, + + 'specify fifo without .fifo suffix in topicName'(test: Test) { + const stack = new cdk.Stack(); + + new sns.Topic(stack, 'MyTopic', { + fifo: true, + topicName: 'topicName', + }); + + expect(stack).toMatch({ + 'Resources': { + 'MyTopic86869434': { + 'Type': 'AWS::SNS::Topic', + 'Properties': { + 'FifoTopic': true, + 'TopicName': 'topicName.fifo', + }, + }, + }, + }); + + test.done(); + }, + + 'specify fifo with .fifo suffix in topicName'(test: Test) { + const stack = new cdk.Stack(); + + new sns.Topic(stack, 'MyTopic', { + fifo: true, + topicName: 'topicName.fifo', + }); + + expect(stack).toMatch({ + 'Resources': { + 'MyTopic86869434': { + 'Type': 'AWS::SNS::Topic', + 'Properties': { + 'FifoTopic': true, + 'TopicName': 'topicName.fifo', + }, + }, + }, + }); + + test.done(); + }, + 'specify fifo without contentBasedDeduplication'(test: Test) { const stack = new cdk.Stack(); new sns.Topic(stack, 'MyTopic', { fifo: true, + topicName: 'topicName', }); expect(stack).toMatch({ @@ -117,6 +176,7 @@ export = { 'Type': 'AWS::SNS::Topic', 'Properties': { 'FifoTopic': true, + 'TopicName': 'topicName.fifo', }, }, }, @@ -131,6 +191,7 @@ export = { new sns.Topic(stack, 'MyTopic', { contentBasedDeduplication: true, fifo: true, + topicName: 'topicName', }); expect(stack).toMatch({ @@ -140,6 +201,7 @@ export = { 'Properties': { 'ContentBasedDeduplication': true, 'FifoTopic': true, + 'TopicName': 'topicName.fifo', }, }, }, diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index 18bb815996ac7..7be27a709ae75 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -76,7 +76,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ssm/package.json b/packages/@aws-cdk/aws-ssm/package.json index 43b5bdc958e03..38f62f0bb40f3 100644 --- a/packages/@aws-cdk/aws-ssm/package.json +++ b/packages/@aws-cdk/aws-ssm/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-sso/package.json b/packages/@aws-cdk/aws-sso/package.json index ea7aaa1d2c45b..02842e0bbb53d 100644 --- a/packages/@aws-cdk/aws-sso/package.json +++ b/packages/@aws-cdk/aws-sso/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md index 32044b4a23649..689ed0a53195f 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md @@ -667,7 +667,7 @@ You can call the [`StartJobRun`](https://docs.aws.amazon.com/glue/latest/dg/aws- ```ts new GlueStartJobRun(stack, 'Task', { - jobName: 'my-glue-job', + glueJobName: 'my-glue-job', arguments: { key: 'value', }, diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 3176bf2829eb5..05e29937628d3 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -118,7 +118,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-stepfunctions/package.json b/packages/@aws-cdk/aws-stepfunctions/package.json index 81c0056c5c017..9f20f1437939c 100644 --- a/packages/@aws-cdk/aws-stepfunctions/package.json +++ b/packages/@aws-cdk/aws-stepfunctions/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-synthetics/package.json b/packages/@aws-cdk/aws-synthetics/package.json index 2a4bc2170c834..e9c168a03b00d 100644 --- a/packages/@aws-cdk/aws-synthetics/package.json +++ b/packages/@aws-cdk/aws-synthetics/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "developer-preview", diff --git a/packages/@aws-cdk/aws-timestream/package.json b/packages/@aws-cdk/aws-timestream/package.json index c9c5c606d1361..40af4cde4d161 100644 --- a/packages/@aws-cdk/aws-timestream/package.json +++ b/packages/@aws-cdk/aws-timestream/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-transfer/package.json b/packages/@aws-cdk/aws-transfer/package.json index 5f30d3ad91603..e7537ca2a0c04 100644 --- a/packages/@aws-cdk/aws-transfer/package.json +++ b/packages/@aws-cdk/aws-transfer/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-waf/package.json b/packages/@aws-cdk/aws-waf/package.json index 907e68f31eb51..7bbbbd97f7287 100644 --- a/packages/@aws-cdk/aws-waf/package.json +++ b/packages/@aws-cdk/aws-waf/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-wafregional/package.json b/packages/@aws-cdk/aws-wafregional/package.json index 60f7c2052c232..f07a701b7d05f 100644 --- a/packages/@aws-cdk/aws-wafregional/package.json +++ b/packages/@aws-cdk/aws-wafregional/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-wafv2/package.json b/packages/@aws-cdk/aws-wafv2/package.json index f06a0b25d4d39..264600e14ddd5 100644 --- a/packages/@aws-cdk/aws-wafv2/package.json +++ b/packages/@aws-cdk/aws-wafv2/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-workspaces/package.json b/packages/@aws-cdk/aws-workspaces/package.json index 4c14d7649c0d7..d8dc39a0c53d1 100644 --- a/packages/@aws-cdk/aws-workspaces/package.json +++ b/packages/@aws-cdk/aws-workspaces/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/cdk-assets-schema/package.json b/packages/@aws-cdk/cdk-assets-schema/package.json index d38f3fb7674b5..041fcf748eea0 100644 --- a/packages/@aws-cdk/cdk-assets-schema/package.json +++ b/packages/@aws-cdk/cdk-assets-schema/package.json @@ -69,7 +69,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "deprecated", "awscdkio": { diff --git a/packages/@aws-cdk/cfnspec/CHANGELOG.md b/packages/@aws-cdk/cfnspec/CHANGELOG.md index c2eac793948d6..b2d9016a94475 100644 --- a/packages/@aws-cdk/cfnspec/CHANGELOG.md +++ b/packages/@aws-cdk/cfnspec/CHANGELOG.md @@ -1,3 +1,472 @@ +# CloudFormation Resource Specification v23.0.0 + +## New Resource Types + +* AWS::Config::StoredQuery +* AWS::DataSync::Agent +* AWS::DataSync::LocationEFS +* AWS::DataSync::LocationFSxWindows +* AWS::DataSync::LocationNFS +* AWS::DataSync::LocationObjectStorage +* AWS::DataSync::LocationS3 +* AWS::DataSync::LocationSMB +* AWS::DataSync::Task +* AWS::MediaConnect::Flow +* AWS::MediaConnect::FlowEntitlement +* AWS::MediaConnect::FlowOutput +* AWS::MediaConnect::FlowSource +* AWS::MediaConnect::FlowVpcInterface +* AWS::Route53::DNSSEC +* AWS::Route53::KeySigningKey +* AWS::Route53Resolver::ResolverDNSSECConfig + +## Attribute Changes + +* AWS::ApiGateway::ClientCertificate ClientCertificateId (__added__) +* AWS::AuditManager::Assessment arn (__deleted__) +* AWS::AuditManager::Assessment assessmentId (__deleted__) +* AWS::AuditManager::Assessment creationTime (__deleted__) +* AWS::AuditManager::Assessment delegations (__deleted__) +* AWS::AuditManager::Assessment frameworkId (__deleted__) +* AWS::AuditManager::Assessment Arn (__added__) +* AWS::AuditManager::Assessment AssessmentId (__added__) +* AWS::AuditManager::Assessment CreationTime (__added__) +* AWS::AuditManager::Assessment Delegations (__added__) +* AWS::AuditManager::Assessment FrameworkId (__added__) +* AWS::EC2::NetworkInsightsAnalysis StatusMessage (__added__) +* AWS::ElastiCache::User Authentication (__deleted__) +* AWS::ElastiCache::User UserGroupIds (__deleted__) +* AWS::ElastiCache::UserGroup PendingChanges (__deleted__) +* AWS::ElastiCache::UserGroup ReplicationGroupIds (__deleted__) +* AWS::ElasticLoadBalancingV2::ListenerRule IsDefault (__added__) +* AWS::ElasticLoadBalancingV2::ListenerRule RuleArn (__added__) +* AWS::SageMaker::Device DeviceFleetName (__deleted__) +* AWS::SageMaker::DeviceFleet DeviceFleetName (__deleted__) + +## Property Changes + +* AWS::ACMPCA::CertificateAuthority CsrExtensions (__added__) +* AWS::ApiGatewayV2::Integration ResponseParameters (__added__) +* AWS::Athena::DataCatalog Tags.ItemType (__added__) +* AWS::Athena::DataCatalog Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::Athena::WorkGroup Tags.ItemType (__added__) +* AWS::Athena::WorkGroup Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::AuditManager::Assessment assessmentReportsDestination (__deleted__) +* AWS::AuditManager::Assessment awsAccount (__deleted__) +* AWS::AuditManager::Assessment description (__deleted__) +* AWS::AuditManager::Assessment frameworkId (__deleted__) +* AWS::AuditManager::Assessment name (__deleted__) +* AWS::AuditManager::Assessment roles (__deleted__) +* AWS::AuditManager::Assessment scope (__deleted__) +* AWS::AuditManager::Assessment status (__deleted__) +* AWS::AuditManager::Assessment tags (__deleted__) +* AWS::AuditManager::Assessment AssessmentReportsDestination (__added__) +* AWS::AuditManager::Assessment AwsAccount (__added__) +* AWS::AuditManager::Assessment Description (__added__) +* AWS::AuditManager::Assessment FrameworkId (__added__) +* AWS::AuditManager::Assessment Name (__added__) +* AWS::AuditManager::Assessment Roles (__added__) +* AWS::AuditManager::Assessment Scope (__added__) +* AWS::AuditManager::Assessment Status (__added__) +* AWS::AuditManager::Assessment Tags (__added__) +* AWS::EC2::CarrierGateway Tags.DuplicatesAllowed (__added__) +* AWS::EC2::CarrierGateway Tags.ItemType (__added__) +* AWS::EC2::CarrierGateway Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::EC2::LocalGatewayRouteTableVPCAssociation Tags.DuplicatesAllowed (__added__) +* AWS::EC2::LocalGatewayRouteTableVPCAssociation Tags.ItemType (__added__) +* AWS::EC2::LocalGatewayRouteTableVPCAssociation Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::EC2::NetworkInsightsAnalysis StatusMessage (__deleted__) +* AWS::ECR::PublicRepository RepositoryPolicyText.PrimitiveType (__added__) +* AWS::ECR::Repository RepositoryPolicyText.PrimitiveType (__added__) +* AWS::ElastiCache::User Authentication (__added__) +* AWS::ElastiCache::User UserGroupIds (__added__) +* AWS::ElastiCache::User Passwords.DuplicatesAllowed (__added__) +* AWS::ElastiCache::User Passwords.PrimitiveItemType (__added__) +* AWS::ElastiCache::User Passwords.Type (__changed__) + * Old: PasswordList + * New: List +* AWS::ElastiCache::UserGroup PendingChanges (__added__) +* AWS::ElastiCache::UserGroup ReplicationGroupIds (__added__) +* AWS::ElastiCache::UserGroup UserIds.DuplicatesAllowed (__added__) +* AWS::ElastiCache::UserGroup UserIds.PrimitiveItemType (__added__) +* AWS::ElastiCache::UserGroup UserIds.Type (__changed__) + * Old: UserIdList + * New: List +* AWS::GameLift::GameServerGroup InstanceDefinitions.ItemType (__added__) +* AWS::GameLift::GameServerGroup InstanceDefinitions.Type (__changed__) + * Old: InstanceDefinitions + * New: List +* AWS::GameLift::GameServerGroup Tags.ItemType (__added__) +* AWS::GameLift::GameServerGroup Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::GameLift::GameServerGroup VpcSubnets.PrimitiveItemType (__added__) +* AWS::GameLift::GameServerGroup VpcSubnets.Type (__changed__) + * Old: VpcSubnets + * New: List +* AWS::IoT::Authorizer Tags.ItemType (__added__) +* AWS::IoT::Authorizer Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::IoT::Authorizer TokenSigningPublicKeys.PrimitiveItemType (__added__) +* AWS::IoT::Authorizer TokenSigningPublicKeys.Type (__changed__) + * Old: TokenSigningPublicKeys + * New: Map +* AWS::IoT::DomainConfiguration Tags.ItemType (__added__) +* AWS::IoT::DomainConfiguration Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::IoT::ProvisioningTemplate Tags.ItemType (__added__) +* AWS::IoT::ProvisioningTemplate Tags.Type (__changed__) + * Old: Tags + * New: List +* AWS::KMS::Key KeyPolicy.PrimitiveType (__added__) +* AWS::Kendra::DataSource Tags.ItemType (__added__) +* AWS::Kendra::DataSource Tags.Type (__changed__) + * Old: TagList + * New: List +* AWS::Kendra::Faq Tags.ItemType (__added__) +* AWS::Kendra::Faq Tags.Type (__changed__) + * Old: TagList + * New: List +* AWS::Kendra::Index DocumentMetadataConfigurations.ItemType (__added__) +* AWS::Kendra::Index DocumentMetadataConfigurations.Type (__changed__) + * Old: DocumentMetadataConfigurationList + * New: List +* AWS::Kendra::Index Tags.ItemType (__added__) +* AWS::Kendra::Index Tags.Type (__changed__) + * Old: TagList + * New: List +* AWS::Kendra::Index UserTokenConfigurations.ItemType (__added__) +* AWS::Kendra::Index UserTokenConfigurations.Type (__changed__) + * Old: UserTokenConfigurationList + * New: List +* AWS::LicenseManager::Grant AllowedOperations.DuplicatesAllowed (__added__) +* AWS::LicenseManager::Grant AllowedOperations.PrimitiveItemType (__added__) +* AWS::LicenseManager::Grant AllowedOperations.Type (__changed__) + * Old: AllowedOperationList + * New: List +* AWS::LicenseManager::Grant Filters.DuplicatesAllowed (__added__) +* AWS::LicenseManager::Grant Filters.ItemType (__added__) +* AWS::LicenseManager::Grant Filters.Type (__changed__) + * Old: FilterList + * New: List +* AWS::LicenseManager::Grant GrantArns.DuplicatesAllowed (__added__) +* AWS::LicenseManager::Grant GrantArns.PrimitiveItemType (__added__) +* AWS::LicenseManager::Grant GrantArns.Type (__changed__) + * Old: ArnList + * New: List +* AWS::LicenseManager::Grant GrantedOperations.DuplicatesAllowed (__added__) +* AWS::LicenseManager::Grant GrantedOperations.PrimitiveItemType (__added__) +* AWS::LicenseManager::Grant GrantedOperations.Type (__changed__) + * Old: AllowedOperationList + * New: List +* AWS::LicenseManager::Grant Principals.DuplicatesAllowed (__added__) +* AWS::LicenseManager::Grant Principals.PrimitiveItemType (__added__) +* AWS::LicenseManager::Grant Principals.Type (__changed__) + * Old: ArnList + * New: List +* AWS::LicenseManager::Grant Tags.DuplicatesAllowed (__added__) +* AWS::LicenseManager::Grant Tags.ItemType (__added__) +* AWS::LicenseManager::Grant Tags.Type (__changed__) + * Old: TagList + * New: List +* AWS::LicenseManager::License Entitlements.DuplicatesAllowed (__added__) +* AWS::LicenseManager::License Entitlements.ItemType (__added__) +* AWS::LicenseManager::License Entitlements.Type (__changed__) + * Old: EntitlementList + * New: List +* AWS::LicenseManager::License Filters.DuplicatesAllowed (__added__) +* AWS::LicenseManager::License Filters.ItemType (__added__) +* AWS::LicenseManager::License Filters.Type (__changed__) + * Old: FilterList + * New: List +* AWS::LicenseManager::License LicenseArns.DuplicatesAllowed (__added__) +* AWS::LicenseManager::License LicenseArns.PrimitiveItemType (__added__) +* AWS::LicenseManager::License LicenseArns.Type (__changed__) + * Old: ArnList + * New: List +* AWS::LicenseManager::License LicenseMetadata.DuplicatesAllowed (__added__) +* AWS::LicenseManager::License LicenseMetadata.ItemType (__added__) +* AWS::LicenseManager::License LicenseMetadata.Type (__changed__) + * Old: MetadataList + * New: List +* AWS::LicenseManager::License Tags.DuplicatesAllowed (__added__) +* AWS::LicenseManager::License Tags.ItemType (__added__) +* AWS::LicenseManager::License Tags.Type (__changed__) + * Old: TagList + * New: List +* AWS::MediaLive::Channel CdiInputSpecification (__added__) +* AWS::SSO::InstanceAccessControlAttributeConfiguration AccessControlAttributes (__added__) +* AWS::SSO::InstanceAccessControlAttributeConfiguration InstanceAccessControlAttributeConfiguration.Required (__changed__) + * Old: true + * New: false +* AWS::SSO::InstanceAccessControlAttributeConfiguration InstanceArn.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::SSO::PermissionSet InlinePolicy.PrimitiveType (__changed__) + * Old: String + * New: Json +* AWS::SageMaker::Device DeviceFleetName (__added__) +* AWS::SageMaker::DeviceFleet DeviceFleetName (__added__) +* AWS::SageMaker::ModelPackageGroup ModelPackageGroupPolicy.PrimitiveType (__added__) +* AWS::StepFunctions::StateMachine DefinitionSubstitutions.PrimitiveItemType (__added__) +* AWS::StepFunctions::StateMachine DefinitionSubstitutions.Type (__changed__) + * Old: DefinitionSubstitutions + * New: Map +* AWS::Transfer::Server Domain (__added__) +* AWS::Transfer::User PosixProfile (__added__) + +## Property Type Changes + +* AWS::Athena::DataCatalog.Tags (__removed__) +* AWS::Athena::WorkGroup.Tags (__removed__) +* AWS::AuditManager::Assessment.AWSAccounts (__removed__) +* AWS::AuditManager::Assessment.AWSServices (__removed__) +* AWS::AuditManager::Assessment.Delegations (__removed__) +* AWS::AuditManager::Assessment.Roles (__removed__) +* AWS::AuditManager::Assessment.Tags (__removed__) +* AWS::EC2::CarrierGateway.Tags (__removed__) +* AWS::EC2::LocalGatewayRouteTableVPCAssociation.Tags (__removed__) +* AWS::ElastiCache::User.PasswordList (__removed__) +* AWS::ElastiCache::User.UserGroupIdList (__removed__) +* AWS::ElastiCache::UserGroup.ReplicationGroupIdList (__removed__) +* AWS::ElastiCache::UserGroup.UserIdList (__removed__) +* AWS::GameLift::GameServerGroup.InstanceDefinitions (__removed__) +* AWS::GameLift::GameServerGroup.Tags (__removed__) +* AWS::GameLift::GameServerGroup.VpcSubnets (__removed__) +* AWS::IoT::Authorizer.Tags (__removed__) +* AWS::IoT::Authorizer.TokenSigningPublicKeys (__removed__) +* AWS::IoT::DomainConfiguration.Tags (__removed__) +* AWS::IoT::ProvisioningTemplate.Tags (__removed__) +* AWS::Kendra::DataSource.TagList (__removed__) +* AWS::Kendra::Faq.TagList (__removed__) +* AWS::Kendra::Index.DocumentMetadataConfigurationList (__removed__) +* AWS::Kendra::Index.TagList (__removed__) +* AWS::Kendra::Index.UserTokenConfigurationList (__removed__) +* AWS::LicenseManager::Grant.AllowedOperationList (__removed__) +* AWS::LicenseManager::Grant.ArnList (__removed__) +* AWS::LicenseManager::Grant.FilterList (__removed__) +* AWS::LicenseManager::Grant.TagList (__removed__) +* AWS::LicenseManager::License.ArnList (__removed__) +* AWS::LicenseManager::License.EntitlementList (__removed__) +* AWS::LicenseManager::License.FilterList (__removed__) +* AWS::LicenseManager::License.MetadataList (__removed__) +* AWS::LicenseManager::License.TagList (__removed__) +* AWS::StepFunctions::StateMachine.DefinitionSubstitutions (__removed__) +* AWS::ACMPCA::CertificateAuthority.AccessDescription (__added__) +* AWS::ACMPCA::CertificateAuthority.AccessMethod (__added__) +* AWS::ACMPCA::CertificateAuthority.CsrExtensions (__added__) +* AWS::ACMPCA::CertificateAuthority.EdiPartyName (__added__) +* AWS::ACMPCA::CertificateAuthority.GeneralName (__added__) +* AWS::ACMPCA::CertificateAuthority.KeyUsage (__added__) +* AWS::ACMPCA::CertificateAuthority.OtherName (__added__) +* AWS::ACMPCA::CertificateAuthority.SubjectInformationAccess (__added__) +* AWS::ApiGatewayV2::Integration.ResponseParameter (__added__) +* AWS::ApiGatewayV2::Integration.ResponseParameterList (__added__) +* AWS::MediaLive::Channel.AncillarySourceSettings (__added__) +* AWS::MediaLive::Channel.AudioSilenceFailoverSettings (__added__) +* AWS::MediaLive::Channel.CdiInputSpecification (__added__) +* AWS::MediaLive::Channel.FailoverCondition (__added__) +* AWS::MediaLive::Channel.FailoverConditionSettings (__added__) +* AWS::MediaLive::Channel.InputLossFailoverSettings (__added__) +* AWS::MediaLive::Channel.Mpeg2FilterSettings (__added__) +* AWS::MediaLive::Channel.Mpeg2Settings (__added__) +* AWS::MediaLive::Channel.RawSettings (__added__) +* AWS::MediaLive::Channel.VideoBlackFailoverSettings (__added__) +* AWS::MediaLive::Channel.WavSettings (__added__) +* AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttribute (__added__) +* AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValue (__added__) +* AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValueSourceList (__added__) +* AWS::Transfer::User.PosixProfile (__added__) +* AWS::AuditManager::Assessment.AWSAccount emailAddress (__deleted__) +* AWS::AuditManager::Assessment.AWSAccount id (__deleted__) +* AWS::AuditManager::Assessment.AWSAccount name (__deleted__) +* AWS::AuditManager::Assessment.AWSAccount EmailAddress (__added__) +* AWS::AuditManager::Assessment.AWSAccount Id (__added__) +* AWS::AuditManager::Assessment.AWSAccount Name (__added__) +* AWS::AuditManager::Assessment.AWSService serviceName (__deleted__) +* AWS::AuditManager::Assessment.AWSService ServiceName (__added__) +* AWS::AuditManager::Assessment.AssessmentReportsDestination destination (__deleted__) +* AWS::AuditManager::Assessment.AssessmentReportsDestination destinationType (__deleted__) +* AWS::AuditManager::Assessment.AssessmentReportsDestination Destination (__added__) +* AWS::AuditManager::Assessment.AssessmentReportsDestination DestinationType (__added__) +* AWS::AuditManager::Assessment.Delegation assessmentId (__deleted__) +* AWS::AuditManager::Assessment.Delegation assessmentName (__deleted__) +* AWS::AuditManager::Assessment.Delegation comment (__deleted__) +* AWS::AuditManager::Assessment.Delegation controlSetId (__deleted__) +* AWS::AuditManager::Assessment.Delegation createdBy (__deleted__) +* AWS::AuditManager::Assessment.Delegation creationTime (__deleted__) +* AWS::AuditManager::Assessment.Delegation id (__deleted__) +* AWS::AuditManager::Assessment.Delegation lastUpdated (__deleted__) +* AWS::AuditManager::Assessment.Delegation roleArn (__deleted__) +* AWS::AuditManager::Assessment.Delegation roleType (__deleted__) +* AWS::AuditManager::Assessment.Delegation status (__deleted__) +* AWS::AuditManager::Assessment.Delegation AssessmentId (__added__) +* AWS::AuditManager::Assessment.Delegation AssessmentName (__added__) +* AWS::AuditManager::Assessment.Delegation Comment (__added__) +* AWS::AuditManager::Assessment.Delegation ControlSetId (__added__) +* AWS::AuditManager::Assessment.Delegation CreatedBy (__added__) +* AWS::AuditManager::Assessment.Delegation CreationTime (__added__) +* AWS::AuditManager::Assessment.Delegation Id (__added__) +* AWS::AuditManager::Assessment.Delegation LastUpdated (__added__) +* AWS::AuditManager::Assessment.Delegation RoleArn (__added__) +* AWS::AuditManager::Assessment.Delegation RoleType (__added__) +* AWS::AuditManager::Assessment.Delegation Status (__added__) +* AWS::AuditManager::Assessment.Role roleArn (__deleted__) +* AWS::AuditManager::Assessment.Role roleType (__deleted__) +* AWS::AuditManager::Assessment.Role RoleArn (__added__) +* AWS::AuditManager::Assessment.Role RoleType (__added__) +* AWS::AuditManager::Assessment.Scope awsAccounts (__deleted__) +* AWS::AuditManager::Assessment.Scope awsServices (__deleted__) +* AWS::AuditManager::Assessment.Scope AwsAccounts (__added__) +* AWS::AuditManager::Assessment.Scope AwsServices (__added__) +* AWS::EC2::LaunchTemplate.Ebs Throughput (__added__) +* AWS::ElasticLoadBalancingV2::ListenerRule.Action AuthenticateCognitoConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.Action AuthenticateOidcConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.Action FixedResponseConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.Action ForwardConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.Action Order.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-order + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-order +* AWS::ElasticLoadBalancingV2::ListenerRule.Action RedirectConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.Action TargetGroupArn.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-targetgrouparn + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-targetgrouparn +* AWS::ElasticLoadBalancingV2::ListenerRule.Action Type.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-type + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-type +* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateCognitoConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) +* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateCognitoConfig SessionTimeout.PrimitiveType (__changed__) + * Old: Long + * New: Integer +* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateOidcConfig UseExistingClientSecret (__added__) +* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateOidcConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) +* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateOidcConfig SessionTimeout.PrimitiveType (__changed__) + * Old: Long + * New: Integer +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition Field.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-field + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-field +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition HostHeaderConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition HttpHeaderConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition HttpRequestMethodConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition PathPatternConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition QueryStringConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition SourceIpConfig.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig +* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition Values.Documentation (__changed__) + * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values + * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-values +* AWS::ImageBuilder::DistributionConfiguration.Distribution ContainerDistributionConfiguration (__added__) +* AWS::IoTWireless::WirelessDevice.AbpV10X DevAddr.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.AbpV10X SessionKeys.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.AbpV11 DevAddr.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.AbpV11 SessionKeys.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.OtaaV10X AppEui.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.OtaaV10X AppKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.OtaaV11 AppKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.OtaaV11 JoinEui.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.OtaaV11 NwkKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV10X AppSKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV10X NwkSKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 AppSKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 FNwkSIntKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 NwkSEncKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 SNwkSIntKey.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessGateway.LoRaWANGateway GatewayEui.Required (__changed__) + * Old: false + * New: true +* AWS::IoTWireless::WirelessGateway.LoRaWANGateway RfRegion.Required (__changed__) + * Old: false + * New: true +* AWS::MediaLive::Channel.ArchiveContainerSettings RawSettings (__added__) +* AWS::MediaLive::Channel.AudioCodecSettings WavSettings (__added__) +* AWS::MediaLive::Channel.AutomaticInputFailoverSettings ErrorClearTimeMsec (__added__) +* AWS::MediaLive::Channel.AutomaticInputFailoverSettings FailoverConditions (__added__) +* AWS::MediaLive::Channel.CaptionSelectorSettings AncillarySourceSettings (__added__) +* AWS::MediaLive::Channel.HlsGroupSettings DiscontinuityTags (__added__) +* AWS::MediaLive::Channel.HlsGroupSettings IncompleteSegmentBehavior (__added__) +* AWS::MediaLive::Channel.RtmpGroupSettings AdMarkers (__added__) +* AWS::MediaLive::Channel.VideoCodecSettings Mpeg2Settings (__added__) + +# Serverless Application Model (SAM) Resource Specification v2016-10-31 + +## New Resource Types + + +## Attribute Changes + + +## Property Changes + +* AWS::Serverless::LayerVersion ContentUri.PrimitiveType (__deleted__) +* AWS::Serverless::LayerVersion ContentUri.PrimitiveTypes (__added__) +* AWS::Serverless::LayerVersion ContentUri.Types (__added__) + +## Property Type Changes + +* AWS::Serverless::LayerVersion.S3Location (__added__) + # CloudFormation Resource Specification v22.0.0 ## New Resource Types diff --git a/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts b/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts index 1cf4c4f9cc32e..73276889da9df 100644 --- a/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts +++ b/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts @@ -272,7 +272,7 @@ async function main() { '', '![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge)', '', - '> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use.' + + '> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use.', '>', '> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib', '', diff --git a/packages/@aws-cdk/cfnspec/cfn.version b/packages/@aws-cdk/cfnspec/cfn.version index 1d975bef24600..84b76f4d1c529 100644 --- a/packages/@aws-cdk/cfnspec/cfn.version +++ b/packages/@aws-cdk/cfnspec/cfn.version @@ -1 +1 @@ -22.0.0 +23.0.0 diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json index ca6f3aa09b55b..861e9f77698ac 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json @@ -17,6 +17,40 @@ } } }, + "AWS::ACMPCA::CertificateAuthority.AccessDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessdescription.html", + "Properties": { + "AccessLocation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessdescription.html#cfn-acmpca-certificateauthority-accessdescription-accesslocation", + "Required": true, + "Type": "GeneralName", + "UpdateType": "Immutable" + }, + "AccessMethod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessdescription.html#cfn-acmpca-certificateauthority-accessdescription-accessmethod", + "Required": true, + "Type": "AccessMethod", + "UpdateType": "Immutable" + } + } + }, + "AWS::ACMPCA::CertificateAuthority.AccessMethod": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessmethod.html", + "Properties": { + "AccessMethodType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessmethod.html#cfn-acmpca-certificateauthority-accessmethod-accessmethodtype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "CustomObjectIdentifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessmethod.html#cfn-acmpca-certificateauthority-accessmethod-customobjectidentifier", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::ACMPCA::CertificateAuthority.CrlConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html", "Properties": { @@ -46,6 +80,169 @@ } } }, + "AWS::ACMPCA::CertificateAuthority.CsrExtensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-csrextensions.html", + "Properties": { + "KeyUsage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-csrextensions.html#cfn-acmpca-certificateauthority-csrextensions-keyusage", + "Required": false, + "Type": "KeyUsage", + "UpdateType": "Immutable" + }, + "SubjectInformationAccess": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-csrextensions.html#cfn-acmpca-certificateauthority-csrextensions-subjectinformationaccess", + "Required": false, + "Type": "SubjectInformationAccess", + "UpdateType": "Immutable" + } + } + }, + "AWS::ACMPCA::CertificateAuthority.EdiPartyName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-edipartyname.html", + "Properties": { + "NameAssigner": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-edipartyname.html#cfn-acmpca-certificateauthority-edipartyname-nameassigner", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "PartyName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-edipartyname.html#cfn-acmpca-certificateauthority-edipartyname-partyname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::ACMPCA::CertificateAuthority.GeneralName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html", + "Properties": { + "DirectoryName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-directoryname", + "Required": false, + "Type": "Subject", + "UpdateType": "Immutable" + }, + "DnsName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-dnsname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "EdiPartyName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-edipartyname", + "Required": false, + "Type": "EdiPartyName", + "UpdateType": "Immutable" + }, + "IpAddress": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-ipaddress", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "OtherName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-othername", + "Required": false, + "Type": "OtherName", + "UpdateType": "Immutable" + }, + "RegisteredId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-registeredid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Rfc822Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-rfc822name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "UniformResourceIdentifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-uniformresourceidentifier", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::ACMPCA::CertificateAuthority.KeyUsage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html", + "Properties": { + "CRLSign": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-crlsign", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "DataEncipherment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-dataencipherment", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "DecipherOnly": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-decipheronly", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "DigitalSignature": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-digitalsignature", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "EncipherOnly": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-encipheronly", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "KeyAgreement": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-keyagreement", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "KeyCertSign": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-keycertsign", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "KeyEncipherment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-keyencipherment", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "NonRepudiation": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-nonrepudiation", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::ACMPCA::CertificateAuthority.OtherName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-othername.html", + "Properties": { + "TypeId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-othername.html#cfn-acmpca-certificateauthority-othername-typeid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-othername.html#cfn-acmpca-certificateauthority-othername-value", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-revocationconfiguration.html", "Properties": { @@ -146,6 +343,18 @@ } } }, + "AWS::ACMPCA::CertificateAuthority.SubjectInformationAccess": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subjectinformationaccess.html", + "Properties": { + "SubjectInformationAccess": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subjectinformationaccess.html#cfn-acmpca-certificateauthority-subjectinformationaccess-subjectinformationaccess", + "ItemType": "AccessDescription", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, "AWS::AccessAnalyzer::Analyzer.ArchiveRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-archiverule.html", "Properties": { @@ -1647,6 +1856,35 @@ } } }, + "AWS::ApiGatewayV2::Integration.ResponseParameter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html", + "Properties": { + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html#cfn-apigatewayv2-integration-responseparameter-destination", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html#cfn-apigatewayv2-integration-responseparameter-source", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::ApiGatewayV2::Integration.ResponseParameterList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameterlist.html", + "Properties": { + "ResponseParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameterlist.html#cfn-apigatewayv2-integration-responseparameterlist-responseparameters", + "ItemType": "ResponseParameter", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::ApiGatewayV2::Integration.TlsConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-tlsconfig.html", "Properties": { @@ -6242,18 +6480,6 @@ } } }, - "AWS::Athena::DataCatalog.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-datacatalog-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-datacatalog-tags.html#cfn-athena-datacatalog-tags-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Athena::WorkGroup.EncryptionConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html", "Properties": { @@ -6317,18 +6543,6 @@ } } }, - "AWS::Athena::WorkGroup.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-tags.html#cfn-athena-workgroup-tags-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Athena::WorkGroup.WorkGroupConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html", "Properties": { @@ -6408,19 +6622,19 @@ "AWS::AuditManager::Assessment.AWSAccount": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html", "Properties": { - "emailAddress": { + "EmailAddress": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html#cfn-auditmanager-assessment-awsaccount-emailaddress", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, - "id": { + "Id": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html#cfn-auditmanager-assessment-awsaccount-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, - "name": { + "Name": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html#cfn-auditmanager-assessment-awsaccount-name", "PrimitiveType": "String", "Required": false, @@ -6428,22 +6642,10 @@ } } }, - "AWS::AuditManager::Assessment.AWSAccounts": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccounts.html", - "Properties": { - "AWSAccounts": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccounts.html#cfn-auditmanager-assessment-awsaccounts-awsaccounts", - "ItemType": "AWSAccount", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::AuditManager::Assessment.AWSService": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservice.html", "Properties": { - "serviceName": { + "ServiceName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservice.html#cfn-auditmanager-assessment-awsservice-servicename", "PrimitiveType": "String", "Required": false, @@ -6451,28 +6653,16 @@ } } }, - "AWS::AuditManager::Assessment.AWSServices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservices.html", - "Properties": { - "AWSServices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservices.html#cfn-auditmanager-assessment-awsservices-awsservices", - "ItemType": "AWSService", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::AuditManager::Assessment.AssessmentReportsDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-assessmentreportsdestination.html", "Properties": { - "destination": { + "Destination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-assessmentreportsdestination.html#cfn-auditmanager-assessment-assessmentreportsdestination-destination", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "destinationType": { + "DestinationType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-assessmentreportsdestination.html#cfn-auditmanager-assessment-assessmentreportsdestination-destinationtype", "PrimitiveType": "String", "Required": false, @@ -6483,67 +6673,67 @@ "AWS::AuditManager::Assessment.Delegation": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html", "Properties": { - "assessmentId": { + "AssessmentId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-assessmentid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "assessmentName": { + "AssessmentName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-assessmentname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "comment": { + "Comment": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-comment", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "controlSetId": { + "ControlSetId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-controlsetid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "createdBy": { + "CreatedBy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-createdby", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "creationTime": { + "CreationTime": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-creationtime", "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "id": { + "Id": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "lastUpdated": { + "LastUpdated": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-lastupdated", "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "roleArn": { + "RoleArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-rolearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "roleType": { + "RoleType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-roletype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "status": { + "Status": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-status", "PrimitiveType": "String", "Required": false, @@ -6551,28 +6741,16 @@ } } }, - "AWS::AuditManager::Assessment.Delegations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegations.html", - "Properties": { - "Delegations": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegations.html#cfn-auditmanager-assessment-delegations-delegations", - "ItemType": "Delegation", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::AuditManager::Assessment.Role": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-role.html", "Properties": { - "roleArn": { + "RoleArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-role.html#cfn-auditmanager-assessment-role-rolearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "roleType": { + "RoleType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-role.html#cfn-auditmanager-assessment-role-roletype", "PrimitiveType": "String", "Required": false, @@ -6580,41 +6758,19 @@ } } }, - "AWS::AuditManager::Assessment.Roles": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-roles.html", - "Properties": { - "Roles": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-roles.html#cfn-auditmanager-assessment-roles-roles", - "ItemType": "Role", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::AuditManager::Assessment.Scope": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-scope.html", "Properties": { - "awsAccounts": { + "AwsAccounts": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-scope.html#cfn-auditmanager-assessment-scope-awsaccounts", + "ItemType": "AWSAccount", "Required": false, - "Type": "AWSAccounts", + "Type": "List", "UpdateType": "Mutable" }, - "awsServices": { + "AwsServices": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-scope.html#cfn-auditmanager-assessment-scope-awsservices", - "Required": false, - "Type": "AWSServices", - "UpdateType": "Mutable" - } - } - }, - "AWS::AuditManager::Assessment.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-tags.html#cfn-auditmanager-assessment-tags-tags", - "ItemType": "Tag", + "ItemType": "AWSService", "Required": false, "Type": "List", "UpdateType": "Mutable" @@ -14327,6 +14483,180 @@ } } }, + "AWS::DataSync::LocationEFS.Ec2Config": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationefs-ec2config.html", + "Properties": { + "SecurityGroupArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationefs-ec2config.html#cfn-datasync-locationefs-ec2config-securitygrouparns", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "SubnetArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationefs-ec2config.html#cfn-datasync-locationefs-ec2config-subnetarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::LocationNFS.MountOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-mountoptions.html", + "Properties": { + "Version": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-mountoptions.html#cfn-datasync-locationnfs-mountoptions-version", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::LocationNFS.OnPremConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-onpremconfig.html", + "Properties": { + "AgentArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-onpremconfig.html#cfn-datasync-locationnfs-onpremconfig-agentarns", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::LocationS3.S3Config": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locations3-s3config.html", + "Properties": { + "BucketAccessRoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locations3-s3config.html#cfn-datasync-locations3-s3config-bucketaccessrolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::LocationSMB.MountOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationsmb-mountoptions.html", + "Properties": { + "Version": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationsmb-mountoptions.html#cfn-datasync-locationsmb-mountoptions-version", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::Task.FilterRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-filterrule.html", + "Properties": { + "FilterType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-filterrule.html#cfn-datasync-task-filterrule-filtertype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-filterrule.html#cfn-datasync-task-filterrule-value", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::DataSync::Task.Options": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html", + "Properties": { + "Atime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-atime", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "BytesPerSecond": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-bytespersecond", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Gid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-gid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "LogLevel": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-loglevel", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Mtime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-mtime", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "OverwriteMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-overwritemode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "PosixPermissions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-posixpermissions", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "PreserveDeletedFiles": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-preservedeletedfiles", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "PreserveDevices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-preservedevices", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TaskQueueing": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-taskqueueing", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TransferMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-transfermode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Uid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-uid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VerifyMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-verifymode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::DataSync::Task.TaskSchedule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-taskschedule.html", + "Properties": { + "ScheduleExpression": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-taskschedule.html#cfn-datasync-task-taskschedule-scheduleexpression", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::DevOpsGuru::NotificationChannel.NotificationChannelConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-devopsguru-notificationchannel-notificationchannelconfig.html", "Properties": { @@ -14616,19 +14946,6 @@ } } }, - "AWS::EC2::CarrierGateway.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html#cfn-ec2-carriergateway-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::EC2::ClientVpnEndpoint.CertificateAuthenticationRequest": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html", "Properties": { @@ -15524,6 +15841,12 @@ "Required": false, "UpdateType": "Mutable" }, + "Throughput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping-ebs.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs-throughput", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, "VolumeSize": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping-ebs.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs-volumesize", "PrimitiveType": "Integer", @@ -16074,19 +16397,6 @@ } } }, - "AWS::EC2::LocalGatewayRouteTableVPCAssociation.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-localgatewayroutetablevpcassociation-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-localgatewayroutetablevpcassociation-tags.html#cfn-ec2-localgatewayroutetablevpcassociation-tags-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::EC2::NetworkAclEntry.Icmp": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html", "Properties": { @@ -20564,43 +20874,6 @@ } } }, - "AWS::ElastiCache::User.PasswordList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-passwordlist.html", - "Properties": { - "PasswordList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-passwordlist.html#cfn-elasticache-user-passwordlist-passwordlist", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::ElastiCache::User.UserGroupIdList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-usergroupidlist.html", - "Properties": { - "UserGroupIdList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-usergroupidlist.html#cfn-elasticache-user-usergroupidlist-usergroupidlist", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::ElastiCache::UserGroup.ReplicationGroupIdList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-replicationgroupidlist.html", - "Properties": { - "ReplicationGroupIdList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-replicationgroupidlist.html#cfn-elasticache-usergroup-replicationgroupidlist-replicationgroupidlist", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::ElastiCache::UserGroup.UserGroupPendingChanges": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-usergrouppendingchanges.html", "Properties": { @@ -20622,19 +20895,6 @@ } } }, - "AWS::ElastiCache::UserGroup.UserIdList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-useridlist.html", - "Properties": { - "UserIdList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-useridlist.html#cfn-elasticache-usergroup-useridlist-useridlist", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::ElasticBeanstalk::Application.ApplicationResourceLifecycleConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationresourcelifecycleconfig.html", "Properties": { @@ -21359,52 +21619,52 @@ } }, "AWS::ElasticLoadBalancingV2::ListenerRule.Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html", "Properties": { "AuthenticateCognitoConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig", "Required": false, "Type": "AuthenticateCognitoConfig", "UpdateType": "Mutable" }, "AuthenticateOidcConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig", "Required": false, "Type": "AuthenticateOidcConfig", "UpdateType": "Mutable" }, "FixedResponseConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig", "Required": false, "Type": "FixedResponseConfig", "UpdateType": "Mutable" }, "ForwardConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig", "Required": false, "Type": "ForwardConfig", "UpdateType": "Mutable" }, "Order": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-order", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-order", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "RedirectConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig", "Required": false, "Type": "RedirectConfig", "UpdateType": "Mutable" }, "TargetGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-targetgrouparn", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-targetgrouparn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-type", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-type", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" @@ -21416,7 +21676,6 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-authenticationrequestextraparams", - "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -21442,7 +21701,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-sessiontimeout", - "PrimitiveType": "Long", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, @@ -21471,7 +21730,6 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-authenticationrequestextraparams", - "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -21521,7 +21779,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-sessiontimeout", - "PrimitiveType": "Long", + "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, @@ -21531,6 +21789,12 @@ "Required": true, "UpdateType": "Mutable" }, + "UseExistingClientSecret": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-useexistingclientsecret", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "UserInfoEndpoint": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-userinfoendpoint", "PrimitiveType": "String", @@ -21711,52 +21975,52 @@ } }, "AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html", "Properties": { "Field": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-field", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-field", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "HostHeaderConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig", "Required": false, "Type": "HostHeaderConfig", "UpdateType": "Mutable" }, "HttpHeaderConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig", "Required": false, "Type": "HttpHeaderConfig", "UpdateType": "Mutable" }, "HttpRequestMethodConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig", "Required": false, "Type": "HttpRequestMethodConfig", "UpdateType": "Mutable" }, "PathPatternConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig", "Required": false, "Type": "PathPatternConfig", "UpdateType": "Mutable" }, "QueryStringConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig", "Required": false, "Type": "QueryStringConfig", "UpdateType": "Mutable" }, "SourceIpConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig", "Required": false, "Type": "SourceIpConfig", "UpdateType": "Mutable" }, "Values": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-values", "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, @@ -23087,18 +23351,6 @@ } } }, - "AWS::GameLift::GameServerGroup.InstanceDefinitions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinitions.html", - "Properties": { - "InstanceDefinitions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinitions.html#cfn-gamelift-gameservergroup-instancedefinitions-instancedefinitions", - "ItemType": "InstanceDefinition", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::GameLift::GameServerGroup.LaunchTemplate": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-launchtemplate.html", "Properties": { @@ -23122,18 +23374,6 @@ } } }, - "AWS::GameLift::GameServerGroup.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-tags.html#cfn-gamelift-gameservergroup-tags-tags", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::GameLift::GameServerGroup.TargetTrackingConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-targettrackingconfiguration.html", "Properties": { @@ -23145,18 +23385,6 @@ } } }, - "AWS::GameLift::GameServerGroup.VpcSubnets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-vpcsubnets.html", - "Properties": { - "VpcSubnets": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-vpcsubnets.html#cfn-gamelift-gameservergroup-vpcsubnets-vpcsubnets", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::GameLift::GameSessionQueue.Destination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gamesessionqueue-destination.html", "Properties": { @@ -26257,6 +26485,12 @@ "Required": false, "UpdateType": "Mutable" }, + "ContainerDistributionConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-distribution.html#cfn-imagebuilder-distributionconfiguration-distribution-containerdistributionconfiguration", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, "LicenseConfigurationArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-distribution.html#cfn-imagebuilder-distributionconfiguration-distribution-licenseconfigurationarns", "PrimitiveItemType": "String", @@ -26472,21 +26706,6 @@ } } }, - "AWS::IoT::Authorizer.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-authorizer-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-authorizer-tags.html#cfn-iot-authorizer-tags-tags", - "ItemType": "Json", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::IoT::Authorizer.TokenSigningPublicKeys": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-authorizer-tokensigningpublickeys.html" - }, "AWS::IoT::DomainConfiguration.AuthorizerConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-authorizerconfig.html", "Properties": { @@ -26527,18 +26746,6 @@ } } }, - "AWS::IoT::DomainConfiguration.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-tags.html#cfn-iot-domainconfiguration-tags-tags", - "ItemType": "Json", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::IoT::ProvisioningTemplate.ProvisioningHook": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-provisioninghook.html", "Properties": { @@ -26556,18 +26763,6 @@ } } }, - "AWS::IoT::ProvisioningTemplate.Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-tags.html", - "Properties": { - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-tags.html#cfn-iot-provisioningtemplate-tags-tags", - "ItemType": "Json", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::IoT::Thing.AttributePayload": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html", "Properties": { @@ -29419,12 +29614,12 @@ "DevAddr": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv10x.html#cfn-iotwireless-wirelessdevice-abpv10x-devaddr", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "SessionKeys": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv10x.html#cfn-iotwireless-wirelessdevice-abpv10x-sessionkeys", - "Required": false, + "Required": true, "Type": "SessionKeysAbpV10X", "UpdateType": "Mutable" } @@ -29436,12 +29631,12 @@ "DevAddr": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv11.html#cfn-iotwireless-wirelessdevice-abpv11-devaddr", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "SessionKeys": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv11.html#cfn-iotwireless-wirelessdevice-abpv11-sessionkeys", - "Required": false, + "Required": true, "Type": "SessionKeysAbpV11", "UpdateType": "Mutable" } @@ -29500,13 +29695,13 @@ "AppEui": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav10x.html#cfn-iotwireless-wirelessdevice-otaav10x-appeui", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "AppKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav10x.html#cfn-iotwireless-wirelessdevice-otaav10x-appkey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } @@ -29517,19 +29712,19 @@ "AppKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav11.html#cfn-iotwireless-wirelessdevice-otaav11-appkey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "JoinEui": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav11.html#cfn-iotwireless-wirelessdevice-otaav11-joineui", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "NwkKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav11.html#cfn-iotwireless-wirelessdevice-otaav11-nwkkey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } @@ -29540,13 +29735,13 @@ "AppSKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv10x.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv10x-appskey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "NwkSKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv10x.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv10x-nwkskey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } @@ -29557,25 +29752,25 @@ "AppSKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-appskey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "FNwkSIntKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-fnwksintkey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "NwkSEncKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-nwksenckey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "SNwkSIntKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-snwksintkey", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } @@ -29586,13 +29781,13 @@ "GatewayEui": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessgateway-lorawangateway.html#cfn-iotwireless-wirelessgateway-lorawangateway-gatewayeui", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "RfRegion": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessgateway-lorawangateway.html#cfn-iotwireless-wirelessgateway-lorawangateway-rfregion", "PrimitiveType": "String", - "Required": false, + "Required": true, "UpdateType": "Mutable" } } @@ -30748,18 +30943,6 @@ } } }, - "AWS::Kendra::DataSource.TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-datasource-taglist.html", - "Properties": { - "TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-datasource-taglist.html#cfn-kendra-datasource-taglist-taglist", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Kendra::Faq.S3Path": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-faq-s3path.html", "Properties": { @@ -30777,18 +30960,6 @@ } } }, - "AWS::Kendra::Faq.TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-faq-taglist.html", - "Properties": { - "TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-faq-taglist.html#cfn-kendra-faq-taglist-taglist", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Kendra::Index.CapacityUnitsConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-capacityunitsconfiguration.html", "Properties": { @@ -30835,18 +31006,6 @@ } } }, - "AWS::Kendra::Index.DocumentMetadataConfigurationList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-documentmetadataconfigurationlist.html", - "Properties": { - "DocumentMetadataConfigurationList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-documentmetadataconfigurationlist.html#cfn-kendra-index-documentmetadataconfigurationlist-documentmetadataconfigurationlist", - "ItemType": "DocumentMetadataConfiguration", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Kendra::Index.JsonTokenTypeConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-jsontokentypeconfiguration.html", "Properties": { @@ -30986,18 +31145,6 @@ } } }, - "AWS::Kendra::Index.TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-taglist.html", - "Properties": { - "TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-taglist.html#cfn-kendra-index-taglist-taglist", - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Kendra::Index.UserTokenConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-usertokenconfiguration.html", "Properties": { @@ -31015,18 +31162,6 @@ } } }, - "AWS::Kendra::Index.UserTokenConfigurationList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-usertokenconfigurationlist.html", - "Properties": { - "UserTokenConfigurationList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-usertokenconfigurationlist.html#cfn-kendra-index-usertokenconfigurationlist-usertokenconfigurationlist", - "ItemType": "UserTokenConfiguration", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Kendra::Index.ValueImportanceItem": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-valueimportanceitem.html", "Properties": { @@ -33754,32 +33889,6 @@ } } }, - "AWS::LicenseManager::Grant.AllowedOperationList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-allowedoperationlist.html", - "Properties": { - "AllowedOperationList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-allowedoperationlist.html#cfn-licensemanager-grant-allowedoperationlist-allowedoperationlist", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::LicenseManager::Grant.ArnList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-arnlist.html", - "Properties": { - "ArnList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-arnlist.html#cfn-licensemanager-grant-arnlist-arnlist", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::Grant.Filter": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-filter.html", "Properties": { @@ -33797,19 +33906,6 @@ } } }, - "AWS::LicenseManager::Grant.FilterList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-filterlist.html", - "Properties": { - "FilterList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-filterlist.html#cfn-licensemanager-grant-filterlist-filterlist", - "DuplicatesAllowed": false, - "ItemType": "Filter", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::Grant.StringList": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-stringlist.html", "Properties": { @@ -33823,32 +33919,6 @@ } } }, - "AWS::LicenseManager::Grant.TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-taglist.html", - "Properties": { - "TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-taglist.html#cfn-licensemanager-grant-taglist-taglist", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::LicenseManager::License.ArnList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-arnlist.html", - "Properties": { - "ArnList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-arnlist.html#cfn-licensemanager-license-arnlist-arnlist", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::License.BorrowConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-borrowconfiguration.html", "Properties": { @@ -33936,19 +34006,6 @@ } } }, - "AWS::LicenseManager::License.EntitlementList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-entitlementlist.html", - "Properties": { - "EntitlementList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-entitlementlist.html#cfn-licensemanager-license-entitlementlist-entitlementlist", - "DuplicatesAllowed": false, - "ItemType": "Entitlement", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::License.Filter": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-filter.html", "Properties": { @@ -33966,19 +34023,6 @@ } } }, - "AWS::LicenseManager::License.FilterList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-filterlist.html", - "Properties": { - "FilterList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-filterlist.html#cfn-licensemanager-license-filterlist-filterlist", - "DuplicatesAllowed": false, - "ItemType": "Filter", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::License.IssuerData": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-issuerdata.html", "Properties": { @@ -34013,19 +34057,6 @@ } } }, - "AWS::LicenseManager::License.MetadataList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-metadatalist.html", - "Properties": { - "MetadataList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-metadatalist.html#cfn-licensemanager-license-metadatalist-metadatalist", - "DuplicatesAllowed": false, - "ItemType": "Metadata", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::License.ProvisionalConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-provisionalconfiguration.html", "Properties": { @@ -34086,19 +34117,6 @@ } } }, - "AWS::LicenseManager::License.TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-taglist.html", - "Properties": { - "TagList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-taglist.html#cfn-licensemanager-license-taglist-taglist", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::LicenseManager::License.ValidityDateFormat": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-validitydateformat.html", "Properties": { @@ -34799,6 +34817,323 @@ } } }, + "AWS::MediaConnect::Flow.Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html", + "Properties": { + "Algorithm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-algorithm", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-constantinitializationvector", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DeviceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-deviceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "KeyType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-keytype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Region": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-region", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ResourceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-resourceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SecretArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-secretarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-url", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::Flow.FailoverConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-failoverconfig.html", + "Properties": { + "RecoveryWindow": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-failoverconfig.html#cfn-mediaconnect-flow-failoverconfig-recoverywindow", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "State": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-failoverconfig.html#cfn-mediaconnect-flow-failoverconfig-state", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::Flow.Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html", + "Properties": { + "Decryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-decryption", + "Required": false, + "Type": "Encryption", + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EntitlementArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-entitlementarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "IngestIp": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-ingestip", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "IngestPort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-ingestport", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-maxbitrate", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxLatency": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-maxlatency", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Protocol": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-protocol", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SourceArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-sourcearn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "StreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-streamid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VpcInterfaceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-vpcinterfacename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "WhitelistCidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-whitelistcidr", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowEntitlement.Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html", + "Properties": { + "Algorithm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-algorithm", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-constantinitializationvector", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DeviceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-deviceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "KeyType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-keytype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Region": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-region", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ResourceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-resourceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SecretArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-secretarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-url", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowOutput.Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html", + "Properties": { + "Algorithm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-algorithm", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "KeyType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-keytype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SecretArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-secretarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowOutput.VpcInterfaceAttachment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-vpcinterfaceattachment.html", + "Properties": { + "VpcInterfaceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-vpcinterfaceattachment.html#cfn-mediaconnect-flowoutput-vpcinterfaceattachment-vpcinterfacename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowSource.Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html", + "Properties": { + "Algorithm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-algorithm", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "ConstantInitializationVector": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-constantinitializationvector", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DeviceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-deviceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "KeyType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-keytype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Region": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-region", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ResourceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-resourceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SecretArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-secretarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Url": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-url", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaConvert::JobTemplate.AccelerationSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconvert-jobtemplate-accelerationsettings.html", "Properties": { @@ -34939,6 +35274,17 @@ } } }, + "AWS::MediaLive::Channel.AncillarySourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ancillarysourcesettings.html", + "Properties": { + "SourceAncillaryChannelNumber": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ancillarysourcesettings.html#cfn-medialive-channel-ancillarysourcesettings-sourceancillarychannelnumber", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.ArchiveContainerSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-archivecontainersettings.html", "Properties": { @@ -34947,6 +35293,12 @@ "Required": false, "Type": "M2tsSettings", "UpdateType": "Mutable" + }, + "RawSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-archivecontainersettings.html#cfn-medialive-channel-archivecontainersettings-rawsettings", + "Required": false, + "Type": "RawSettings", + "UpdateType": "Mutable" } } }, @@ -35048,6 +35400,12 @@ "Required": false, "Type": "PassThroughSettings", "UpdateType": "Mutable" + }, + "WavSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiocodecsettings.html#cfn-medialive-channel-audiocodecsettings-wavsettings", + "Required": false, + "Type": "WavSettings", + "UpdateType": "Mutable" } } }, @@ -35236,6 +35594,23 @@ } } }, + "AWS::MediaLive::Channel.AudioSilenceFailoverSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiosilencefailoversettings.html", + "Properties": { + "AudioSelectorName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiosilencefailoversettings.html#cfn-medialive-channel-audiosilencefailoversettings-audioselectorname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "AudioSilenceThresholdMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiosilencefailoversettings.html#cfn-medialive-channel-audiosilencefailoversettings-audiosilencethresholdmsec", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.AudioTrack": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiotrack.html", "Properties": { @@ -35262,6 +35637,19 @@ "AWS::MediaLive::Channel.AutomaticInputFailoverSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html", "Properties": { + "ErrorClearTimeMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html#cfn-medialive-channel-automaticinputfailoversettings-errorcleartimemsec", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "FailoverConditions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html#cfn-medialive-channel-automaticinputfailoversettings-failoverconditions", + "ItemType": "FailoverCondition", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "InputPreference": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html#cfn-medialive-channel-automaticinputfailoversettings-inputpreference", "PrimitiveType": "String", @@ -35630,6 +36018,12 @@ "AWS::MediaLive::Channel.CaptionSelectorSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html", "Properties": { + "AncillarySourceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-ancillarysourcesettings", + "Required": false, + "Type": "AncillarySourceSettings", + "UpdateType": "Mutable" + }, "AribSourceSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-aribsourcesettings", "Required": false, @@ -35668,6 +36062,17 @@ } } }, + "AWS::MediaLive::Channel.CdiInputSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-cdiinputspecification.html", + "Properties": { + "Resolution": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-cdiinputspecification.html#cfn-medialive-channel-cdiinputspecification-resolution", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.ColorSpacePassthroughSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-colorspacepassthroughsettings.html", "Properties": {} @@ -36113,6 +36518,40 @@ } } }, + "AWS::MediaLive::Channel.FailoverCondition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failovercondition.html", + "Properties": { + "FailoverConditionSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failovercondition.html#cfn-medialive-channel-failovercondition-failoverconditionsettings", + "Required": false, + "Type": "FailoverConditionSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.FailoverConditionSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html", + "Properties": { + "AudioSilenceSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html#cfn-medialive-channel-failoverconditionsettings-audiosilencesettings", + "Required": false, + "Type": "AudioSilenceFailoverSettings", + "UpdateType": "Mutable" + }, + "InputLossSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html#cfn-medialive-channel-failoverconditionsettings-inputlosssettings", + "Required": false, + "Type": "InputLossFailoverSettings", + "UpdateType": "Mutable" + }, + "VideoBlackSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html#cfn-medialive-channel-failoverconditionsettings-videoblacksettings", + "Required": false, + "Type": "VideoBlackFailoverSettings", + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.FeatureActivations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html", "Properties": { @@ -36953,6 +37392,12 @@ "Required": false, "UpdateType": "Mutable" }, + "DiscontinuityTags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-discontinuitytags", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "EncryptionType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-encryptiontype", "PrimitiveType": "String", @@ -36977,6 +37422,12 @@ "Required": false, "UpdateType": "Mutable" }, + "IncompleteSegmentBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-incompletesegmentbehavior", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "IndexNSegments": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-indexnsegments", "PrimitiveType": "Integer", @@ -37378,6 +37829,17 @@ } } }, + "AWS::MediaLive::Channel.InputLossFailoverSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossfailoversettings.html", + "Properties": { + "InputLossThresholdMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossfailoversettings.html#cfn-medialive-channel-inputlossfailoversettings-inputlossthresholdmsec", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.InputSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html", "Properties": { @@ -37922,6 +38384,118 @@ } } }, + "AWS::MediaLive::Channel.Mpeg2FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2filtersettings.html", + "Properties": { + "TemporalFilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2filtersettings.html#cfn-medialive-channel-mpeg2filtersettings-temporalfiltersettings", + "Required": false, + "Type": "TemporalFilterSettings", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaLive::Channel.Mpeg2Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html", + "Properties": { + "AdaptiveQuantization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-adaptivequantization", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "AfdSignaling": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-afdsignaling", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ColorMetadata": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-colormetadata", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ColorSpace": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-colorspace", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DisplayAspectRatio": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-displayaspectratio", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FilterSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-filtersettings", + "Required": false, + "Type": "Mpeg2FilterSettings", + "UpdateType": "Mutable" + }, + "FixedAfd": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-fixedafd", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FramerateDenominator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-frameratedenominator", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "FramerateNumerator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-frameratenumerator", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "GopClosedCadence": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopclosedcadence", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "GopNumBFrames": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopnumbframes", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "GopSize": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopsize", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + }, + "GopSizeUnits": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopsizeunits", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ScanType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-scantype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SubgopLength": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-subgoplength", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TimecodeInsertion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-timecodeinsertion", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.MsSmoothGroupSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html", "Properties": { @@ -38366,6 +38940,10 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-passthroughsettings.html", "Properties": {} }, + "AWS::MediaLive::Channel.RawSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rawsettings.html", + "Properties": {} + }, "AWS::MediaLive::Channel.Rec601Settings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec601settings.html", "Properties": {} @@ -38405,6 +38983,13 @@ "AWS::MediaLive::Channel.RtmpGroupSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html", "Properties": { + "AdMarkers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-admarkers", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "AuthenticationScheme": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-authenticationscheme", "PrimitiveType": "String", @@ -38715,6 +39300,23 @@ } } }, + "AWS::MediaLive::Channel.VideoBlackFailoverSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoblackfailoversettings.html", + "Properties": { + "BlackDetectThreshold": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoblackfailoversettings.html#cfn-medialive-channel-videoblackfailoversettings-blackdetectthreshold", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + }, + "VideoBlackThresholdMsec": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoblackfailoversettings.html#cfn-medialive-channel-videoblackfailoversettings-videoblackthresholdmsec", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.VideoCodecSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html", "Properties": { @@ -38735,6 +39337,12 @@ "Required": false, "Type": "H265Settings", "UpdateType": "Mutable" + }, + "Mpeg2Settings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-mpeg2settings", + "Required": false, + "Type": "Mpeg2Settings", + "UpdateType": "Mutable" } } }, @@ -38847,6 +39455,29 @@ } } }, + "AWS::MediaLive::Channel.WavSettings": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html", + "Properties": { + "BitDepth": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html#cfn-medialive-channel-wavsettings-bitdepth", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + }, + "CodingMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html#cfn-medialive-channel-wavsettings-codingmode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SampleRate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html#cfn-medialive-channel-wavsettings-samplerate", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaLive::Channel.WebvttDestinationSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-webvttdestinationsettings.html", "Properties": {} @@ -45482,6 +46113,46 @@ } } }, + "AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttribute": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute-key", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute-value", + "Required": true, + "Type": "AccessControlAttributeValue", + "UpdateType": "Mutable" + } + } + }, + "AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValue": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevalue.html", + "Properties": { + "Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevalue.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevalue-source", + "Required": true, + "Type": "AccessControlAttributeValueSourceList", + "UpdateType": "Mutable" + } + } + }, + "AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValueSourceList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevaluesourcelist.html", + "Properties": { + "AccessControlAttributeValueSourceList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevaluesourcelist.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevaluesourcelist-accesscontrolattributevaluesourcelist", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::SageMaker::CodeRepository.GitConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-coderepository-gitconfig.html", "Properties": { @@ -47827,9 +48498,6 @@ } } }, - "AWS::StepFunctions::StateMachine.DefinitionSubstitutions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-definitionsubstitutions.html" - }, "AWS::StepFunctions::StateMachine.LogDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-logdestination.html", "Properties": { @@ -48098,6 +48766,30 @@ } } }, + "AWS::Transfer::User.PosixProfile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html", + "Properties": { + "Gid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html#cfn-transfer-user-posixprofile-gid", + "PrimitiveType": "Double", + "Required": true, + "UpdateType": "Mutable" + }, + "SecondaryGids": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html#cfn-transfer-user-posixprofile-secondarygids", + "PrimitiveItemType": "Double", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Uid": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html#cfn-transfer-user-posixprofile-uid", + "PrimitiveType": "Double", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Transfer::User.SshPublicKey": { "PrimitiveType": "String" }, @@ -50227,7 +50919,7 @@ } } }, - "ResourceSpecificationVersion": "22.0.0", + "ResourceSpecificationVersion": "23.0.0", "ResourceTypes": { "AWS::ACMPCA::Certificate": { "Attributes": { @@ -50283,6 +50975,12 @@ }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html", "Properties": { + "CsrExtensions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-csrextensions", + "Required": false, + "Type": "CsrExtensions", + "UpdateType": "Immutable" + }, "KeyAlgorithm": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-keyalgorithm", "PrimitiveType": "String", @@ -51043,6 +51741,11 @@ } }, "AWS::ApiGateway::ClientCertificate": { + "Attributes": { + "ClientCertificateId": { + "PrimitiveType": "String" + } + }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html", "Properties": { "Description": { @@ -52092,6 +52795,12 @@ "Required": false, "UpdateType": "Mutable" }, + "ResponseParameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-responseparameters", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, "TemplateSelectionExpression": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-templateselectionexpression", "PrimitiveType": "String", @@ -54164,8 +54873,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "Type": { @@ -54250,8 +54960,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "WorkGroupConfiguration": { @@ -54270,76 +54981,79 @@ }, "AWS::AuditManager::Assessment": { "Attributes": { - "arn": { + "Arn": { "PrimitiveType": "String" }, - "assessmentId": { + "AssessmentId": { "PrimitiveType": "String" }, - "creationTime": { + "CreationTime": { "PrimitiveType": "Double" }, - "delegations": { - "Type": "Delegations" + "Delegations": { + "ItemType": "Delegation", + "Type": "List" }, - "frameworkId": { + "FrameworkId": { "PrimitiveType": "String" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html", "Properties": { - "assessmentReportsDestination": { + "AssessmentReportsDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-assessmentreportsdestination", "Required": false, "Type": "AssessmentReportsDestination", "UpdateType": "Mutable" }, - "awsAccount": { + "AwsAccount": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-awsaccount", "Required": false, "Type": "AWSAccount", "UpdateType": "Immutable" }, - "description": { + "Description": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-description", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "frameworkId": { + "FrameworkId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-frameworkid", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, - "name": { + "Name": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-name", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "roles": { + "Roles": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-roles", + "ItemType": "Role", "Required": false, - "Type": "Roles", + "Type": "List", "UpdateType": "Mutable" }, - "scope": { + "Scope": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-scope", "Required": false, "Type": "Scope", "UpdateType": "Mutable" }, - "status": { + "Status": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-status", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "tags": { + "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" } } @@ -58203,6 +58917,45 @@ } } }, + "AWS::Config::StoredQuery": { + "Attributes": { + "QueryArn": { + "PrimitiveType": "String" + }, + "QueryId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html", + "Properties": { + "QueryDescription": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-querydescription", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "QueryExpression": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-queryexpression", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "QueryName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-queryname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::DAX::Cluster": { "Attributes": { "Arn": { @@ -59090,6 +59843,458 @@ } } }, + "AWS::DataSync::Agent": { + "Attributes": { + "AgentArn": { + "PrimitiveType": "String" + }, + "EndpointType": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html", + "Properties": { + "ActivationKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-activationkey", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "AgentName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-agentname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SecurityGroupArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-securitygrouparns", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "SubnetArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-subnetarns", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "VpcEndpointId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-vpcendpointid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::LocationEFS": { + "Attributes": { + "LocationArn": { + "PrimitiveType": "String" + }, + "LocationUri": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html", + "Properties": { + "Ec2Config": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-ec2config", + "Required": true, + "Type": "Ec2Config", + "UpdateType": "Immutable" + }, + "EfsFilesystemArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-efsfilesystemarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Subdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-subdirectory", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::DataSync::LocationFSxWindows": { + "Attributes": { + "LocationArn": { + "PrimitiveType": "String" + }, + "LocationUri": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html", + "Properties": { + "Domain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-domain", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "FsxFilesystemArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-fsxfilesystemarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Password": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-password", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "SecurityGroupArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-securitygrouparns", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "Subdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-subdirectory", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "User": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-user", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::LocationNFS": { + "Attributes": { + "LocationArn": { + "PrimitiveType": "String" + }, + "LocationUri": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html", + "Properties": { + "MountOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-mountoptions", + "Required": false, + "Type": "MountOptions", + "UpdateType": "Immutable" + }, + "OnPremConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-onpremconfig", + "Required": true, + "Type": "OnPremConfig", + "UpdateType": "Immutable" + }, + "ServerHostname": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-serverhostname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Subdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-subdirectory", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::DataSync::LocationObjectStorage": { + "Attributes": { + "LocationArn": { + "PrimitiveType": "String" + }, + "LocationUri": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html", + "Properties": { + "AccessKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-accesskey", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "AgentArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-agentarns", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "BucketName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-bucketname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "SecretKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-secretkey", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "ServerHostname": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-serverhostname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "ServerPort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-serverport", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "ServerProtocol": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-serverprotocol", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Subdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-subdirectory", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::DataSync::LocationS3": { + "Attributes": { + "LocationArn": { + "PrimitiveType": "String" + }, + "LocationUri": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html", + "Properties": { + "S3BucketArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-s3bucketarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "S3Config": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-s3config", + "Required": true, + "Type": "S3Config", + "UpdateType": "Immutable" + }, + "S3StorageClass": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-s3storageclass", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Subdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-subdirectory", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::DataSync::LocationSMB": { + "Attributes": { + "LocationArn": { + "PrimitiveType": "String" + }, + "LocationUri": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html", + "Properties": { + "AgentArns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-agentarns", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "Domain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-domain", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "MountOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-mountoptions", + "Required": false, + "Type": "MountOptions", + "UpdateType": "Immutable" + }, + "Password": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-password", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "ServerHostname": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-serverhostname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Subdirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-subdirectory", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "User": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-user", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::DataSync::Task": { + "Attributes": { + "DestinationNetworkInterfaceArns": { + "PrimitiveItemType": "String", + "Type": "List" + }, + "ErrorCode": { + "PrimitiveType": "String" + }, + "ErrorDetail": { + "PrimitiveType": "String" + }, + "SourceNetworkInterfaceArns": { + "PrimitiveItemType": "String", + "Type": "List" + }, + "Status": { + "PrimitiveType": "String" + }, + "TaskArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html", + "Properties": { + "CloudWatchLogGroupArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-cloudwatchloggrouparn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "DestinationLocationArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-destinationlocationarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Excludes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-excludes", + "ItemType": "FilterRule", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Options": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-options", + "Required": false, + "Type": "Options", + "UpdateType": "Mutable" + }, + "Schedule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-schedule", + "Required": false, + "Type": "TaskSchedule", + "UpdateType": "Mutable" + }, + "SourceLocationArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-sourcelocationarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Detective::Graph": { "Attributes": { "Arn": { @@ -59732,8 +60937,10 @@ "Properties": { "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-carriergateway.html#cfn-ec2-carriergateway-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "VpcId": { @@ -60639,8 +61846,10 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "VpcId": { @@ -60786,6 +61995,9 @@ }, "Status": { "PrimitiveType": "String" + }, + "StatusMessage": { + "PrimitiveType": "String" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html", @@ -60803,12 +62015,6 @@ "Required": true, "UpdateType": "Immutable" }, - "StatusMessage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-statusmessage", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-tags", "ItemType": "Tag", @@ -62401,6 +63607,7 @@ }, "RepositoryPolicyText": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-publicrepository.html#cfn-ecr-publicrepository-repositorypolicytext", + "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" } @@ -62440,6 +63647,7 @@ }, "RepositoryPolicyText": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-repositorypolicytext", + "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" }, @@ -64053,14 +65261,8 @@ "Arn": { "PrimitiveType": "String" }, - "Authentication": { - "Type": "Authentication" - }, "Status": { "PrimitiveType": "String" - }, - "UserGroupIds": { - "Type": "UserGroupIdList" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html", @@ -64071,6 +65273,12 @@ "Required": false, "UpdateType": "Mutable" }, + "Authentication": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-authentication", + "Required": false, + "Type": "Authentication", + "UpdateType": "Mutable" + }, "Engine": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-engine", "PrimitiveType": "String", @@ -64085,8 +65293,18 @@ }, "Passwords": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-passwords", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "UserGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-usergroupids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "PasswordList", + "Type": "List", "UpdateType": "Mutable" }, "UserId": { @@ -64108,12 +65326,6 @@ "Arn": { "PrimitiveType": "String" }, - "PendingChanges": { - "Type": "UserGroupPendingChanges" - }, - "ReplicationGroupIds": { - "Type": "ReplicationGroupIdList" - }, "Status": { "PrimitiveType": "String" } @@ -64126,6 +65338,20 @@ "Required": true, "UpdateType": "Immutable" }, + "PendingChanges": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-pendingchanges", + "Required": false, + "Type": "UserGroupPendingChanges", + "UpdateType": "Mutable" + }, + "ReplicationGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-replicationgroupids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "UserGroupId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-usergroupid", "PrimitiveType": "String", @@ -64134,8 +65360,10 @@ }, "UserIds": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-userids", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "UserIdList", + "Type": "List", "UpdateType": "Mutable" } } @@ -64528,6 +65756,14 @@ } }, "AWS::ElasticLoadBalancingV2::ListenerRule": { + "Attributes": { + "IsDefault": { + "PrimitiveType": "Boolean" + }, + "RuleArn": { + "PrimitiveType": "String" + } + }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html", "Properties": { "Actions": { @@ -65610,8 +66846,9 @@ }, "InstanceDefinitions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-instancedefinitions", + "ItemType": "InstanceDefinition", "Required": true, - "Type": "InstanceDefinitions", + "Type": "List", "UpdateType": "Mutable" }, "LaunchTemplate": { @@ -65640,14 +66877,16 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "VpcSubnets": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-vpcsubnets", + "PrimitiveItemType": "String", "Required": false, - "Type": "VpcSubnets", + "Type": "List", "UpdateType": "Mutable" } } @@ -68545,8 +69784,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-authorizer.html#cfn-iot-authorizer-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "TokenKeyName": { @@ -68557,8 +69797,9 @@ }, "TokenSigningPublicKeys": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-authorizer.html#cfn-iot-authorizer-tokensigningpublickeys", + "PrimitiveItemType": "String", "Required": false, - "Type": "TokenSigningPublicKeys", + "Type": "Map", "UpdateType": "Mutable" } } @@ -68660,8 +69901,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-domainconfiguration.html#cfn-iot-domainconfiguration-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "ValidationCertificateArn": { @@ -68745,8 +69987,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-provisioningtemplate.html#cfn-iot-provisioningtemplate-tags", + "ItemType": "Tag", "Required": false, - "Type": "Tags", + "Type": "List", "UpdateType": "Mutable" }, "TemplateBody": { @@ -69684,6 +70927,7 @@ }, "KeyPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keypolicy", + "PrimitiveType": "Json", "Required": true, "UpdateType": "Mutable" }, @@ -69764,8 +71008,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-datasource.html#cfn-kendra-datasource-tags", + "ItemType": "Tag", "Required": false, - "Type": "TagList", + "Type": "List", "UpdateType": "Mutable" }, "Type": { @@ -69825,8 +71070,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-faq.html#cfn-kendra-faq-tags", + "ItemType": "Tag", "Required": false, - "Type": "TagList", + "Type": "List", "UpdateType": "Mutable" } } @@ -69856,8 +71102,9 @@ }, "DocumentMetadataConfigurations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html#cfn-kendra-index-documentmetadataconfigurations", + "ItemType": "DocumentMetadataConfiguration", "Required": false, - "Type": "DocumentMetadataConfigurationList", + "Type": "List", "UpdateType": "Mutable" }, "Edition": { @@ -69886,8 +71133,9 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html#cfn-kendra-index-tags", + "ItemType": "Tag", "Required": false, - "Type": "TagList", + "Type": "List", "UpdateType": "Mutable" }, "UserContextPolicy": { @@ -69898,8 +71146,9 @@ }, "UserTokenConfigurations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html#cfn-kendra-index-usertokenconfigurations", + "ItemType": "UserTokenConfiguration", "Required": false, - "Type": "UserTokenConfigurationList", + "Type": "List", "UpdateType": "Mutable" } } @@ -70805,8 +72054,10 @@ "Properties": { "AllowedOperations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-allowedoperations", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "AllowedOperationList", + "Type": "List", "UpdateType": "Mutable" }, "ClientToken": { @@ -70817,14 +72068,18 @@ }, "Filters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-filters", + "DuplicatesAllowed": false, + "ItemType": "Filter", "Required": false, - "Type": "FilterList", + "Type": "List", "UpdateType": "Mutable" }, "GrantArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-grantarns", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "ArnList", + "Type": "List", "UpdateType": "Mutable" }, "GrantName": { @@ -70841,8 +72096,10 @@ }, "GrantedOperations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-grantedoperations", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "AllowedOperationList", + "Type": "List", "UpdateType": "Mutable" }, "GranteePrincipalArn": { @@ -70883,8 +72140,10 @@ }, "Principals": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-principals", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "ArnList", + "Type": "List", "UpdateType": "Mutable" }, "SourceVersion": { @@ -70907,8 +72166,10 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, - "Type": "TagList", + "Type": "List", "UpdateType": "Mutable" }, "Version": { @@ -70947,14 +72208,18 @@ }, "Entitlements": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-entitlements", + "DuplicatesAllowed": false, + "ItemType": "Entitlement", "Required": true, - "Type": "EntitlementList", + "Type": "List", "UpdateType": "Mutable" }, "Filters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-filters", + "DuplicatesAllowed": false, + "ItemType": "Filter", "Required": false, - "Type": "FilterList", + "Type": "List", "UpdateType": "Mutable" }, "HomeRegion": { @@ -70971,14 +72236,18 @@ }, "LicenseArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-licensearns", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", "Required": false, - "Type": "ArnList", + "Type": "List", "UpdateType": "Mutable" }, "LicenseMetadata": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-licensemetadata", + "DuplicatesAllowed": false, + "ItemType": "Metadata", "Required": false, - "Type": "MetadataList", + "Type": "List", "UpdateType": "Mutable" }, "LicenseName": { @@ -71025,8 +72294,10 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", "Required": false, - "Type": "TagList", + "Type": "List", "UpdateType": "Mutable" }, "Validity": { @@ -71583,6 +72854,312 @@ } } }, + "AWS::MediaConnect::Flow": { + "Attributes": { + "FlowArn": { + "PrimitiveType": "String" + }, + "FlowAvailabilityZone": { + "PrimitiveType": "String" + }, + "IngestIp": { + "PrimitiveType": "String" + }, + "SourceArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html", + "Properties": { + "AvailabilityZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-availabilityzone", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Source": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-source", + "Required": true, + "Type": "Source", + "UpdateType": "Mutable" + }, + "SourceFailoverConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-sourcefailoverconfig", + "Required": false, + "Type": "FailoverConfig", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowEntitlement": { + "Attributes": { + "EntitlementArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html", + "Properties": { + "DataTransferSubscriberFeePercent": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-datatransfersubscriberfeepercent", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-description", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-encryption", + "Required": false, + "Type": "Encryption", + "UpdateType": "Mutable" + }, + "EntitlementStatus": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-entitlementstatus", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FlowArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-flowarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Subscribers": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-subscribers", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowOutput": { + "Attributes": { + "OutputArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html", + "Properties": { + "CidrAllowList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-cidrallowlist", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Destination": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-destination", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Encryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-encryption", + "Required": false, + "Type": "Encryption", + "UpdateType": "Mutable" + }, + "FlowArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-flowarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "MaxLatency": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-maxlatency", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Port": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-port", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Protocol": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-protocol", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "RemoteId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-remoteid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SmoothingLatency": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-smoothinglatency", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "StreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-streamid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VpcInterfaceAttachment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-vpcinterfaceattachment", + "Required": false, + "Type": "VpcInterfaceAttachment", + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowSource": { + "Attributes": { + "IngestIp": { + "PrimitiveType": "String" + }, + "SourceArn": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html", + "Properties": { + "Decryption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-decryption", + "Required": false, + "Type": "Encryption", + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-description", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "EntitlementArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-entitlementarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "FlowArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-flowarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "IngestPort": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-ingestport", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxBitrate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-maxbitrate", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "MaxLatency": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-maxlatency", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Protocol": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-protocol", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "StreamId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-streamid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VpcInterfaceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-vpcinterfacename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "WhitelistCidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-whitelistcidr", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::MediaConnect::FlowVpcInterface": { + "Attributes": { + "FlowArn": { + "PrimitiveType": "String" + }, + "Name": { + "PrimitiveType": "String" + }, + "NetworkInterfaceIds": { + "PrimitiveItemType": "String", + "Type": "List" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html", + "Properties": { + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html#cfn-mediaconnect-flowvpcinterface-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SecurityGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html#cfn-mediaconnect-flowvpcinterface-securitygroupids", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html#cfn-mediaconnect-flowvpcinterface-subnetid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::MediaConvert::JobTemplate": { "Attributes": { "Arn": { @@ -71755,6 +73332,12 @@ }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html", "Properties": { + "CdiInputSpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html#cfn-medialive-channel-cdiinputspecification", + "Required": false, + "Type": "CdiInputSpecification", + "UpdateType": "Mutable" + }, "ChannelClass": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html#cfn-medialive-channel-channelclass", "PrimitiveType": "String", @@ -76343,6 +77926,17 @@ } } }, + "AWS::Route53::DNSSEC": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-dnssec.html", + "Properties": { + "HostedZoneId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-dnssec.html#cfn-route53-dnssec-hostedzoneid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::Route53::HealthCheck": { "Attributes": { "HealthCheckId": { @@ -76416,6 +78010,35 @@ } } }, + "AWS::Route53::KeySigningKey": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html", + "Properties": { + "HostedZoneId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-hostedzoneid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "KeyManagementServiceArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-keymanagementservicearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Status": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-status", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Route53::RecordSet": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html", "Properties": { @@ -76544,6 +78167,28 @@ } } }, + "AWS::Route53Resolver::ResolverDNSSECConfig": { + "Attributes": { + "Id": { + "PrimitiveType": "String" + }, + "OwnerId": { + "PrimitiveType": "String" + }, + "ValidationStatus": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverdnssecconfig.html", + "Properties": { + "ResourceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverdnssecconfig.html#cfn-route53resolver-resolverdnssecconfig-resourceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::Route53Resolver::ResolverEndpoint": { "Attributes": { "Arn": { @@ -77949,17 +79594,24 @@ "AWS::SSO::InstanceAccessControlAttributeConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html", "Properties": { + "AccessControlAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributes", + "ItemType": "AccessControlAttribute", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "InstanceAccessControlAttributeConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html#cfn-sso-instanceaccesscontrolattributeconfiguration-instanceaccesscontrolattributeconfiguration", "PrimitiveType": "Json", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "InstanceArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html#cfn-sso-instanceaccesscontrolattributeconfiguration-instancearn", "PrimitiveType": "String", "Required": true, - "UpdateType": "Mutable" + "UpdateType": "Immutable" } } }, @@ -77979,7 +79631,7 @@ }, "InlinePolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-permissionset.html#cfn-sso-permissionset-inlinepolicy", - "PrimitiveType": "String", + "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" }, @@ -78120,11 +79772,6 @@ } }, "AWS::SageMaker::Device": { - "Attributes": { - "DeviceFleetName": { - "PrimitiveType": "String" - } - }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html", "Properties": { "Device": { @@ -78134,6 +79781,12 @@ "Type": "Device", "UpdateType": "Mutable" }, + "DeviceFleetName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html#cfn-sagemaker-device-devicefleetname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html#cfn-sagemaker-device-tags", "ItemType": "Json", @@ -78144,11 +79797,6 @@ } }, "AWS::SageMaker::DeviceFleet": { - "Attributes": { - "DeviceFleetName": { - "PrimitiveType": "String" - } - }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html", "Properties": { "Description": { @@ -78157,6 +79805,12 @@ "Required": false, "UpdateType": "Mutable" }, + "DeviceFleetName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html#cfn-sagemaker-devicefleet-devicefleetname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, "OutputConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html#cfn-sagemaker-devicefleet-outputconfig", "Required": true, @@ -78498,6 +80152,7 @@ }, "ModelPackageGroupPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelpackagegroup.html#cfn-sagemaker-modelpackagegroup-modelpackagegrouppolicy", + "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" }, @@ -79903,8 +81558,9 @@ }, "DefinitionSubstitutions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionsubstitutions", + "PrimitiveItemType": "String", "Required": false, - "Type": "DefinitionSubstitutions", + "Type": "Map", "UpdateType": "Mutable" }, "LoggingConfiguration": { @@ -80115,6 +81771,12 @@ "Required": false, "UpdateType": "Mutable" }, + "Domain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-server.html#cfn-transfer-server-domain", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, "EndpointDetails": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-server.html#cfn-transfer-server-endpointdetails", "Required": false, @@ -80206,6 +81868,12 @@ "Required": false, "UpdateType": "Mutable" }, + "PosixProfile": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-posixprofile", + "Required": false, + "Type": "PosixProfile", + "UpdateType": "Mutable" + }, "Role": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-role", "PrimitiveType": "String", diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json b/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json index 9c032b1062520..41065e7109a19 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json @@ -955,6 +955,29 @@ } } }, + "AWS::Serverless::LayerVersion.S3Location": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object", + "Properties": { + "Bucket": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Key": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Version": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::Serverless::SimpleTable.PrimaryKey": { "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object", "Properties": { @@ -1568,8 +1591,13 @@ }, "ContentUri": { "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlesslayerversion", - "PrimitiveType": "String", + "PrimitiveTypes": [ + "String" + ], "Required": false, + "Types": [ + "S3Location" + ], "UpdateType": "Immutable" }, "Description": { diff --git a/packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json b/packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json deleted file mode 100644 index 4282477502f05..0000000000000 --- a/packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "PropertyTypes": { - "AWS::IoT::ProvisioningTemplate.Tags": { - "patch": { - "description": "AWS::IoT::ProvisioningTemplate.Tag.ItemType should have been PrimitiveItemType", - "operations": [ - { - "op": "remove", - "path": "/Properties/Tags/ItemType", - "value": "Json" - }, - { - "op": "add", - "path": "/Properties/Tags/PrimitiveItemType", - "value": "Json" - } - ] - } - } - } -} diff --git a/packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json b/packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json deleted file mode 100644 index 6f9224d738886..0000000000000 --- a/packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "PropertyTypes": { - "AWS::Athena::WorkGroup.Tags": { - "patch": { - "description": "Corrects tag specification for AWS::Athena::WorkGroup.Tags", - "operations": [ - { - "op": "remove", - "path": "/Properties" - }, - { - "op": "add", - "path": "/ItemType", - "value": "Tag" - }, - { - "op": "add", - "path": "/Required", - "value": false - }, - { - "op": "add", - "path": "/Type", - "value": "List" - }, - { - "op": "add", - "path": "/UpdateType", - "value": "Mutable" - } - ] - } - } - } -} - diff --git a/packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json b/packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json deleted file mode 100644 index 45e189299b113..0000000000000 --- a/packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "PropertyTypes": { - "AWS::IoT::Authorizer.Tags": { - "patch": { - "description": "Tags is defined as a List whereas it should he List", - "operations": [ - { - "path": "/Properties/Tags/ItemType", - "op": "replace", - "value": "Tag" - } - ] - } - } - } -} \ No newline at end of file diff --git a/packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json b/packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json deleted file mode 100644 index 5ffa659a47b46..0000000000000 --- a/packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "PropertyTypes": { - "AWS::IoT::DomainConfiguration.Tags": { - "patch": { - "description": "AWS::IoT::DomainConfiguration.Tag.ItemType should have been PrimitiveItemType", - "operations": [ - { - "op": "remove", - "path": "/Properties/Tags/ItemType", - "value": "Json" - }, - { - "op": "add", - "path": "/Properties/Tags/PrimitiveItemType", - "value": "Json" - } - ] - } - } - } -} diff --git a/packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json b/packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json deleted file mode 100644 index 17c14a9db8bf6..0000000000000 --- a/packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ResourceTypes": { - "patch": { - "description": "Remove the AWS::AuditManager::Assessment resource type", - "operations": [ - { - "op": "remove", - "path": "/AWS::AuditManager::Assessment" - } - ] - } - } -} diff --git a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts index ebec6ab166fbb..654e1aa032926 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts @@ -23,12 +23,24 @@ export interface DockerImageSource { * The directory containing the Docker image build instructions. * * This path is relative to the asset manifest location. + * + * @default - Exactly one of `directory` and `executable` is required + */ + readonly directory?: string; + + /** + * A command-line executable that returns the name of a local + * Docker image on stdout after being run. + * + * @default - Exactly one of `directory` and `executable` is required */ - readonly directory: string; + readonly executable?: string[]; /** * The name of the file with build instructions * + * Only allowed when `directory` is set. + * * @default "Dockerfile" */ readonly dockerFile?: string; @@ -36,6 +48,8 @@ export interface DockerImageSource { /** * Target build stage in a Dockerfile with multiple build stages * + * Only allowed when `directory` is set. + * * @default - The last stage in the Dockerfile */ readonly dockerBuildTarget?: string; @@ -43,6 +57,8 @@ export interface DockerImageSource { /** * Additional build arguments * + * Only allowed when `directory` is set. + * * @default - No additional build arguments */ readonly dockerBuildArgs?: { [name: string]: string }; diff --git a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts index efa6cd4384bbe..58c7e0cc93ebc 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts @@ -34,16 +34,27 @@ export enum FileAssetPackaging { * Describe the source of a file asset */ export interface FileSource { + /** + * External command which will produce the file asset to upload. + * + * @default - Exactly one of `executable` and `path` is required. + */ + readonly executable?: string[]; + /** * The filesystem object to upload * * This path is relative to the asset manifest location. + * + * @default - Exactly one of `executable` and `path` is required. */ - readonly path: string; + readonly path?: string; /** * Packaging method * + * Only allowed when `path` is specified. + * * @default FILE */ readonly packaging?: FileAssetPackaging; @@ -62,4 +73,4 @@ export interface FileDestination extends AwsDestination { * The destination object key */ readonly objectKey: string; -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index f14d8ad679b71..e24e4cab83995 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -66,7 +66,7 @@ "jest": "^26.6.3", "mock-fs": "^4.13.0", "pkglint": "0.0.0", - "typescript-json-schema": "^0.46.0" + "typescript-json-schema": "^0.47.0" }, "repository": { "url": "https://github.com/aws/aws-cdk.git", @@ -83,7 +83,7 @@ "semver" ], "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json b/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json index bbd61aae66813..995a895ad824d 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json +++ b/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json @@ -53,22 +53,26 @@ "description": "Describe the source of a file asset", "type": "object", "properties": { + "executable": { + "description": "External command which will produce the file asset to upload. (Default - Exactly one of `executable` and `path` is required.)", + "type": "array", + "items": { + "type": "string" + } + }, "path": { - "description": "The filesystem object to upload\n\nThis path is relative to the asset manifest location.", + "description": "The filesystem object to upload\n\nThis path is relative to the asset manifest location. (Default - Exactly one of `executable` and `path` is required.)", "type": "string" }, "packaging": { - "description": "Packaging method (Default FILE)", + "description": "Packaging method\n\nOnly allowed when `path` is specified. (Default FILE)", "enum": [ "file", "zip" ], "type": "string" } - }, - "required": [ - "path" - ] + } }, "FileDestination": { "description": "Where in S3 a file asset needs to be published", @@ -126,28 +130,32 @@ "type": "object", "properties": { "directory": { - "description": "The directory containing the Docker image build instructions.\n\nThis path is relative to the asset manifest location.", + "description": "The directory containing the Docker image build instructions.\n\nThis path is relative to the asset manifest location. (Default - Exactly one of `directory` and `executable` is required)", "type": "string" }, + "executable": { + "description": "A command-line executable that returns the name of a local\nDocker image on stdout after being run. (Default - Exactly one of `directory` and `executable` is required)", + "type": "array", + "items": { + "type": "string" + } + }, "dockerFile": { - "description": "The name of the file with build instructions (Default Dockerfile)", + "description": "The name of the file with build instructions\n\nOnly allowed when `directory` is set. (Default Dockerfile)", "type": "string" }, "dockerBuildTarget": { - "description": "Target build stage in a Dockerfile with multiple build stages (Default - The last stage in the Dockerfile)", + "description": "Target build stage in a Dockerfile with multiple build stages\n\nOnly allowed when `directory` is set. (Default - The last stage in the Dockerfile)", "type": "string" }, "dockerBuildArgs": { - "description": "Additional build arguments (Default - No additional build arguments)", + "description": "Additional build arguments\n\nOnly allowed when `directory` is set. (Default - No additional build arguments)", "type": "object", "additionalProperties": { "type": "string" } } - }, - "required": [ - "directory" - ] + } }, "DockerImageDestination": { "description": "Where to publish docker images", diff --git a/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json b/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json index bdc5a9f306dec..e6bb766b23585 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json +++ b/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json @@ -1 +1 @@ -{"version":"7.0.0"} \ No newline at end of file +{"version":"8.0.0"} diff --git a/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts b/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts index 62aebfa26e6ee..24ddd465484b7 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts @@ -21,6 +21,18 @@ describe('Docker image asset', () => { }, }, }, + externalAsset: { + source: { + executable: ['sometool'], + }, + destinations: { + dest: { + region: 'us-north-20', + repositoryName: 'REPO', + imageTag: 'TAG', + }, + }, + }, }, }); }).not.toThrow(); @@ -32,12 +44,18 @@ describe('Docker image asset', () => { version: Manifest.version(), dockerImages: { asset: { + source: { + directory: true, + }, + destinations: {}, + }, + externalAsset: { source: {}, destinations: {}, }, }, }); - }).toThrow(/instance\.dockerImages\.asset\.source requires property \"directory\"/); + }).toThrow(/instance\.dockerImages\.asset\.source\.directory is not of a type\(s\) string/); }); }); @@ -60,6 +78,18 @@ describe('File asset', () => { }, }, }, + externalAsset: { + source: { + executable: ['sometool'], + }, + destinations: { + dest: { + region: 'us-north-20', + bucketName: 'Bouquet', + objectKey: 'key', + }, + }, + }, }, }); }).not.toThrow(); @@ -109,6 +139,18 @@ describe('File asset', () => { }, }, }, + externalAsset: { + source: { + executable: ['sometool'], + }, + destinations: { + dest: { + region: 'us-north-20', + bucketName: 'Bouquet', + objectKey: 'key', + }, + }, + }, }, }); }).toThrow(/instance\.files\.asset\.source\.path is not of a type\(s\) string/); @@ -149,4 +191,4 @@ function validate(manifest: any) { fs.unlinkSync(filePath); fs.rmdirSync(dir); } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 7179ae4210672..c317644bef177 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -49,7 +49,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index a697d0d80b041..6241f01c2e4b7 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -83,6 +83,7 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", + "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscalingplans": "0.0.0", "@aws-cdk/aws-backup": "0.0.0", @@ -110,6 +111,7 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", + "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -161,6 +163,7 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", + "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -224,6 +227,7 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", + "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscalingplans": "0.0.0", "@aws-cdk/aws-backup": "0.0.0", @@ -251,6 +255,7 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", + "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -302,6 +307,7 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", + "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -371,7 +377,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/core/README.md b/packages/@aws-cdk/core/README.md index 3b013f3ff990e..8c5ce270d8dc1 100644 --- a/packages/@aws-cdk/core/README.md +++ b/packages/@aws-cdk/core/README.md @@ -843,3 +843,11 @@ IAM operator, we need it in the *key* of a `StringEquals` condition. JSON keys *must be* strings, so to circumvent this limitation, we use `CfnJson` to "delay" the rendition of this template section to deploy-time. This means that the value of `StringEquals` in the template will be `{ "Fn::GetAtt": [ "ConditionJson", "Value" ] }`, and will only "expand" to the operator we synthesized during deployment. + +### Stack Resource Limit + +When deploying to AWS CloudFormation, it needs to keep in check the amount of resources being added inside a Stack. Currently it's possible to check the limits in the [AWS CloudFormation quotas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) page. + +It's possible to synthesize the project with more Resources than the allowed (or even reduce the number of Resources). + +Set the context key `@aws-cdk/core:stackResourceLimit` with the proper value, being 0 for disable the limit of resources. diff --git a/packages/@aws-cdk/core/lib/assets.ts b/packages/@aws-cdk/core/lib/assets.ts index 17d3b9d93e53f..d992546dbfdb3 100644 --- a/packages/@aws-cdk/core/lib/assets.ts +++ b/packages/@aws-cdk/core/lib/assets.ts @@ -106,17 +106,30 @@ export interface FileAssetSource { */ readonly sourceHash: string; + /** + * An external command that will produce the packaged asset. + * + * The command should produce the location of a ZIP file on `stdout`. + * + * @default - Exactly one of `directory` and `executable` is required + */ + readonly executable?: string[]; + /** * The path, relative to the root of the cloud assembly, in which this asset * source resides. This can be a path to a file or a directory, dependning on the * packaging type. + * + * @default - Exactly one of `directory` and `executable` is required */ - readonly fileName: string; + readonly fileName?: string; /** * Which type of packaging to perform. + * + * @default - Required if `fileName` is specified. */ - readonly packaging: FileAssetPackaging; + readonly packaging?: FileAssetPackaging; } export interface DockerImageAssetSource { @@ -130,11 +143,22 @@ export interface DockerImageAssetSource { */ readonly sourceHash: string; + /** + * An external command that will produce the packaged asset. + * + * The command should produce the name of a local Docker image on `stdout`. + * + * @default - Exactly one of `directoryName` and `executable` is required + */ + readonly executable?: string[]; + /** * The directory where the Dockerfile is stored, must be relative * to the cloud assembly root. + * + * @default - Exactly one of `directoryName` and `executable` is required */ - readonly directoryName: string; + readonly directoryName?: string; /** * Build args to pass to the `docker build` command. @@ -143,6 +167,8 @@ export interface DockerImageAssetSource { * values cannot refer to unresolved tokens (such as `lambda.functionArn` or * `queue.queueUrl`). * + * Only allowed when `directoryName` is specified. + * * @default - no build args are passed */ readonly dockerBuildArgs?: { [key: string]: string }; @@ -150,6 +176,8 @@ export interface DockerImageAssetSource { /** * Docker target to build to * + * Only allowed when `directoryName` is specified. + * * @default - no target */ readonly dockerBuildTarget?: string; @@ -157,6 +185,8 @@ export interface DockerImageAssetSource { /** * Path to the Dockerfile (relative to the directory). * + * Only allowed when `directoryName` is specified. + * * @default - no file */ readonly dockerFile?: string; diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts index 6c66166513c42..ff38c78f3597b 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts @@ -1,16 +1,16 @@ -import * as cxschema from '@aws-cdk/cloud-assembly-schema'; -import * as cxapi from '@aws-cdk/cx-api'; import * as fs from 'fs'; import * as path from 'path'; +import * as cxschema from '@aws-cdk/cloud-assembly-schema'; +import * as cxapi from '@aws-cdk/cx-api'; import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetPackaging, FileAssetSource } from '../assets'; import { Fn } from '../cfn-fn'; import { CfnParameter } from '../cfn-parameter'; import { CfnRule } from '../cfn-rule'; import { Stack } from '../stack'; import { Token } from '../token'; +import { assertBound, contentHash } from './_shared'; import { StackSynthesizer } from './stack-synthesizer'; import { ISynthesisSession } from './types'; -import { assertBound, contentHash } from './_shared'; export const BOOTSTRAP_QUALIFIER_CONTEXT = '@aws-cdk/core:bootstrapQualifier'; @@ -289,12 +289,15 @@ export class DefaultStackSynthesizer extends StackSynthesizer { public addFileAsset(asset: FileAssetSource): FileAssetLocation { assertBound(this.stack); assertBound(this.bucketName); + validateFileAssetSource(asset); + const objectKey = this.bucketPrefix + asset.sourceHash + (asset.packaging === FileAssetPackaging.ZIP_DIRECTORY ? '.zip' : ''); // Add to manifest this.files[asset.sourceHash] = { source: { path: asset.fileName, + executable: asset.executable, packaging: asset.packaging, }, destinations: { @@ -325,12 +328,14 @@ export class DefaultStackSynthesizer extends StackSynthesizer { public addDockerImageAsset(asset: DockerImageAssetSource): DockerImageAssetLocation { assertBound(this.stack); assertBound(this.repositoryName); + validateDockerImageAssetSource(asset); const imageTag = asset.sourceHash; // Add to manifest this.dockerImages[asset.sourceHash] = { source: { + executable: asset.executable, directory: asset.directoryName, dockerBuildArgs: asset.dockerBuildArgs, dockerBuildTarget: asset.dockerBuildTarget, @@ -566,3 +571,29 @@ function range(startIncl: number, endExcl: number) { } return ret; } + +function validateFileAssetSource(asset: FileAssetSource) { + if (!!asset.executable === !!asset.fileName) { + throw new Error(`Exactly one of 'fileName' or 'executable' is required, got: ${JSON.stringify(asset)}`); + } + + if (!!asset.packaging !== !!asset.fileName) { + throw new Error(`'packaging' is expected in combination with 'fileName', got: ${JSON.stringify(asset)}`); + } +} + +function validateDockerImageAssetSource(asset: DockerImageAssetSource) { + if (!!asset.executable === !!asset.directoryName) { + throw new Error(`Exactly one of 'directoryName' or 'executable' is required, got: ${JSON.stringify(asset)}`); + } + + check('dockerBuildArgs'); + check('dockerBuildTarget'); + check('dockerFile'); + + function check(key: K) { + if (asset[key] && !asset.directoryName) { + throw new Error(`'${key}' is only allowed in combination with 'directoryName', got: ${JSON.stringify(asset)}`); + } + } +} diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts index 9575089e0adf5..6044edef0a9ba 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts @@ -121,6 +121,10 @@ export class LegacyStackSynthesizer extends StackSynthesizer { // only add every image (identified by source hash) once for each stack that uses it. if (!this.addedImageAssets.has(assetId)) { + if (!asset.directoryName) { + throw new Error(`LegacyStackSynthesizer does not support this type of file asset: ${JSON.stringify(asset)}`); + } + const metadata: cxschema.ContainerImageAssetMetadataEntry = { repositoryName, imageTag, @@ -150,6 +154,10 @@ export class LegacyStackSynthesizer extends StackSynthesizer { if (!params) { params = new FileAssetParameters(this.assetParameters, asset.sourceHash); + if (!asset.fileName || !asset.packaging) { + throw new Error(`LegacyStackSynthesizer does not support this type of file asset: ${JSON.stringify(asset)}`); + } + const metadata: cxschema.FileAssetMetadataEntry = { path: asset.fileName, id: asset.sourceHash, diff --git a/packages/@aws-cdk/core/lib/stack.ts b/packages/@aws-cdk/core/lib/stack.ts index 38fe5f99af808..7a9819679c1d3 100644 --- a/packages/@aws-cdk/core/lib/stack.ts +++ b/packages/@aws-cdk/core/lib/stack.ts @@ -22,8 +22,12 @@ import { makeUniqueId } from './private/uniqueid'; const STACK_SYMBOL = Symbol.for('@aws-cdk/core.Stack'); const MY_STACK_CACHE = Symbol.for('@aws-cdk/core.Stack.myStack'); +export const STACK_RESOURCE_LIMIT_CONTEXT = '@aws-cdk/core:stackResourceLimit'; + const VALID_STACK_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-]*$/; +const MAX_RESOURCES = 500; + export interface StackProps { /** * A description of the stack. @@ -748,6 +752,17 @@ export class Stack extends Construct implements ITaggable { // write the CloudFormation template as a JSON file const outPath = path.join(builder.outdir, this.templateFile); + + if (this.maxResources > 0) { + const resources = template.Resources || {}; + const numberOfResources = Object.keys(resources).length; + + if (numberOfResources > this.maxResources) { + throw new Error(`Number of resources: ${numberOfResources} is greater than allowed maximum of ${this.maxResources}`); + } else if (numberOfResources >= (this.maxResources * 0.8)) { + Annotations.of(this).addInfo(`Number of resources: ${numberOfResources} is approaching allowed maximum of ${this.maxResources}`); + } + } fs.writeFileSync(outPath, JSON.stringify(template, undefined, 2)); for (const ctx of this._missingContext) { @@ -902,6 +917,16 @@ export class Stack extends Construct implements ITaggable { }; } + /** + * Maximum number of resources in the stack + * + * Set to 0 to mean "unlimited". + */ + private get maxResources(): number { + const contextLimit = this.node.tryGetContext(STACK_RESOURCE_LIMIT_CONTEXT); + return contextLimit !== undefined ? parseInt(contextLimit, 10) : MAX_RESOURCES; + } + /** * Check whether this stack has a (transitive) dependency on another stack * diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index b24326e58d238..c7162a5e3f31a 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -214,7 +214,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index ee6fe6de474b0..dfd701961a2e0 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -46,6 +46,68 @@ nodeunitShim({ test.done(); }, + 'when stackResourceLimit is default, should give error'(test: Test) { + // GIVEN + const app = new App({}); + + const stack = new Stack(app, 'MyStack'); + + // WHEN + for (let index = 0; index < 1000; index++) { + new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); + } + + test.throws(() => { + app.synth(); + }, 'Number of resources: 1000 is greater than allowed maximum of 500'); + + test.done(); + }, + + 'when stackResourceLimit is defined, should give the proper error'(test: Test) { + // GIVEN + const app = new App({ + context: { + '@aws-cdk/core:stackResourceLimit': 100, + }, + }); + + const stack = new Stack(app, 'MyStack'); + + // WHEN + for (let index = 0; index < 200; index++) { + new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); + } + + test.throws(() => { + app.synth(); + }, 'Number of resources: 200 is greater than allowed maximum of 100'); + + test.done(); + }, + + 'when stackResourceLimit is 0, should not give error'(test: Test) { + // GIVEN + const app = new App({ + context: { + '@aws-cdk/core:stackResourceLimit': 0, + }, + }); + + const stack = new Stack(app, 'MyStack'); + + // WHEN + for (let index = 0; index < 1000; index++) { + new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); + } + + test.doesNotThrow(() => { + app.synth(); + }); + + test.done(); + }, + 'stack.templateOptions can be used to set template-level options'(test: Test) { const stack = new Stack(); diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index 85ec98a49236d..71e4ed01390f8 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -81,7 +81,7 @@ "@types/aws-lambda": "^8.10.64", "@types/fs-extra": "^8.1.1", "@types/sinon": "^9.0.9", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -113,7 +113,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/cx-api/lib/features.ts b/packages/@aws-cdk/cx-api/lib/features.ts index 499c8e3438fe8..c91607b587eb0 100644 --- a/packages/@aws-cdk/cx-api/lib/features.ts +++ b/packages/@aws-cdk/cx-api/lib/features.ts @@ -80,6 +80,15 @@ export const SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME = '@aws-cdk/aws-secretsmana */ export const KMS_DEFAULT_KEY_POLICIES = '@aws-cdk/aws-kms:defaultKeyPolicies'; +/** + * Change the old 's3:PutObject*' permission to 's3:PutObject' on Bucket, + * as the former includes 's3:PutObjectAcl', + * which allows changing the visibility of an object written to the Bucket. + * Use a feature flag to make sure existing customers who might be relying + * on the overly-broad permissions are not broken. + */ +export const S3_GRANT_WRITE_WITHOUT_ACL = '@aws-cdk/aws-s3:grantWriteWithoutAcl'; + /** * This map includes context keys and values for feature flags that enable * capabilities "from the future", which we could not introduce as the default @@ -100,6 +109,7 @@ export const FUTURE_FLAGS = { [DOCKER_IGNORE_SUPPORT]: true, [SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME]: true, [KMS_DEFAULT_KEY_POLICIES]: true, + [S3_GRANT_WRITE_WITHOUT_ACL]: true, // We will advertise this flag when the feature is complete // [NEW_STYLE_STACK_SYNTHESIS_CONTEXT]: 'true', @@ -117,6 +127,7 @@ const FUTURE_FLAGS_DEFAULTS: { [key: string]: boolean } = { [DOCKER_IGNORE_SUPPORT]: false, [SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME]: false, [KMS_DEFAULT_KEY_POLICIES]: false, + [S3_GRANT_WRITE_WITHOUT_ACL]: false, }; export function futureFlagDefault(flag: string): boolean { diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index e21884db8398c..248d5118d7f53 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -88,7 +88,7 @@ "semver" ], "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/example-construct-library/package.json b/packages/@aws-cdk/example-construct-library/package.json index 826d9b02e1b8b..4299e4b45bca1 100644 --- a/packages/@aws-cdk/example-construct-library/package.json +++ b/packages/@aws-cdk/example-construct-library/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 44e7ed826958f..8b9cb0ffdb65e 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -83,7 +83,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index 3b7c09f51e0af..a1a5a7d7b6e63 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/pipelines/package.json b/packages/@aws-cdk/pipelines/package.json index 59af9ff1fe5cf..507a60267d194 100644 --- a/packages/@aws-cdk/pipelines/package.json +++ b/packages/@aws-cdk/pipelines/package.json @@ -79,7 +79,7 @@ "delivery" ], "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "license": "Apache-2.0", "stability": "experimental", diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index 9db12073061e5..d0a1744c7cfee 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -72,7 +72,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index 873f32ac59a96..34b5c0f72363c 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -82,7 +82,7 @@ "jest": true }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@monocdk-experiment/rewrite-imports/package.json b/packages/@monocdk-experiment/rewrite-imports/package.json index 874cb01ecc201..8da599c16cc53 100644 --- a/packages/@monocdk-experiment/rewrite-imports/package.json +++ b/packages/@monocdk-experiment/rewrite-imports/package.json @@ -52,6 +52,6 @@ "stability": "experimental", "maturity": "developer-preview", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" } } diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 61826d7af01c7..d9e1b2e2d6aec 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -116,6 +116,7 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", + "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscaling-common": "0.0.0", "@aws-cdk/aws-autoscaling-hooktargets": "0.0.0", @@ -149,6 +150,7 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", + "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -211,6 +213,7 @@ "@aws-cdk/aws-logs-destinations": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", + "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -287,7 +290,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "keywords": [ "aws", diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index 64b542ed4b2fd..d17a38e62f923 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -115,6 +115,9 @@ $ cdk synth $ # Synthesize cloud assembly for StackName, but don't include dependencies $ cdk synth MyStackName --exclusively + +$ # Synthesize cloud assembly for StackName, but don't cloudFormation template output to STDOUT +$ cdk synth MyStackName --quiet ``` See the [AWS Documentation](https://docs.aws.amazon.com/cdk/latest/guide/apps.html#apps_cloud_assembly) to learn more about cloud assemblies. diff --git a/packages/aws-cdk/bin/cdk.ts b/packages/aws-cdk/bin/cdk.ts index e305da55164e5..d14e53892354a 100644 --- a/packages/aws-cdk/bin/cdk.ts +++ b/packages/aws-cdk/bin/cdk.ts @@ -68,7 +68,8 @@ async function parseCommandLineArguments() { .option('long', { type: 'boolean', default: false, alias: 'l', desc: 'Display environment information for each stack' }), ) .command(['synthesize [STACKS..]', 'synth [STACKS..]'], 'Synthesizes and prints the CloudFormation template for this stack', yargs => yargs - .option('exclusively', { type: 'boolean', alias: 'e', desc: 'Only synthesize requested stacks, don\'t include dependencies' })) + .option('exclusively', { type: 'boolean', alias: 'e', desc: 'Only synthesize requested stacks, don\'t include dependencies' }) + .option('quiet', { type: 'boolean', alias: 'q', desc: 'Do not output CloudFormation Template to stdout', default: false })) .command('bootstrap [ENVIRONMENTS..]', 'Deploys the CDK toolkit stack into an AWS environment', yargs => yargs .option('bootstrap-bucket-name', { type: 'string', alias: ['b', 'toolkit-bucket-name'], desc: 'The name of the CDK toolkit bucket; bucket will be created and must not exist', default: undefined }) .option('bootstrap-kms-key-id', { type: 'string', desc: 'AWS KMS master key ID used for the SSE-KMS encryption', default: undefined, conflicts: 'bootstrap-customer-key' }) @@ -328,7 +329,7 @@ async function initCommandLine() { case 'synthesize': case 'synth': - return cli.synth(args.STACKS, args.exclusively); + return cli.synth(args.STACKS, args.exclusively, args.quiet); case 'metadata': return cli.metadata(args.STACK); diff --git a/packages/aws-cdk/lib/cdk-toolkit.ts b/packages/aws-cdk/lib/cdk-toolkit.ts index c0ae230879a80..c3e8c649eaa7b 100644 --- a/packages/aws-cdk/lib/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cdk-toolkit.ts @@ -295,12 +295,15 @@ export class CdkToolkit { * OUTPUT: If more than one stack ends up being selected, an output directory * should be supplied, where the templates will be written. */ - public async synth(stackNames: string[], exclusively: boolean): Promise { + public async synth(stackNames: string[], exclusively: boolean, quiet: boolean): Promise { const stacks = await this.selectStacksForDiff(stackNames, exclusively); // if we have a single stack, print it to STDOUT if (stacks.stackCount === 1) { - return stacks.firstStack.template; + if (!quiet) { + return stacks.firstStack.template; + } + return undefined; } // This is a slight hack; in integ mode we allow multiple stacks to be synthesized to stdout sequentially. diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore index 383cdd5040f7e..58505a0211c74 100644 --- a/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore +++ b/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore @@ -3,6 +3,7 @@ package-lock.json __pycache__ .pytest_cache .env +.venv *.egg-info # CDK asset staging directory diff --git a/packages/aws-cdk/lib/settings.ts b/packages/aws-cdk/lib/settings.ts index 0663d021f63d3..f61d2ebd270da 100644 --- a/packages/aws-cdk/lib/settings.ts +++ b/packages/aws-cdk/lib/settings.ts @@ -98,7 +98,8 @@ export class Configuration { this.context = new Context( this.commandLineContext, this.projectConfig.subSettings([CONTEXT_KEY]).makeReadOnly(), - this.projectContext); + this.projectContext, + userConfig.subSettings([CONTEXT_KEY]).makeReadOnly()); // Build settings from what's left this.settings = this.defaultConfig diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index aea264fdb46b3..eb1351446e05e 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -74,11 +74,11 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "archiver": "^5.2.0", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "camelcase": "^6.2.0", "cdk-assets": "0.0.0", "colors": "^1.4.0", - "decamelize": "^4.0.0", + "decamelize": "^5.0.0", "fs-extra": "^9.0.1", "glob": "^7.1.6", "json-diff": "^0.5.4", @@ -103,7 +103,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "stable", "maturity": "stable" diff --git a/packages/aws-cdk/test/cdk-toolkit.test.ts b/packages/aws-cdk/test/cdk-toolkit.test.ts index caf3e6cc83257..9266d9bc10646 100644 --- a/packages/aws-cdk/test/cdk-toolkit.test.ts +++ b/packages/aws-cdk/test/cdk-toolkit.test.ts @@ -138,6 +138,16 @@ describe('deploy', () => { }); }); +describe('synth', () => { + test('with no stdout option', async () => { + // GIVE + const toolkit = defaultToolkitSetup(); + + // THEN + await expect(toolkit.synth(['Test-Stack-A'], false, true)).resolves.toBeUndefined(); + }); +}); + class MockStack { public static readonly MOCK_STACK_A: TestStackArtifact = { stackName: 'Test-Stack-A', diff --git a/packages/aws-cdk/test/usersettings.test.ts b/packages/aws-cdk/test/usersettings.test.ts new file mode 100644 index 0000000000000..948b3b3f907bc --- /dev/null +++ b/packages/aws-cdk/test/usersettings.test.ts @@ -0,0 +1,72 @@ +import * as os from 'os'; +import * as fs_path from 'path'; +import * as fs from 'fs-extra'; +import { mocked } from 'ts-jest/utils'; +import { Configuration, PROJECT_CONFIG, PROJECT_CONTEXT } from '../lib/settings'; + +// mock fs deeply +jest.mock('fs-extra'); +const mockedFs = mocked(fs, true); + +const USER_CONFIG = fs_path.join(os.homedir(), '.cdk.json'); + +test('load settings from both files if available', async () => { + // GIVEN + const GIVEN_CONFIG: Map = new Map([ + [PROJECT_CONFIG, { + project: 'foobar', + }], + [USER_CONFIG, { + project: 'foo', + test: 'bar', + }], + ]); + + // WHEN + mockedFs.pathExists.mockImplementation(path => { + return GIVEN_CONFIG.has(path); + }); + mockedFs.readJSON.mockImplementation(path => { + return GIVEN_CONFIG.get(path); + }); + + const config = await new Configuration().load(); + + // THEN + expect(config.settings.get(['project'])).toBe('foobar'); + expect(config.settings.get(['test'])).toBe('bar'); +}); + +test('load context from all 3 files if available', async () => { + // GIVEN + const GIVEN_CONFIG: Map = new Map([ + [PROJECT_CONFIG, { + context: { + project: 'foobar', + }, + }], + [PROJECT_CONTEXT, { + foo: 'bar', + }], + [USER_CONFIG, { + context: { + test: 'bar', + }, + }], + ]); + + // WHEN + mockedFs.pathExists.mockImplementation(path => { + return GIVEN_CONFIG.has(path); + }); + mockedFs.readJSON.mockImplementation(path => { + return GIVEN_CONFIG.get(path); + }); + + const config = await new Configuration().load(); + + // THEN + expect(config.context.get('project')).toBe('foobar'); + expect(config.context.get('foo')).toBe('bar'); + expect(config.context.get('test')).toBe('bar'); +}); \ No newline at end of file diff --git a/packages/awslint/package.json b/packages/awslint/package.json index 7e9ed60a7b4b3..14b68795adfba 100644 --- a/packages/awslint/package.json +++ b/packages/awslint/package.json @@ -48,6 +48,6 @@ "maturity": "developer-preview", "stability": "experimental", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" } } diff --git a/packages/cdk-assets/README.md b/packages/cdk-assets/README.md index 2eb10ae621947..c40afcd00c42d 100644 --- a/packages/cdk-assets/README.md +++ b/packages/cdk-assets/README.md @@ -28,6 +28,7 @@ Currently the following asset types are supported: * Files and archives, uploaded to S3 * Docker Images, uploaded to ECR +* Files, archives, and Docker images built by external utilities S3 buckets and ECR repositories to upload to are expected to exist already. @@ -41,6 +42,13 @@ itself in the following behaviors: image in the local Docker cache) already exists named after the asset's ID, it will not be packaged, but will be uploaded directly to the destination location. + +For assets build by external utilities, the contract is such that cdk-assets +expects the utility to manage dedupe detection as well as path/image tag generation. +This means that cdk-assets will call the external utility every time generation +is warranted, and it is up to the utility to a) determine whether to do a +full rebuild; and b) to return only one thing on stdout: the path to the file/archive +asset, or the name of the local Docker image. ## Usage @@ -82,6 +90,19 @@ An asset manifest looks like this: } } }, + "3dfe2b80b050e7e4e168f84feff678d4": { + "source": { + "executable": ["myzip"] + }, + "destinations": { + "us-east-1": { + "region": "us-east-1", + "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account", + "bucketName": "MySpecialBucket", + "objectKey": "3dfe2b80b050e7e4e168f84feff678d4.zip" + } + } + }, }, "dockerImages": { "b48783c58a86f7b8c68a4591c4f9be31": { @@ -97,6 +118,20 @@ An asset manifest looks like this: "imageUri": "123456789012.dkr.ecr.us-east-1.amazonaws.com/MyRepository:1234567891b48783c58a86f7b8c68a4591c4f9be31", } } + }, + "d92753c58a86f7b8c68a4591c4f9cf28": { + "source": { + "executable": ["mytool", "package", "dockerdir"], + }, + "destinations": { + "us-east-1": { + "region": "us-east-1", + "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account", + "repositoryName": "MyRepository2", + "imageTag": "d92753c58a86f7b8c68a4591c4f9cf28", + "imageUri": "123456789987.dkr.ecr.us-east-1.amazonaws.com/MyRepository2:1234567891b48783c58a86f7b8c68a4591c4f9be31", + } + } } } } diff --git a/packages/cdk-assets/lib/private/handlers/container-images.ts b/packages/cdk-assets/lib/private/handlers/container-images.ts index bd755a52f139b..a3b6756ecb18d 100644 --- a/packages/cdk-assets/lib/private/handlers/container-images.ts +++ b/packages/cdk-assets/lib/private/handlers/container-images.ts @@ -1,73 +1,128 @@ import * as path from 'path'; +import { DockerImageDestination } from '@aws-cdk/cloud-assembly-schema'; import { DockerImageManifestEntry } from '../../asset-manifest'; import { EventType } from '../../progress'; import { IAssetHandler, IHandlerHost } from '../asset-handler'; import { Docker } from '../docker'; import { replaceAwsPlaceholders } from '../placeholders'; +import { shell } from '../shell'; export class ContainerImageAssetHandler implements IAssetHandler { - private readonly localTagName: string; private readonly docker = new Docker(m => this.host.emitMessage(EventType.DEBUG, m)); constructor( private readonly workDir: string, private readonly asset: DockerImageManifestEntry, private readonly host: IHandlerHost) { - - this.localTagName = `cdkasset-${this.asset.id.assetId.toLowerCase()}`; } public async publish(): Promise { const destination = await replaceAwsPlaceholders(this.asset.destination, this.host.aws); - const ecr = await this.host.aws.ecrClient(destination); - const account = (await this.host.aws.discoverCurrentAccount()).accountId; - const repoUri = await repositoryUri(ecr, destination.repositoryName); + if (!repoUri) { throw new Error(`No ECR repository named '${destination.repositoryName}' in account ${account}. Is this account bootstrapped?`); } const imageUri = `${repoUri}:${destination.imageTag}`; - this.host.emitMessage(EventType.CHECK, `Check ${imageUri}`); - if (await imageExists(ecr, destination.repositoryName, destination.imageTag)) { - this.host.emitMessage(EventType.FOUND, `Found ${imageUri}`); - return; - } - + if (await this.destinationAlreadyExists(ecr, destination, imageUri)) { return; } if (this.host.aborted) { return; } // Login before build so that the Dockerfile can reference images in the ECR repo await this.docker.login(ecr); - await this.buildImage(); + + const localTagName = this.asset.source.executable + ? await this.buildExternalAsset(this.asset.source.executable) + : await this.buildDirectoryAsset(); + + if (localTagName === undefined || this.host.aborted) { + return; + } this.host.emitMessage(EventType.UPLOAD, `Push ${imageUri}`); if (this.host.aborted) { return; } - await this.docker.tag(this.localTagName, imageUri); + await this.docker.tag(localTagName, imageUri); await this.docker.push(imageUri); } - private async buildImage(): Promise { - if (await this.docker.exists(this.localTagName)) { - this.host.emitMessage(EventType.CACHED, `Cached ${this.localTagName}`); - return; + /** + * Build a (local) Docker asset from a directory with a Dockerfile + * + * Tags under a deterministic, unique, local identifier wich will skip + * the build if it already exists. + */ + private async buildDirectoryAsset(): Promise { + const localTagName = `cdkasset-${this.asset.id.assetId.toLowerCase()}`; + + if (!(await this.isImageCached(localTagName))) { + if (this.host.aborted) { return undefined; } + + await this.buildImage(localTagName); + } + + return localTagName; + } + + /** + * Build a (local) Docker asset by running an external command + * + * External command is responsible for deduplicating the build if possible, + * and is expected to return the generated image identifier on stdout. + */ + private async buildExternalAsset(executable: string[]): Promise { + this.host.emitMessage(EventType.BUILD, `Building Docker image using command '${executable}'`); + if (this.host.aborted) { return undefined; } + + return (await shell(executable, { quiet: true })).trim(); + } + + + /** + * Check whether the image already exists in the ECR repo + * + * Use the fields from the destination to do the actual check. The imageUri + * should correspond to that, but is only used to print Docker image location + * for user benefit (the format is slightly different). + */ + private async destinationAlreadyExists(ecr: AWS.ECR, destination: DockerImageDestination, imageUri: string): Promise { + this.host.emitMessage(EventType.CHECK, `Check ${imageUri}`); + if (await imageExists(ecr, destination.repositoryName, destination.imageTag)) { + this.host.emitMessage(EventType.FOUND, `Found ${imageUri}`); + return true; } + return false; + } + + private async buildImage(localTagName: string): Promise { const source = this.asset.source; + if (!source.directory) { + throw new Error(`'directory' is expected in the DockerImage asset source, got: ${JSON.stringify(source)}`); + } const fullPath = path.resolve(this.workDir, source.directory); this.host.emitMessage(EventType.BUILD, `Building Docker image at ${fullPath}`); await this.docker.build({ directory: fullPath, - tag: this.localTagName, + tag: localTagName, buildArgs: source.dockerBuildArgs, target: source.dockerBuildTarget, file: source.dockerFile, }); } + + private async isImageCached(localTagName: string): Promise { + if (await this.docker.exists(localTagName)) { + this.host.emitMessage(EventType.CACHED, `Cached ${localTagName}`); + return true; + } + + return false; + } } async function imageExists(ecr: AWS.ECR, repositoryName: string, imageTag: string) { @@ -93,4 +148,4 @@ async function repositoryUri(ecr: AWS.ECR, repositoryName: string): Promise { - const source = this.asset.source; - const fullPath = path.resolve(this.workDir, this.asset.source.path); + private async packageFile(source: FileSource): Promise { + if (!source.path) { + throw new Error(`'path' is expected in the File asset source, got: ${JSON.stringify(source)}`); + } + + const fullPath = path.resolve(this.workDir, source.path); if (source.packaging === FileAssetPackaging.ZIP_DIRECTORY) { + const contentType = 'application/zip'; + await fs.mkdir(this.fileCacheRoot, { recursive: true }); - const ret = path.join(this.fileCacheRoot, `${this.asset.id.assetId}.zip`); + const packagedPath = path.join(this.fileCacheRoot, `${this.asset.id.assetId}.zip`); - if (await pathExists(ret)) { - this.host.emitMessage(EventType.CACHED, `From cache ${ret}`); - return ret; + if (await pathExists(packagedPath)) { + this.host.emitMessage(EventType.CACHED, `From cache ${path}`); + return { packagedPath, contentType }; } - this.host.emitMessage(EventType.BUILD, `Zip ${fullPath} -> ${ret}`); - await zipDirectory(fullPath, ret); - return ret; + this.host.emitMessage(EventType.BUILD, `Zip ${fullPath} -> ${path}`); + await zipDirectory(fullPath, packagedPath); + return { packagedPath, contentType }; } else { - return fullPath; + return { packagedPath: fullPath }; } } + + private async externalPackageFile(executable: string[]): Promise { + this.host.emitMessage(EventType.BUILD, `Building asset source using command: '${executable}'`); + + return { + packagedPath: (await shell(executable, { quiet: true })).trim(), + contentType: 'application/zip', + }; + } } enum BucketOwnership { @@ -109,3 +124,21 @@ async function objectExists(s3: AWS.S3, bucket: string, key: string) { const response = await s3.listObjectsV2({ Bucket: bucket, Prefix: key, MaxKeys: 1 }).promise(); return response.Contents != null && response.Contents.some(object => object.Key === key); } + + +/** + * A packaged asset which can be uploaded (either a single file or directory) + */ +interface PackagedFileAsset { + /** + * Path of the file or directory + */ + readonly packagedPath: string; + + /** + * Content type to be added in the S3 upload action + * + * @default - No content type + */ + readonly contentType?: string; +} diff --git a/packages/cdk-assets/lib/private/handlers/index.ts b/packages/cdk-assets/lib/private/handlers/index.ts index 2e4d406ce5b0b..97ec7354279df 100644 --- a/packages/cdk-assets/lib/private/handlers/index.ts +++ b/packages/cdk-assets/lib/private/handlers/index.ts @@ -12,4 +12,4 @@ export function makeAssetHandler(manifest: AssetManifest, asset: IManifestEntry, } throw new Error(`Unrecognized asset type: '${asset}'`); -} \ No newline at end of file +} diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index f5f6f12a4bf09..6968bb005fd02 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -47,7 +47,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "archiver": "^5.2.0", - "aws-sdk": "^2.824.0", + "aws-sdk": "^2.828.0", "glob": "^7.1.6", "yargs": "^16.2.0" }, @@ -62,7 +62,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "cdk-package": { "shrinkWrap": true diff --git a/packages/cdk-assets/test/docker-images.test.ts b/packages/cdk-assets/test/docker-images.test.ts index 3f0aeaabf474c..3b608a1e63ffe 100644 --- a/packages/cdk-assets/test/docker-images.test.ts +++ b/packages/cdk-assets/test/docker-images.test.ts @@ -9,6 +9,8 @@ import { mockSpawn } from './mock-child_process'; let aws: ReturnType; const absoluteDockerPath = '/simple/cdk.out/dockerdir'; beforeEach(() => { + jest.resetAllMocks(); + mockfs({ '/simple/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), @@ -28,6 +30,24 @@ beforeEach(() => { }, }, }), + '/external/cdk.out/assets.json': JSON.stringify({ + version: Manifest.version(), + dockerImages: { + theExternalAsset: { + source: { + executable: ['sometool'], + }, + destinations: { + theDestination: { + region: 'us-north-50', + assumeRoleArn: 'arn:aws:role', + repositoryName: 'repo', + imageTag: 'ghijkl', + }, + }, + }, + }, + }), '/simple/cdk.out/dockerdir/Dockerfile': 'FROM scratch', '/abs/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), @@ -92,7 +112,7 @@ describe('with a complete manifest', () => { ], }); - mockSpawn( + const expectAllSpawns = mockSpawn( { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, { commandLine: ['docker', 'inspect', 'cdkasset-theasset'] }, { commandLine: ['docker', 'tag', 'cdkasset-theasset', '12345.amazonaws.com/repo:abcdef'] }, @@ -100,6 +120,9 @@ describe('with a complete manifest', () => { ); await pub.publish(); + + expectAllSpawns(); + expect(true).toBeTruthy(); // Expect no exception, satisfy linter }); test('build and upload docker image if not exists anywhere', async () => { @@ -110,7 +133,7 @@ describe('with a complete manifest', () => { ], }); - mockSpawn( + const expectAllSpawns = mockSpawn( { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, { commandLine: ['docker', 'inspect', 'cdkasset-theasset'], exitCode: 1 }, { commandLine: ['docker', 'build', '--tag', 'cdkasset-theasset', '.'], cwd: absoluteDockerPath }, @@ -119,6 +142,41 @@ describe('with a complete manifest', () => { ); await pub.publish(); + + expectAllSpawns(); + expect(true).toBeTruthy(); // Expect no exception, satisfy linter + }); +}); + +describe('external assets', () => { + let pub: AssetPublishing; + const externalTag = 'external:tag'; + beforeEach(() => { + pub = new AssetPublishing(AssetManifest.fromPath('/external/cdk.out'), { aws }); + }); + + test('upload externally generated Docker image', async () => { + aws.mockEcr.describeImages = mockedApiFailure('ImageNotFoundException', 'File does not exist'); + aws.mockEcr.getAuthorizationToken = mockedApiResult({ + authorizationData: [ + { authorizationToken: 'dXNlcjpwYXNz', proxyEndpoint: 'https://proxy.com/' }, + ], + }); + + const expectAllSpawns = mockSpawn( + { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, + { commandLine: ['sometool'], stdout: externalTag }, + { commandLine: ['docker', 'tag', externalTag, '12345.amazonaws.com/repo:ghijkl'] }, + { commandLine: ['docker', 'push', '12345.amazonaws.com/repo:ghijkl'] }, + ); + + await pub.publish(); + + expect(aws.ecrClient).toHaveBeenCalledWith(expect.objectContaining({ + region: 'us-north-50', + assumeRoleArn: 'arn:aws:role', + })); + expectAllSpawns(); }); }); @@ -132,7 +190,7 @@ test('correctly identify Docker directory if path is absolute', async () => { ], }); - mockSpawn( + const expectAllSpawns = mockSpawn( // Only care about the 'build' command line { commandLine: ['docker', 'login'], prefix: true }, { commandLine: ['docker', 'inspect'], exitCode: 1, prefix: true }, @@ -142,4 +200,7 @@ test('correctly identify Docker directory if path is absolute', async () => { ); await pub.publish(); + + expect(true).toBeTruthy(); // Expect no exception, satisfy linter + expectAllSpawns(); }); diff --git a/packages/cdk-assets/test/files.test.ts b/packages/cdk-assets/test/files.test.ts index e8c7247ef7f42..42cb8a71c05ad 100644 --- a/packages/cdk-assets/test/files.test.ts +++ b/packages/cdk-assets/test/files.test.ts @@ -1,10 +1,17 @@ +jest.mock('child_process'); + import { Manifest } from '@aws-cdk/cloud-assembly-schema'; import * as mockfs from 'mock-fs'; import { AssetManifest, AssetPublishing } from '../lib'; import { mockAws, mockedApiResult, mockUpload } from './mock-aws'; +import { mockSpawn } from './mock-child_process'; + +const ABS_PATH = '/simple/cdk.out/some_external_file'; let aws: ReturnType; beforeEach(() => { + jest.resetAllMocks(); + mockfs({ '/simple/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), @@ -25,6 +32,7 @@ beforeEach(() => { }, }), '/simple/cdk.out/some_file': 'FILE_CONTENTS', + [ABS_PATH]: 'FILE_CONTENTS', '/abs/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), files: { @@ -36,7 +44,25 @@ beforeEach(() => { theDestination: { region: 'us-north-50', assumeRoleArn: 'arn:aws:role', - bucketName: 'some_bucket', + bucketName: 'some_other_bucket', + objectKey: 'some_key', + }, + }, + }, + }, + }), + '/external/cdk.out/assets.json': JSON.stringify({ + version: Manifest.version(), + files: { + externalAsset: { + source: { + executable: ['sometool'], + }, + destinations: { + theDestination: { + region: 'us-north-50', + assumeRoleArn: 'arn:aws:role', + bucketName: 'some_external_bucket', objectKey: 'some_key', }, }, @@ -127,4 +153,40 @@ test('correctly identify asset path if path is absolute', async () => { aws.mockS3.upload = mockUpload('FILE_CONTENTS'); await pub.publish(); + + expect(true).toBeTruthy(); // No exception, satisfy linter +}); + +describe('external assets', () => { + let pub: AssetPublishing; + beforeEach(() => { + pub = new AssetPublishing(AssetManifest.fromPath('/external/cdk.out'), { aws }); + }); + + test('do nothing if file exists already', async () => { + aws.mockS3.listObjectsV2 = mockedApiResult({ Contents: [{ Key: 'some_key' }] }); + + await pub.publish(); + + expect(aws.mockS3.listObjectsV2).toHaveBeenCalledWith(expect.objectContaining({ + Bucket: 'some_external_bucket', + Prefix: 'some_key', + MaxKeys: 1, + })); + }); + + test('upload external asset correctly', async () => { + aws.mockS3.listObjectsV2 = mockedApiResult({ Contents: undefined }); + aws.mockS3.upload = mockUpload('FILE_CONTENTS'); + const expectAllSpawns = mockSpawn({ commandLine: ['sometool'], stdout: ABS_PATH }); + + await pub.publish(); + + expect(aws.s3Client).toHaveBeenCalledWith(expect.objectContaining({ + region: 'us-north-50', + assumeRoleArn: 'arn:aws:role', + })); + + expectAllSpawns(); + }); }); diff --git a/packages/cdk-assets/test/mock-child_process.ts b/packages/cdk-assets/test/mock-child_process.ts index da0fd27d08fe6..2cb513e24fff7 100644 --- a/packages/cdk-assets/test/mock-child_process.ts +++ b/packages/cdk-assets/test/mock-child_process.ts @@ -17,7 +17,7 @@ export interface Invocation { prefix?: boolean; } -export function mockSpawn(...invocations: Invocation[]) { +export function mockSpawn(...invocations: Invocation[]): () => void { let mock = (child_process.spawn as any); for (const _invocation of invocations) { const invocation = _invocation; // Mirror into variable for closure @@ -42,7 +42,7 @@ export function mockSpawn(...invocations: Invocation[]) { child.stderr = new events.EventEmitter(); if (invocation.stdout) { - mockEmit(child.stdout, 'data', invocation.stdout); + mockEmit(child.stdout, 'data', Buffer.from(invocation.stdout)); } mockEmit(child, 'close', invocation.exitCode ?? 0); @@ -53,6 +53,10 @@ export function mockSpawn(...invocations: Invocation[]) { mock.mockImplementation((binary: string, args: string[], _options: any) => { throw new Error(`Did not expect call of ${JSON.stringify([binary, ...args])}`); }); + + return () => { + expect(mock).toHaveBeenCalledTimes(invocations.length); + }; } /** diff --git a/packages/decdk/package.json b/packages/decdk/package.json index a22066a22e5e4..27ba890f8f0a9 100644 --- a/packages/decdk/package.json +++ b/packages/decdk/package.json @@ -46,6 +46,7 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", + "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscaling-common": "0.0.0", "@aws-cdk/aws-autoscaling-hooktargets": "0.0.0", @@ -79,6 +80,7 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", + "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -141,6 +143,7 @@ "@aws-cdk/aws-logs-destinations": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", + "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index b0efee31b2f60..27803e34806af 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -119,6 +119,7 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", + "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscaling-common": "0.0.0", "@aws-cdk/aws-autoscaling-hooktargets": "0.0.0", @@ -152,6 +153,7 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", + "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -214,6 +216,7 @@ "@aws-cdk/aws-logs-destinations": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", + "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -290,7 +293,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "keywords": [ "aws", diff --git a/scripts/check-api-compatibility.sh b/scripts/check-api-compatibility.sh index e49d684e8b98c..8c260d248f02e 100755 --- a/scripts/check-api-compatibility.sh +++ b/scripts/check-api-compatibility.sh @@ -55,15 +55,22 @@ if ! ${SKIP_DOWNLOAD:-false}; then existing_names=$(echo "$jsii_package_dirs" | xargs -n1 -P4 -I {} bash -c 'dirs_to_existing_names "$@"' _ {}) echo " Done." >&2 - current_version=$(node -p 'require("./lerna.json").version') - echo "Current version in lerna.json is $current_version" - if ! ${DOWNLOAD_LATEST:-false} && package_exists_on_npm aws-cdk $current_version; then - echo "Using package version ${current_version} as baseline" - existing_names=$(echo "$existing_names" | sed -e "s/$/@$current_version/") - else - echo "However, using the latest version from NPM as the baseline" + version=$(node -p 'require("./scripts/resolve-version.js").version') + echo "Current version is $version." + + if ! package_exists_on_npm aws-cdk $version; then + # occurs within a release PR where the version is bumped but is not yet published to npm. + if [ -z ${NPM_DISTTAG:-} ]; then + echo "env variable NPM_DISTTAG is not set. Failing." + exit 1 + fi + echo "Current version not published. Setting version to NPM_DISTTAG (${NPM_DISTTAG})." + version=$NPM_DISTTAG fi + echo "Using version '$version' as the baseline..." + existing_names=$(echo "$existing_names" | sed -e "s/$/@$version/") + rm -rf $tmpdir mkdir -p $tmpdir diff --git a/tools/cdk-build-tools/bin/cdk-build.ts b/tools/cdk-build-tools/bin/cdk-build.ts index d745de50aa2be..b4a5b38542292 100644 --- a/tools/cdk-build-tools/bin/cdk-build.ts +++ b/tools/cdk-build-tools/bin/cdk-build.ts @@ -26,9 +26,14 @@ async function main() { }) .option('gen', { type: 'boolean', - desc: 'execute gen script', + desc: 'Execute gen script', default: true, }) + .option('fix', { + type: 'boolean', + desc: 'Fix linter errors', + default: false, + }) .argv; const options = cdkBuildOptions(); @@ -46,7 +51,7 @@ async function main() { const overrides: CompilerOverrides = { eslint: args.eslint, jsii: args.jsii, tsc: args.tsc }; await compileCurrentPackage(options, timers, overrides); - await lintCurrentPackage(options, overrides); + await lintCurrentPackage(options, { ...overrides, fix: args.fix }); if (options.post) { await shell(options.post, { timers, env }); diff --git a/tools/cdk-build-tools/config/eslintrc.js b/tools/cdk-build-tools/config/eslintrc.js index 63608e69161a3..446af2c2e2ff4 100644 --- a/tools/cdk-build-tools/config/eslintrc.js +++ b/tools/cdk-build-tools/config/eslintrc.js @@ -42,6 +42,7 @@ module.exports = { ignorePatterns: ['*.js', '*.d.ts', 'node_modules/', '*.generated.ts'], rules: { 'cdk/no-core-construct': [ 'error' ], + 'cdk/no-qualified-construct': [ 'error' ], // Require use of the `import { foo } from 'bar';` form instead of `import foo = require('bar');` '@typescript-eslint/no-require-imports': ['error'], '@typescript-eslint/indent': ['error', 2], diff --git a/tools/cdk-build-tools/package.json b/tools/cdk-build-tools/package.json index 226ba63a75b81..e43def68cf890 100644 --- a/tools/cdk-build-tools/package.json +++ b/tools/cdk-build-tools/package.json @@ -67,7 +67,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "ubergen": { "exclude": true diff --git a/tools/cdk-integ-tools/package.json b/tools/cdk-integ-tools/package.json index 8685d8435f8dc..f5ce70a844cf5 100644 --- a/tools/cdk-integ-tools/package.json +++ b/tools/cdk-integ-tools/package.json @@ -48,7 +48,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "peerDependencies": { "@aws-cdk/assert": "0.0.0" diff --git a/tools/cfn2ts/package.json b/tools/cfn2ts/package.json index 785d1a52c18b0..f808cfaabe092 100644 --- a/tools/cfn2ts/package.json +++ b/tools/cfn2ts/package.json @@ -49,7 +49,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "ubergen": { "exclude": true diff --git a/tools/eslint-plugin-cdk/lib/index.ts b/tools/eslint-plugin-cdk/lib/index.ts index aae510df35d54..94eef4dd8f57f 100644 --- a/tools/eslint-plugin-cdk/lib/index.ts +++ b/tools/eslint-plugin-cdk/lib/index.ts @@ -1,3 +1,4 @@ export const rules = { 'no-core-construct': require('./rules/no-core-construct'), + 'no-qualified-construct': require('./rules/no-qualified-construct'), }; diff --git a/tools/eslint-plugin-cdk/lib/private/import-cache.ts b/tools/eslint-plugin-cdk/lib/private/import-cache.ts index 7d78b2a421e93..04325645fdb5d 100644 --- a/tools/eslint-plugin-cdk/lib/private/import-cache.ts +++ b/tools/eslint-plugin-cdk/lib/private/import-cache.ts @@ -29,6 +29,10 @@ export class ImportCache { public find(key: ImportCacheKey): ImportCacheRecord | undefined { return this.records[hashed(key)]; } + + public get imports(): ImportCacheRecord[] { + return Object.values(this.records); + } } function hashed(key: {}): string { diff --git a/tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts b/tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts new file mode 100644 index 0000000000000..eb8a418cab58e --- /dev/null +++ b/tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts @@ -0,0 +1,134 @@ +// +// This rule ensures that the `@aws-cdk/core.Construct` class is always +// referenced without a namespace qualifier (`Construct` instead of +// `xxx.Construct`). The fixer will automatically add an `import` statement +// separated from the main import group to reduce the chance for merge conflicts +// with v2-main. +// +// If there is already an import of `constructs.Construct` under the name +// `Construct`, we will import `core.Construct` as the alias `CoreConstruct` +// instead. +// + +import { AST, Rule } from 'eslint'; +import { ImportCache } from '../private/import-cache'; + +const importCache = new ImportCache(); + +export function create(context: Rule.RuleContext): Rule.NodeListener { + // skip core + if (context.getFilename().includes('@aws-cdk/core')) { + return {}; + } + + return { + // collect all "import" statements. we will later use them to determine + // exactly how to import `core.Construct`. + ImportDeclaration: node => { + for (const s of node.specifiers) { + const typeName = () => { + switch (s.type) { + case 'ImportSpecifier': return s.imported.name; + case 'ImportDefaultSpecifier': return s.local.name; + case 'ImportNamespaceSpecifier': return s.local.name; + } + }; + + importCache.record({ + fileName: context.getFilename(), + typeName: typeName(), + importNode: node, + localName: `${node.source.value}.${s.local.name}` + }); + } + }, + + // this captures `class X extends xxx.Construct` + ClassDeclaration: node => { + if (node.superClass?.type === 'MemberExpression') { + const sc = node.superClass; + // const qualifier = sc.object.type === 'Identifier' ? sc.object.name : undefined; + const baseClass = sc.property.type === 'Identifier' ? sc.property.name : undefined; + if (baseClass === 'Construct' && sc.range) { + report(context, node, sc.range); + } + } + }, + + // this captures using `xxx.Construct` as an identifier + Identifier: node => { + const typeAnnotation = (node as any).typeAnnotation?.typeAnnotation; + const type = typeAnnotation?.typeName; + if (type?.type === 'TSQualifiedName' && type?.right.name === 'Construct' && type?.left.name !== 'constructs') { + report(context, node, typeAnnotation.range); + } + }, + } +} + +/** + * Reports an error indicating that we found `xxx.Construct` usage, and apply + * the appropriate fix. + * @param context Rule context + * @param node Rule node (for the report) + * @param replaceRange Text range to replace + */ +function report(context: Rule.RuleContext, node: Rule.Node, replaceRange: AST.Range) { + context.report({ + message: 'To avoid merge conflicts with the v2-main branch, the "Construct" type must be referenced without a qualifier (e.g. "Construct" instead of "CoreConstruct")', + node, + fix: fixer => { + const imports = importCache.imports.filter(x => x.fileName === context.getFilename()); + const findImport = (x: string) => imports.find(i => i.localName === x); + + const coreConstruct = findImport('@aws-cdk/core.Construct') + const coreCoreConstruct = findImport('@aws-cdk/core.CoreConstruct'); + const constructsConstruct = findImport('constructs.Construct'); + + // determines whether we will replace with `Construct` or `CoreConstruct` + // based on whether this file already imported `constructs.Construct`. + let replaceBy: string | undefined; + + // determines whether an "import" statement should be added and it's + // contents. + let addImport: string | undefined; + + if (coreConstruct) { + // we already import `core.Construct` as `Construct` + replaceBy = 'Construct'; + } else if (coreCoreConstruct) { + // we already import `core.Construct` as `CoreConstruct` + replaceBy = 'CoreConstruct' + } else if (constructsConstruct) { + // we import `constructs.Construct`, so import and replace + // `core.Construct` with `CoreConstruct` + replaceBy = 'CoreConstruct'; + addImport = `import { Construct as ${replaceBy} } from '@aws-cdk/core';`; + } else { + // import `core.Construct` as `Construct` and replace + replaceBy = 'Construct'; + addImport = `import { ${replaceBy} } from '@aws-cdk/core';`; + } + + const fixes: Rule.Fix[] = [ + fixer.replaceTextRange(replaceRange, replaceBy) + ]; + + if (addImport) { + // find the last import statement in the file and add our import immediately after + const lastImport = imports[imports.length - 1]; + if (lastImport) { + fixes.push(fixer.insertTextAfter(lastImport.importNode, [ + "", + "", + "// keep this import separate from other imports to reduce chance for merge conflicts with v2-main", + "// eslint-disable-next-line no-duplicate-imports, import/order", + addImport, + ].join('\n'))); + } + } + + return fixes; + }, + }); +} \ No newline at end of file diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 0bded88c313ef..87300515e617d 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -284,8 +284,32 @@ export class MaturitySetting extends ValidationRule { maturity = 'deprecated'; } + const packageLevels = this.determinePackageLevels(pkg); + + const hasL1s = packageLevels.some(level => level === 'l1'); + const hasL2s = packageLevels.some(level => level === 'l2'); + if (hasL2s) { + // validate that a package that contains L2s does not declare a 'cfn-only' maturity + if (maturity === 'cfn-only') { + pkg.report({ + ruleName: this.name, + message: "Package that contains any L2s cannot declare a 'cfn-only' maturity", + fix: () => pkg.json.maturity = 'experimental', + }); + } + } else if (hasL1s) { + // validate that a package that contains only L1s declares a 'cfn-only' maturity + if (maturity !== 'cfn-only') { + pkg.report({ + ruleName: this.name, + message: "Package that contains only L1s cannot declare a maturity other than 'cfn-only'", + fix: () => pkg.json.maturity = 'cfn-only', + }); + } + } + if (maturity) { - this.validateReadmeHasBanner(pkg, maturity, this.determinePackageLevels(pkg)); + this.validateReadmeHasBanner(pkg, maturity, packageLevels); } } @@ -342,7 +366,9 @@ export class MaturitySetting extends ValidationRule { // to see if this package has L1s. const hasL1 = !!pkg.json['cdk-build']?.cloudformation; - const libFiles = glob.sync('lib/*.ts'); + const libFiles = glob.sync('lib/**/*.ts', { + ignore: 'lib/**/*.d.ts', // ignore the generated TS declaration files + }); const hasL2 = libFiles.some(f => !f.endsWith('.generated.ts') && !f.endsWith('index.ts')); return [ @@ -1079,7 +1105,11 @@ export class MustHaveNodeEnginesDeclaration extends ValidationRule { public readonly name = 'package-info/engines'; public validate(pkg: PackageJson): void { - expectJSON(this.name, pkg, 'engines.node', '>= 10.13.0 <13 || >=13.7.0'); + if (cdkMajorVersion() === 2) { + expectJSON(this.name, pkg, 'engines.node', '>= 14.15.0'); + } else { + expectJSON(this.name, pkg, 'engines.node', '>= 10.13.0 <13 || >=13.7.0'); + } } } @@ -1511,9 +1541,7 @@ export class UbergenPackageVisibility extends ValidationRule { ]; public validate(pkg: PackageJson): void { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const releaseJson = require(`${__dirname}/../../../release.json`); - if (releaseJson.majorVersion === 2) { + if (cdkMajorVersion() === 2) { // Only packages in the publicPackages list should be "public". Everything else should be private. if (this.publicPackages.includes(pkg.json.name) && pkg.json.private === true) { pkg.report({ @@ -1616,3 +1644,9 @@ function toRegExp(str: string): RegExp { function readBannerFile(file: string): string { return fs.readFileSync(path.join(__dirname, 'banners', file), { encoding: 'utf-8' }).trim(); } + +function cdkMajorVersion() { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const releaseJson = require(`${__dirname}/../../../release.json`); + return releaseJson.majorVersion as number; +} diff --git a/tools/pkgtools/package.json b/tools/pkgtools/package.json index d5255e81d465d..f9130019bdc41 100644 --- a/tools/pkgtools/package.json +++ b/tools/pkgtools/package.json @@ -44,7 +44,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "ubergen": { "exclude": true diff --git a/tools/ubergen/package.json b/tools/ubergen/package.json index 483d7ecfa4dfa..77bb68c7a3d0b 100644 --- a/tools/ubergen/package.json +++ b/tools/ubergen/package.json @@ -41,7 +41,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "ubergen": { "exclude": true diff --git a/tools/yarn-cling/package.json b/tools/yarn-cling/package.json index aefba13ff8ee0..02516633ef5f5 100644 --- a/tools/yarn-cling/package.json +++ b/tools/yarn-cling/package.json @@ -54,7 +54,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "ubergen": { "exclude": true diff --git a/version.v1.json b/version.v1.json index 5d4e6a68aecb5..e9e06b8086b92 100644 --- a/version.v1.json +++ b/version.v1.json @@ -1,3 +1,3 @@ { - "version": "1.83.0" + "version": "1.85.0" } diff --git a/yarn.lock b/yarn.lock index 285e77f7f0705..374de3ff6b642 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2309,10 +2309,10 @@ aws-sdk-mock@^5.1.0: sinon "^9.0.1" traverse "^0.6.6" -aws-sdk@^2.637.0, aws-sdk@^2.824.0: - version "2.824.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.824.0.tgz#a67747d4d0b53d09c6c121e93f44d8f6e76fc44b" - integrity sha512-9KNRQBkIMPn+6DWb4gR+RzqTMNyGLEwOgXbE4dDehOIAflfLnv3IFwLnzrhxJnleB4guYrILIsBroJFBzjiekg== +aws-sdk@^2.637.0, aws-sdk@^2.828.0: + version "2.828.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.828.0.tgz#6aa599c3582f219568f41fb287eb65753e4a9234" + integrity sha512-JoDujGdncSIF9ka+XFZjop/7G+fNGucwPwYj7OHYMmFIOV5p7YmqomdbVmH/vIzd988YZz8oLOinWc4jM6vvhg== dependencies: buffer "4.9.2" events "1.1.1" @@ -3518,6 +3518,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decamelize@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b" + integrity sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w== + decimal.js@^10.2.0: version "10.2.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" @@ -3943,10 +3948,10 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -esbuild@^0.8.31: - version "0.8.31" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.31.tgz#c21e7adb3ad283c951a53de7ad64a5ae2df2ed34" - integrity sha512-7EIU0VdUxltwivjVezX3HgeNzeIVR1snkrAo57WdUnuBMykdzin5rTrxwCDM6xQqj0RL/HjOEm3wFr2ijHKeaA== +esbuild@^0.8.32: + version "0.8.32" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.32.tgz#d3d679ea417925f7afaab37555e52070df317355" + integrity sha512-5IzQapMW/wFy5oxziHCJzawk26K3xeyrIAQPnPN3c0Q84hqRw6IfGDGfGWOdJNw5tAx77yvwqZ4r1QMpo6emJA== escalade@^3.1.1: version "3.1.1" @@ -9923,10 +9928,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript-json-schema@^0.46.0: - version "0.46.0" - resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.46.0.tgz#45204ba80915db3608d01de5b839c470c053e716" - integrity sha512-9ktZr69Yh6iGTWVa3Ln0J+H6RyAoED9e68tz8k+0lIiCR+UZLvpvs9PqsSsE7aZ7Olvg0p161ls7JHldlA0Ocg== +typescript-json-schema@^0.47.0: + version "0.47.0" + resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.47.0.tgz#84dde5460b127c6774da81bf70b23c7e04857b13" + integrity sha512-A6NVwSOTSsNDHfaqDcDeKwwyXEeKqBHoAr20jcetnYj4e8C6zVFofAVhAuwsBXCRYiWEE/lyHrcxpsSpbIk0Mg== dependencies: "@types/json-schema" "^7.0.6" glob "^7.1.6" From dd377f0e57e76d0a6e9ec261d9698dd9153fb24a Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Mon, 18 Jan 2021 13:27:45 +0000 Subject: [PATCH 031/304] chore: un-squash latest forward merge to v2 (#12566) #12552 manually fixed some issues with the forward merge. However, the end result was squashed, which is breaking the new forward merges. This change reverts the squashed merge, and then brings in the merged commits again. Verified I can run `git merge origin/master --no-edit` cleanly with this (rather than `v2-main` HEAD) as my HEAD branch. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* From a2132121a008b574723d098cdd15c66abdb64887 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Mon, 18 Jan 2021 13:44:51 +0000 Subject: [PATCH 032/304] Revert "chore: forward merge 'master' to 'v2-main' (#12552)" This reverts commit fe1da26f113d25ec908d9ea893d4d4634ea1ef65. --- .../auto-approve-v2-merge-forward.yml | 4 +- .yarnrc | 1 - CHANGELOG.md | 51 - allowed-breaking-changes.txt | 4 - .../lib/extensions/cloudwatch-agent.ts | 2 +- .../lib/extensions/container.ts | 6 +- .../lib/extensions/xray.ts | 3 +- .../ecs-service-extensions/package.json | 2 +- packages/@aws-cdk/alexa-ask/README.md | 8 + packages/@aws-cdk/alexa-ask/package.json | 4 +- packages/@aws-cdk/app-delivery/package.json | 2 +- packages/@aws-cdk/assert/package.json | 2 +- packages/@aws-cdk/assets/package.json | 2 +- .../@aws-cdk/aws-accessanalyzer/package.json | 2 +- packages/@aws-cdk/aws-acmpca/README.md | 8 - packages/@aws-cdk/aws-acmpca/package.json | 4 +- packages/@aws-cdk/aws-amazonmq/package.json | 2 +- packages/@aws-cdk/aws-amplify/package.json | 2 +- packages/@aws-cdk/aws-apigateway/package.json | 2 +- .../package.json | 2 +- packages/@aws-cdk/aws-apigatewayv2/README.md | 8 +- .../@aws-cdk/aws-apigatewayv2/lib/http/api.ts | 31 +- .../@aws-cdk/aws-apigatewayv2/package.json | 2 +- .../aws-apigatewayv2/test/http/api.test.ts | 24 - packages/@aws-cdk/aws-appconfig/package.json | 2 +- packages/@aws-cdk/aws-appflow/package.json | 2 +- .../lib/step-scaling-policy.ts | 2 +- .../aws-applicationautoscaling/package.json | 2 +- .../aws-applicationinsights/package.json | 2 +- packages/@aws-cdk/aws-appmesh/README.md | 38 - packages/@aws-cdk/aws-appmesh/lib/index.ts | 1 - .../aws-appmesh/lib/service-discovery.ts | 1 + .../aws-appmesh/lib/tls-certificate.ts | 173 - .../lib/virtual-gateway-listener.ts | 115 +- .../aws-appmesh/lib/virtual-node-listener.ts | 34 +- packages/@aws-cdk/aws-appmesh/package.json | 4 +- .../aws-appmesh/test/integ.mesh.expected.json | 30 - .../@aws-cdk/aws-appmesh/test/integ.mesh.ts | 14 - .../aws-appmesh/test/test.virtual-gateway.ts | 138 +- .../aws-appmesh/test/test.virtual-node.ts | 143 - packages/@aws-cdk/aws-appstream/package.json | 2 +- packages/@aws-cdk/aws-appsync/README.md | 13 +- .../@aws-cdk/aws-appsync/lib/data-source.ts | 14 +- packages/@aws-cdk/aws-appsync/package.json | 2 +- .../aws-appsync/test/appsync-rds.test.ts | 26 - packages/@aws-cdk/aws-athena/package.json | 2 +- .../@aws-cdk/aws-auditmanager/.eslintrc.js | 3 - packages/@aws-cdk/aws-auditmanager/.gitignore | 19 - packages/@aws-cdk/aws-auditmanager/.npmignore | 28 - packages/@aws-cdk/aws-auditmanager/LICENSE | 201 -- packages/@aws-cdk/aws-auditmanager/NOTICE | 2 - packages/@aws-cdk/aws-auditmanager/README.md | 20 - .../@aws-cdk/aws-auditmanager/jest.config.js | 2 - .../@aws-cdk/aws-auditmanager/lib/index.ts | 2 - .../@aws-cdk/aws-auditmanager/package.json | 100 - .../test/auditmanager.test.ts | 6 - .../aws-autoscaling-common/package.json | 2 +- .../aws-autoscaling-hooktargets/package.json | 2 +- .../@aws-cdk/aws-autoscaling/package.json | 2 +- .../aws-autoscalingplans/package.json | 2 +- packages/@aws-cdk/aws-backup/package.json | 2 +- packages/@aws-cdk/aws-batch/package.json | 2 +- packages/@aws-cdk/aws-budgets/package.json | 2 +- packages/@aws-cdk/aws-cassandra/package.json | 2 +- packages/@aws-cdk/aws-ce/package.json | 2 +- .../aws-certificatemanager/package.json | 2 +- packages/@aws-cdk/aws-chatbot/package.json | 2 +- packages/@aws-cdk/aws-cloud9/package.json | 2 +- .../@aws-cdk/aws-cloudformation/package.json | 2 +- .../aws-cloudfront-origins/package.json | 4 +- packages/@aws-cdk/aws-cloudfront/package.json | 4 +- packages/@aws-cdk/aws-cloudtrail/package.json | 4 +- .../aws-cloudwatch-actions/package.json | 2 +- packages/@aws-cdk/aws-cloudwatch/package.json | 2 +- .../@aws-cdk/aws-codeartifact/package.json | 2 +- .../@aws-cdk/aws-codebuild/lib/project.ts | 8 +- packages/@aws-cdk/aws-codebuild/package.json | 4 +- packages/@aws-cdk/aws-codecommit/package.json | 4 +- packages/@aws-cdk/aws-codedeploy/package.json | 2 +- .../aws-codeguruprofiler/package.json | 2 +- .../aws-codegurureviewer/package.json | 2 +- .../lib/s3/deploy-action.ts | 6 - .../aws-codepipeline-actions/package.json | 2 +- .../integ.pipeline-s3-deploy.expected.json | 231 +- .../test/integ.pipeline-s3-deploy.ts | 5 +- .../@aws-cdk/aws-codepipeline/package.json | 2 +- packages/@aws-cdk/aws-codestar/package.json | 2 +- .../aws-codestarconnections/package.json | 2 +- .../aws-codestarnotifications/package.json | 2 +- packages/@aws-cdk/aws-cognito/package.json | 2 +- packages/@aws-cdk/aws-config/package.json | 2 +- packages/@aws-cdk/aws-databrew/package.json | 2 +- .../@aws-cdk/aws-datapipeline/package.json | 2 +- packages/@aws-cdk/aws-datasync/.eslintrc.js | 3 - packages/@aws-cdk/aws-datasync/.gitignore | 19 - packages/@aws-cdk/aws-datasync/.npmignore | 28 - packages/@aws-cdk/aws-datasync/LICENSE | 201 -- packages/@aws-cdk/aws-datasync/NOTICE | 2 - packages/@aws-cdk/aws-datasync/README.md | 20 - packages/@aws-cdk/aws-datasync/jest.config.js | 2 - packages/@aws-cdk/aws-datasync/lib/index.ts | 2 - packages/@aws-cdk/aws-datasync/package.json | 100 - .../aws-datasync/test/datasync.test.ts | 6 - packages/@aws-cdk/aws-dax/package.json | 2 +- packages/@aws-cdk/aws-detective/package.json | 2 +- packages/@aws-cdk/aws-devopsguru/package.json | 2 +- .../aws-directoryservice/package.json | 2 +- packages/@aws-cdk/aws-dlm/package.json | 2 +- packages/@aws-cdk/aws-dms/package.json | 2 +- packages/@aws-cdk/aws-docdb/package.json | 2 +- .../@aws-cdk/aws-dynamodb-global/package.json | 2 +- packages/@aws-cdk/aws-dynamodb/package.json | 4 +- .../@aws-cdk/aws-ec2/lib/security-group.ts | 7 - packages/@aws-cdk/aws-ec2/package.json | 2 +- packages/@aws-cdk/aws-ecr-assets/package.json | 2 +- packages/@aws-cdk/aws-ecr/package.json | 2 +- .../@aws-cdk/aws-ecs-patterns/package.json | 2 +- packages/@aws-cdk/aws-ecs/lib/cluster.ts | 93 +- packages/@aws-cdk/aws-ecs/package.json | 2 +- .../ec2/integ.environment-file.expected.json | 26 +- .../@aws-cdk/aws-ecs/test/test.ecs-cluster.ts | 53 - packages/@aws-cdk/aws-efs/package.json | 2 +- packages/@aws-cdk/aws-eks-legacy/package.json | 2 +- packages/@aws-cdk/aws-eks/README.md | 44 +- packages/@aws-cdk/aws-eks/lib/cluster.ts | 24 +- .../@aws-cdk/aws-eks/lib/managed-nodegroup.ts | 54 +- packages/@aws-cdk/aws-eks/package.json | 4 +- .../test/integ.eks-cluster.expected.json | 2 +- .../@aws-cdk/aws-eks/test/test.cluster.ts | 44 +- .../@aws-cdk/aws-eks/test/test.nodegroup.ts | 86 - .../@aws-cdk/aws-elasticache/package.json | 2 +- .../aws-elasticbeanstalk/package.json | 2 +- .../aws-elasticloadbalancing/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../aws-elasticloadbalancingv2/package.json | 2 +- .../@aws-cdk/aws-elasticsearch/lib/domain.ts | 49 +- .../@aws-cdk/aws-elasticsearch/package.json | 2 +- .../aws-elasticsearch/test/domain.test.ts | 105 +- ...asticsearch.advancedsecurity.expected.json | 15 +- ...elasticsearch.custom-kms-key.expected.json | 8 +- .../test/integ.elasticsearch.expected.json | 14 +- ...sticsearch.unsignedbasicauth.expected.json | 19 +- packages/@aws-cdk/aws-emr/package.json | 2 +- .../@aws-cdk/aws-events-targets/package.json | 4 +- packages/@aws-cdk/aws-events/package.json | 2 +- .../@aws-cdk/aws-eventschemas/package.json | 2 +- packages/@aws-cdk/aws-fms/package.json | 2 +- packages/@aws-cdk/aws-fsx/package.json | 2 +- packages/@aws-cdk/aws-gamelift/package.json | 2 +- .../aws-globalaccelerator/package.json | 2 +- packages/@aws-cdk/aws-glue/package.json | 2 +- packages/@aws-cdk/aws-greengrass/package.json | 2 +- .../@aws-cdk/aws-greengrassv2/package.json | 2 +- packages/@aws-cdk/aws-guardduty/package.json | 2 +- packages/@aws-cdk/aws-iam/README.md | 28 - packages/@aws-cdk/aws-iam/lib/user.ts | 44 +- packages/@aws-cdk/aws-iam/package.json | 2 +- .../aws-iam/test/integ.user.expected.json | 13 +- packages/@aws-cdk/aws-iam/test/integ.user.ts | 14 +- packages/@aws-cdk/aws-iam/test/user.test.ts | 28 +- .../@aws-cdk/aws-imagebuilder/package.json | 2 +- packages/@aws-cdk/aws-inspector/package.json | 2 +- packages/@aws-cdk/aws-iot/package.json | 2 +- packages/@aws-cdk/aws-iot1click/package.json | 2 +- .../@aws-cdk/aws-iotanalytics/package.json | 2 +- packages/@aws-cdk/aws-iotevents/package.json | 2 +- .../@aws-cdk/aws-iotsitewise/package.json | 2 +- .../@aws-cdk/aws-iotthingsgraph/package.json | 2 +- .../@aws-cdk/aws-iotwireless/package.json | 2 +- packages/@aws-cdk/aws-ivs/package.json | 2 +- packages/@aws-cdk/aws-kendra/package.json | 2 +- packages/@aws-cdk/aws-kinesis/package.json | 2 +- .../aws-kinesisanalytics/package.json | 2 +- .../@aws-cdk/aws-kinesisfirehose/package.json | 2 +- packages/@aws-cdk/aws-kms/package.json | 2 +- .../@aws-cdk/aws-lakeformation/package.json | 2 +- .../aws-lambda-destinations/package.json | 2 +- .../aws-lambda-event-sources/package.json | 2 +- .../@aws-cdk/aws-lambda-nodejs/package.json | 4 +- .../@aws-cdk/aws-lambda-python/package.json | 2 +- packages/@aws-cdk/aws-lambda/README.md | 4 +- packages/@aws-cdk/aws-lambda/lib/code.ts | 3 - packages/@aws-cdk/aws-lambda/package.json | 2 +- .../@aws-cdk/aws-lambda/test/code.test.ts | 20 - .../@aws-cdk/aws-licensemanager/package.json | 2 +- .../aws-logs-destinations/package.json | 2 +- packages/@aws-cdk/aws-logs/package.json | 4 +- packages/@aws-cdk/aws-macie/package.json | 2 +- .../aws-managedblockchain/package.json | 2 +- .../@aws-cdk/aws-mediaconnect/.eslintrc.js | 3 - packages/@aws-cdk/aws-mediaconnect/.gitignore | 19 - packages/@aws-cdk/aws-mediaconnect/.npmignore | 28 - packages/@aws-cdk/aws-mediaconnect/LICENSE | 201 -- packages/@aws-cdk/aws-mediaconnect/NOTICE | 2 - packages/@aws-cdk/aws-mediaconnect/README.md | 20 - .../@aws-cdk/aws-mediaconnect/jest.config.js | 2 - .../@aws-cdk/aws-mediaconnect/lib/index.ts | 2 - .../@aws-cdk/aws-mediaconnect/package.json | 100 - .../test/mediaconnect.test.ts | 6 - .../@aws-cdk/aws-mediaconvert/package.json | 2 +- packages/@aws-cdk/aws-medialive/package.json | 2 +- .../@aws-cdk/aws-mediapackage/package.json | 2 +- packages/@aws-cdk/aws-mediastore/package.json | 2 +- packages/@aws-cdk/aws-msk/package.json | 2 +- packages/@aws-cdk/aws-mwaa/package.json | 2 +- packages/@aws-cdk/aws-neptune/package.json | 2 +- .../@aws-cdk/aws-networkfirewall/package.json | 2 +- .../@aws-cdk/aws-networkmanager/package.json | 2 +- packages/@aws-cdk/aws-opsworks/package.json | 2 +- packages/@aws-cdk/aws-opsworkscm/package.json | 2 +- packages/@aws-cdk/aws-pinpoint/package.json | 2 +- .../@aws-cdk/aws-pinpointemail/package.json | 2 +- packages/@aws-cdk/aws-qldb/package.json | 2 +- packages/@aws-cdk/aws-ram/package.json | 2 +- .../@aws-cdk/aws-rds/lib/cluster-engine.ts | 8 - packages/@aws-cdk/aws-rds/package.json | 2 +- packages/@aws-cdk/aws-redshift/package.json | 2 +- .../@aws-cdk/aws-resourcegroups/package.json | 2 +- packages/@aws-cdk/aws-robomaker/package.json | 2 +- .../aws-route53-patterns/package.json | 2 +- .../@aws-cdk/aws-route53-targets/package.json | 2 +- packages/@aws-cdk/aws-route53/package.json | 4 +- .../@aws-cdk/aws-route53resolver/README.md | 8 + .../@aws-cdk/aws-route53resolver/package.json | 4 +- packages/@aws-cdk/aws-s3-assets/package.json | 2 +- .../aws-s3-deployment/lib/lambda/index.py | 8 +- .../@aws-cdk/aws-s3-deployment/package.json | 2 +- ...bucket-deployment-cloudfront.expected.json | 22 +- .../integ.bucket-deployment.expected.json | 22 +- .../aws-s3-deployment/test/lambda/test.py | 22 +- .../aws-s3-notifications/package.json | 2 +- packages/@aws-cdk/aws-s3/lib/bucket.ts | 39 +- packages/@aws-cdk/aws-s3/lib/perms.ts | 16 +- packages/@aws-cdk/aws-s3/package.json | 8 +- packages/@aws-cdk/aws-s3/test/bucket.test.ts | 400 +-- packages/@aws-cdk/aws-sagemaker/package.json | 2 +- packages/@aws-cdk/aws-sam/package.json | 2 +- packages/@aws-cdk/aws-sdb/package.json | 2 +- .../@aws-cdk/aws-secretsmanager/package.json | 2 +- .../@aws-cdk/aws-securityhub/package.json | 2 +- .../@aws-cdk/aws-servicecatalog/package.json | 2 +- .../aws-servicediscovery/package.json | 2 +- .../@aws-cdk/aws-ses-actions/package.json | 2 +- packages/@aws-cdk/aws-ses/package.json | 2 +- packages/@aws-cdk/aws-signer/package.json | 2 +- .../aws-sns-subscriptions/package.json | 2 +- packages/@aws-cdk/aws-sns/README.md | 3 - packages/@aws-cdk/aws-sns/lib/topic.ts | 15 +- packages/@aws-cdk/aws-sns/package.json | 2 +- .../@aws-cdk/aws-sns/test/integ.sns-fifo.ts | 2 +- packages/@aws-cdk/aws-sns/test/test.sns.ts | 64 +- packages/@aws-cdk/aws-sqs/package.json | 4 +- packages/@aws-cdk/aws-ssm/package.json | 2 +- packages/@aws-cdk/aws-sso/package.json | 2 +- .../aws-stepfunctions-tasks/README.md | 2 +- .../aws-stepfunctions-tasks/package.json | 2 +- .../@aws-cdk/aws-stepfunctions/package.json | 2 +- packages/@aws-cdk/aws-synthetics/package.json | 2 +- packages/@aws-cdk/aws-timestream/package.json | 2 +- packages/@aws-cdk/aws-transfer/package.json | 2 +- packages/@aws-cdk/aws-waf/package.json | 2 +- .../@aws-cdk/aws-wafregional/package.json | 2 +- packages/@aws-cdk/aws-wafv2/package.json | 2 +- packages/@aws-cdk/aws-workspaces/package.json | 2 +- .../@aws-cdk/cdk-assets-schema/package.json | 2 +- packages/@aws-cdk/cfnspec/CHANGELOG.md | 469 --- .../build-tools/create-missing-libraries.ts | 2 +- packages/@aws-cdk/cfnspec/cfn.version | 2 +- ...0_CloudFormationResourceSpecification.json | 2778 ++++------------- .../cfnspec/spec-source/000_sam.spec.json | 30 +- ...ngTemplate_Tags_CorrectItemType_patch.json | 21 + .../570_Athena_Workgroup_Tags_patch.json | 36 + .../610_IoT_Authorizer_Tags_patch.json | 16 + ...figuration_Tags_CorrectItemType_patch.json | 21 + .../711_AuditMgr_Assesment_patch.json | 13 + .../lib/assets/docker-image-asset.ts | 18 +- .../lib/assets/file-asset.ts | 15 +- .../cloud-assembly-schema/package.json | 4 +- .../schema/assets.schema.json | 36 +- .../schema/cloud-assembly.version.json | 2 +- .../cloud-assembly-schema/test/assets.test.ts | 46 +- .../@aws-cdk/cloudformation-diff/package.json | 2 +- .../cloudformation-include/package.json | 8 +- packages/@aws-cdk/core/README.md | 8 - packages/@aws-cdk/core/lib/assets.ts | 36 +- .../stack-synthesizers/default-synthesizer.ts | 37 +- .../core/lib/stack-synthesizers/legacy.ts | 8 - packages/@aws-cdk/core/lib/stack.ts | 25 - packages/@aws-cdk/core/package.json | 2 +- packages/@aws-cdk/core/test/stack.test.ts | 62 - .../@aws-cdk/custom-resources/package.json | 4 +- packages/@aws-cdk/cx-api/lib/features.ts | 11 - packages/@aws-cdk/cx-api/package.json | 2 +- .../example-construct-library/package.json | 2 +- .../@aws-cdk/lambda-layer-awscli/package.json | 2 +- .../lambda-layer-kubectl/package.json | 2 +- packages/@aws-cdk/pipelines/package.json | 2 +- packages/@aws-cdk/region-info/package.json | 2 +- packages/@aws-cdk/yaml-cfn/package.json | 2 +- .../rewrite-imports/package.json | 2 +- packages/aws-cdk-lib/package.json | 5 +- packages/aws-cdk/README.md | 3 - packages/aws-cdk/bin/cdk.ts | 5 +- packages/aws-cdk/lib/cdk-toolkit.ts | 7 +- .../v1/app/python/.template.gitignore | 1 - packages/aws-cdk/lib/settings.ts | 3 +- packages/aws-cdk/package.json | 6 +- packages/aws-cdk/test/cdk-toolkit.test.ts | 10 - packages/aws-cdk/test/usersettings.test.ts | 72 - packages/awslint/package.json | 2 +- packages/cdk-assets/README.md | 35 - .../lib/private/handlers/container-images.ts | 95 +- .../cdk-assets/lib/private/handlers/files.ts | 65 +- .../cdk-assets/lib/private/handlers/index.ts | 2 +- packages/cdk-assets/package.json | 4 +- .../cdk-assets/test/docker-images.test.ts | 67 +- packages/cdk-assets/test/files.test.ts | 64 +- .../cdk-assets/test/mock-child_process.ts | 8 +- packages/decdk/package.json | 3 - packages/monocdk/package.json | 5 +- scripts/check-api-compatibility.sh | 21 +- tools/cdk-build-tools/bin/cdk-build.ts | 9 +- tools/cdk-build-tools/config/eslintrc.js | 1 - tools/cdk-build-tools/package.json | 2 +- tools/cdk-integ-tools/package.json | 2 +- tools/cfn2ts/package.json | 2 +- tools/eslint-plugin-cdk/lib/index.ts | 1 - .../lib/private/import-cache.ts | 4 - .../lib/rules/no-qualified-construct.ts | 134 - tools/pkglint/lib/rules.ts | 46 +- tools/pkgtools/package.json | 2 +- tools/ubergen/package.json | 2 +- tools/yarn-cling/package.json | 2 +- version.v1.json | 2 +- yarn.lock | 29 +- 336 files changed, 1729 insertions(+), 6813 deletions(-) delete mode 100644 packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts delete mode 100644 packages/@aws-cdk/aws-auditmanager/.eslintrc.js delete mode 100644 packages/@aws-cdk/aws-auditmanager/.gitignore delete mode 100644 packages/@aws-cdk/aws-auditmanager/.npmignore delete mode 100644 packages/@aws-cdk/aws-auditmanager/LICENSE delete mode 100644 packages/@aws-cdk/aws-auditmanager/NOTICE delete mode 100644 packages/@aws-cdk/aws-auditmanager/README.md delete mode 100644 packages/@aws-cdk/aws-auditmanager/jest.config.js delete mode 100644 packages/@aws-cdk/aws-auditmanager/lib/index.ts delete mode 100644 packages/@aws-cdk/aws-auditmanager/package.json delete mode 100644 packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts delete mode 100644 packages/@aws-cdk/aws-datasync/.eslintrc.js delete mode 100644 packages/@aws-cdk/aws-datasync/.gitignore delete mode 100644 packages/@aws-cdk/aws-datasync/.npmignore delete mode 100644 packages/@aws-cdk/aws-datasync/LICENSE delete mode 100644 packages/@aws-cdk/aws-datasync/NOTICE delete mode 100644 packages/@aws-cdk/aws-datasync/README.md delete mode 100644 packages/@aws-cdk/aws-datasync/jest.config.js delete mode 100644 packages/@aws-cdk/aws-datasync/lib/index.ts delete mode 100644 packages/@aws-cdk/aws-datasync/package.json delete mode 100644 packages/@aws-cdk/aws-datasync/test/datasync.test.ts delete mode 100644 packages/@aws-cdk/aws-mediaconnect/.eslintrc.js delete mode 100644 packages/@aws-cdk/aws-mediaconnect/.gitignore delete mode 100644 packages/@aws-cdk/aws-mediaconnect/.npmignore delete mode 100644 packages/@aws-cdk/aws-mediaconnect/LICENSE delete mode 100644 packages/@aws-cdk/aws-mediaconnect/NOTICE delete mode 100644 packages/@aws-cdk/aws-mediaconnect/README.md delete mode 100644 packages/@aws-cdk/aws-mediaconnect/jest.config.js delete mode 100644 packages/@aws-cdk/aws-mediaconnect/lib/index.ts delete mode 100644 packages/@aws-cdk/aws-mediaconnect/package.json delete mode 100644 packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts create mode 100644 packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json create mode 100644 packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json create mode 100644 packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json create mode 100644 packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json create mode 100644 packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json delete mode 100644 packages/aws-cdk/test/usersettings.test.ts delete mode 100644 tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts diff --git a/.github/workflows/auto-approve-v2-merge-forward.yml b/.github/workflows/auto-approve-v2-merge-forward.yml index f05cd6753316c..96dd3d0837e6e 100644 --- a/.github/workflows/auto-approve-v2-merge-forward.yml +++ b/.github/workflows/auto-approve-v2-merge-forward.yml @@ -1,7 +1,7 @@ # Automatically approve PRs that merge master forward to v2-main # # Only does approvals! mergify takes care of the actual merge. -name: Auto-approve automated PRs around CDK v2 +name: Auto-approve forward merges onto v2-main on: pull_request: types: @@ -21,6 +21,6 @@ jobs: if: > github.event.pull_request.user.login == 'aws-cdk-automation' && github.event.pull_request.base.ref == 'v2-main' - && contains(github.event.pull_request.labels.*.name, 'pr/auto-approve') + && contains(github.event.pull_request.labels.*.name, 'pr/forward-merge') with: github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.yarnrc b/.yarnrc index 46241e3f5e5bc..591e9c3d57b96 100644 --- a/.yarnrc +++ b/.yarnrc @@ -1,2 +1 @@ --install.check-files true # install will verify file tree of packages for consistency -ignore-engines true # the 'engines' key for 'aws-cdk-lib' has specifies node14 as min while v1 will remain at node10 diff --git a/CHANGELOG.md b/CHANGELOG.md index 731ddcf6c5e4f..4f5ba6592ea70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,57 +2,6 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -## [1.85.0](https://github.com/aws/aws-cdk/compare/v1.84.0...v1.85.0) (2021-01-14) - -* **s3-deployment**: This version includes an important update, please upgrade to prevent deployment failure. This is in prepartion of Lambda deprecation of the request module in boto, more details are available in [AWS blog](https://aws.amazon.com/blogs/compute/upcoming-changes-to-the-python-sdk-in-aws-lambda/). Note, users of versions < `1.81.0` will not be impacted by this deprecation, but are still encouraged to upgrade to the latest version. - -### Features - -* **apigatewayv2:** http api - disable execute api endpoint ([#12426](https://github.com/aws/aws-cdk/issues/12426)) ([1724da7](https://github.com/aws/aws-cdk/commit/1724da758666ec92f7b923c899d2f2f439083ba2)), closes [#12241](https://github.com/aws/aws-cdk/issues/12241) -* **appmesh:** add listener TLS certificates for VirtualNodes and VirtualGateways ([#11863](https://github.com/aws/aws-cdk/issues/11863)) ([175a257](https://github.com/aws/aws-cdk/commit/175a2570465d484aa0a73a7bded34e686da493ed)), closes [#10051](https://github.com/aws/aws-cdk/issues/10051) -* **cfnspec:** CloudFormation resource specification update to v23.0.0 ([#12490](https://github.com/aws/aws-cdk/issues/12490)) ([a7a2236](https://github.com/aws/aws-cdk/commit/a7a2236367f8f01b00b6d90f1d3fe7bf674b1aee)) - - -### Bug Fixes - -* **appsync:** rds data source configured with cluster arn ([#12255](https://github.com/aws/aws-cdk/issues/12255)) ([d0305f3](https://github.com/aws/aws-cdk/commit/d0305f33da41ce1f07a5d571eb21c0ee9ea852d0)), closes [#11536](https://github.com/aws/aws-cdk/issues/11536) -* **aws-ecs:** Support configuring Windows capacity for cluster ASGs ([#12365](https://github.com/aws/aws-cdk/issues/12365)) ([6d9a0f1](https://github.com/aws/aws-cdk/commit/6d9a0f1ea0c05e7902ccca4d0fc4040e688846e5)) -* **eks:** aws-node-termination-handler incorrectly deployed to on-demand instances as well ([#12369](https://github.com/aws/aws-cdk/issues/12369)) ([05c0b5f](https://github.com/aws/aws-cdk/commit/05c0b5f5a31c3fe89c47c6db8d9051f7165641a9)), closes [#12368](https://github.com/aws/aws-cdk/issues/12368) -* **s3:** Bucket.grantWrite() no longer adds s3:PutObject* permission ([#12391](https://github.com/aws/aws-cdk/issues/12391)) ([cd437cf](https://github.com/aws/aws-cdk/commit/cd437cf630266086a3ddf9e326f215b5d1acdfd7)) -* **s3-deployment:** stop using deprecated API's that will cause breakage post 01/31/21 ([#12491](https://github.com/aws/aws-cdk/issues/12491)) ([f50f928](https://github.com/aws/aws-cdk/commit/f50f92880bbc219c331c858eaace712e0757507d)) -* **sns:** require topic name for fifo topic [#12386](https://github.com/aws/aws-cdk/issues/12386) ([#12437](https://github.com/aws/aws-cdk/issues/12437)) ([37d8ccc](https://github.com/aws/aws-cdk/commit/37d8ccc763f532999bc9f114264f3d29725b0f28)) - -## [1.84.0](https://github.com/aws/aws-cdk/compare/v1.83.0...v1.84.0) (2021-01-12) - - -### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES - -* **apigatewayv2:** `subnets` prop in `VpcLink` resource now takes `SubnetSelection` instead of `ISubnet[]` - -### Features - -* **aws-lambda-nodejs:** add esbuild `define` bundling option ([#12424](https://github.com/aws/aws-cdk/issues/12424)) ([581f6af](https://github.com/aws/aws-cdk/commit/581f6af3d1f71737ca93b6ecb9b004bdade149a8)), closes [#12423](https://github.com/aws/aws-cdk/issues/12423) -* **cdk-assets:** add external asset support ([#12259](https://github.com/aws/aws-cdk/issues/12259)) ([05a9980](https://github.com/aws/aws-cdk/commit/05a998065b3333854715c456b20b7cc5d5daac67)) -* **cli:** `--quiet` does not print template in `cdk synth` ([#12178](https://github.com/aws/aws-cdk/issues/12178)) ([74458a0](https://github.com/aws/aws-cdk/commit/74458a0e9eebce4ee254673aad8933d39588d843)), closes [#11970](https://github.com/aws/aws-cdk/issues/11970) -* **codebuild:** support Standard 5.0 ([#12434](https://github.com/aws/aws-cdk/issues/12434)) ([422dc8e](https://github.com/aws/aws-cdk/commit/422dc8e9d50105af4e710d409a4f301079d43f3f)), closes [#12433](https://github.com/aws/aws-cdk/issues/12433) -* **core:** validate maximum amount of resources in a stack ([#12193](https://github.com/aws/aws-cdk/issues/12193)) ([26121c8](https://github.com/aws/aws-cdk/commit/26121c81abf0fb92de97567c758a1ecf60f85f63)), closes [#276](https://github.com/aws/aws-cdk/issues/276) -* **eks:** spot interruption handler can be disabled for self managed nodes ([#12453](https://github.com/aws/aws-cdk/issues/12453)) ([6ac1f4f](https://github.com/aws/aws-cdk/commit/6ac1f4fdef5853785d8e57652ec4c4e1d770844d)), closes [#12451](https://github.com/aws/aws-cdk/issues/12451) -* **synthetics:** Update Cloudwatch Synthetics canaries NodeJS runtimes ([#11866](https://github.com/aws/aws-cdk/issues/11866)) ([4f6e377](https://github.com/aws/aws-cdk/commit/4f6e377ae3f35c3fa010e1597c3d71ef6e6e9a04)), closes [#11870](https://github.com/aws/aws-cdk/issues/11870) - - -### Bug Fixes - -* **apigatewayv2:** vpclink - explicit subnet specification still causes private subnets to be included ([#12401](https://github.com/aws/aws-cdk/issues/12401)) ([336a58f](https://github.com/aws/aws-cdk/commit/336a58f06a3b3a9f5db2a79350f8721244767e3b)), closes [#12083](https://github.com/aws/aws-cdk/issues/12083) -* **cli:** CLI doesn't read context from ~/.cdk.json ([#12394](https://github.com/aws/aws-cdk/issues/12394)) ([2389a9b](https://github.com/aws/aws-cdk/commit/2389a9b5742583f1d58c66a4f513ee4d833baab5)), closes [#10823](https://github.com/aws/aws-cdk/issues/10823) [#4802](https://github.com/aws/aws-cdk/issues/4802) -* **core:** DefaultStackSynthesizer bucket prefix missing for template assets ([#11855](https://github.com/aws/aws-cdk/issues/11855)) ([50a3d3a](https://github.com/aws/aws-cdk/commit/50a3d3acf3e413d9b4e51197d2be4ea1349c0955)), closes [#10710](https://github.com/aws/aws-cdk/issues/10710) [#11327](https://github.com/aws/aws-cdk/issues/11327) -* **dynamodb:** missing grantRead for ConditionCheckItem ([#12313](https://github.com/aws/aws-cdk/issues/12313)) ([e157007](https://github.com/aws/aws-cdk/commit/e1570072440b07b6b82219c1a4371386c541fb1c)) -* **ec2:** interface endpoint AZ lookup does not guard against broken situations ([#12033](https://github.com/aws/aws-cdk/issues/12033)) ([80f0bfd](https://github.com/aws/aws-cdk/commit/80f0bfd167430a015e71b00506e0ecc280068e86)) -* **eks:** nodegroup synthesis fails when configured with an AMI type that is not compatible to the default instance type ([#12441](https://github.com/aws/aws-cdk/issues/12441)) ([5f6f0f9](https://github.com/aws/aws-cdk/commit/5f6f0f9d46dbd460ac03dd5f9f4874eaa41611d8)), closes [#12389](https://github.com/aws/aws-cdk/issues/12389) -* **elasticsearch:** domain fails due to log publishing keys on unsupported cluster versions ([#11622](https://github.com/aws/aws-cdk/issues/11622)) ([e6bb96f](https://github.com/aws/aws-cdk/commit/e6bb96ff6bae96e3167c82f6de97807217ddb3be)) -* **elbv2:** can't import two application listeners into the same scope ([#12373](https://github.com/aws/aws-cdk/issues/12373)) ([6534dcf](https://github.com/aws/aws-cdk/commit/6534dcf3e04a55f5c6d28203192cbbddb5d119e6)), closes [#12132](https://github.com/aws/aws-cdk/issues/12132) -* **logs:** custom resource Lambda uses old NodeJS version ([#12228](https://github.com/aws/aws-cdk/issues/12228)) ([29c4943](https://github.com/aws/aws-cdk/commit/29c4943466f4a911f65a2a13cf9e776ade9b8dfe)) -* **stepfunctions-tasks:** EvaluateExpression does not support JSON paths with dash ([#12248](https://github.com/aws/aws-cdk/issues/12248)) ([da1ed08](https://github.com/aws/aws-cdk/commit/da1ed08a6a2de584f5ddf43dab4efbb530541419)), closes [#12221](https://github.com/aws/aws-cdk/issues/12221) - ## [1.83.0](https://github.com/aws/aws-cdk/compare/v1.82.0...v1.83.0) (2021-01-06) diff --git a/allowed-breaking-changes.txt b/allowed-breaking-changes.txt index 2ca2ca5b6067f..9120903b01912 100644 --- a/allowed-breaking-changes.txt +++ b/allowed-breaking-changes.txt @@ -52,7 +52,3 @@ incompatible-argument:@aws-cdk/aws-ecs.FargateTaskDefinition. incompatible-argument:@aws-cdk/aws-ecs.FargateTaskDefinition.addVolume incompatible-argument:@aws-cdk/aws-ecs.TaskDefinition. incompatible-argument:@aws-cdk/aws-ecs.TaskDefinition.addVolume - -# We made properties optional and it's really fine but our differ doesn't think so. -weakened:@aws-cdk/cloud-assembly-schema.DockerImageSource -weakened:@aws-cdk/cloud-assembly-schema.FileSource diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts index b4bbd4286ae9f..a6d6bd19e49c8 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/cloudwatch-agent.ts @@ -70,4 +70,4 @@ export class CloudwatchAgentExtension extends ServiceExtension { }); } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/container.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/container.ts index 0635c24c6f759..3ae65bfe6994b 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/container.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/container.ts @@ -1,5 +1,5 @@ import * as ecs from '@aws-cdk/aws-ecs'; -import { Construct } from 'constructs'; +import * as cdk from '@aws-cdk/core'; import { Service } from '../service'; import { ServiceExtension } from './extension-interfaces'; @@ -59,7 +59,7 @@ export class Container extends ServiceExtension { } // @ts-ignore - Ignore unused params that are required for abstract class extend - public prehook(service: Service, scope: Construct) { + public prehook(service: Service, scope: cdk.Construct) { this.parentService = service; } @@ -142,4 +142,4 @@ export class Container extends ServiceExtension { }); } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/xray.ts b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/xray.ts index 652d6a5dd8b7d..3ba344f4133d8 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/xray.ts +++ b/packages/@aws-cdk-containers/ecs-service-extensions/lib/extensions/xray.ts @@ -1,7 +1,6 @@ import * as ecs from '@aws-cdk/aws-ecs'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; -import { Construct } from 'constructs'; import { Service } from '../service'; import { ServiceExtension } from './extension-interfaces'; @@ -18,7 +17,7 @@ export class XRayExtension extends ServiceExtension { } // @ts-ignore - Ignore unused params that are required for abstract class extend - public prehook(service: Service, scope: Construct) { + public prehook(service: Service, scope: cdk.Construct) { this.parentService = service; } diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index 4b2e3f0a2de28..eea2d3553aa45 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awscdkio": { "announce": false diff --git a/packages/@aws-cdk/alexa-ask/README.md b/packages/@aws-cdk/alexa-ask/README.md index 766afeef6d3cd..125b909867ec7 100644 --- a/packages/@aws-cdk/alexa-ask/README.md +++ b/packages/@aws-cdk/alexa-ask/README.md @@ -9,6 +9,14 @@ > > [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib +![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) + +> The APIs of higher level constructs in this module are experimental and under active development. +> They are subject to non-backward compatible changes or removal in any future version. These are +> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be +> announced in the release notes. This means that while you may use them, you may need to update +> your source code when upgrading to a newer version of this package. + --- diff --git a/packages/@aws-cdk/alexa-ask/package.json b/packages/@aws-cdk/alexa-ask/package.json index b14e11df91d8e..7758e78a06c8a 100644 --- a/packages/@aws-cdk/alexa-ask/package.json +++ b/packages/@aws-cdk/alexa-ask/package.json @@ -89,10 +89,10 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", - "maturity": "cfn-only", + "maturity": "experimental", "awscdkio": { "announce": false } diff --git a/packages/@aws-cdk/app-delivery/package.json b/packages/@aws-cdk/app-delivery/package.json index 929246d143257..50ec9c01b73cf 100644 --- a/packages/@aws-cdk/app-delivery/package.json +++ b/packages/@aws-cdk/app-delivery/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "deprecated", "maturity": "deprecated", diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index c5178d691e66a..c2444a9ede633 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -51,7 +51,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index 7c2d554666f99..b1791d6fa0963 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "deprecated", "maturity": "deprecated", diff --git a/packages/@aws-cdk/aws-accessanalyzer/package.json b/packages/@aws-cdk/aws-accessanalyzer/package.json index f71b75a9da62d..5d1c39ee62e43 100644 --- a/packages/@aws-cdk/aws-accessanalyzer/package.json +++ b/packages/@aws-cdk/aws-accessanalyzer/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-acmpca/README.md b/packages/@aws-cdk/aws-acmpca/README.md index 04d167836539c..fd3c39c9f5e4c 100644 --- a/packages/@aws-cdk/aws-acmpca/README.md +++ b/packages/@aws-cdk/aws-acmpca/README.md @@ -9,14 +9,6 @@ > > [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib -![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) - -> The APIs of higher level constructs in this module are experimental and under active development. -> They are subject to non-backward compatible changes or removal in any future version. These are -> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be -> announced in the release notes. This means that while you may use them, you may need to update -> your source code when upgrading to a newer version of this package. - --- diff --git a/packages/@aws-cdk/aws-acmpca/package.json b/packages/@aws-cdk/aws-acmpca/package.json index d462cce372238..5422e74d07d87 100644 --- a/packages/@aws-cdk/aws-acmpca/package.json +++ b/packages/@aws-cdk/aws-acmpca/package.json @@ -90,10 +90,10 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", - "maturity": "experimental", + "maturity": "cfn-only", "awscdkio": { "announce": false } diff --git a/packages/@aws-cdk/aws-amazonmq/package.json b/packages/@aws-cdk/aws-amazonmq/package.json index 9402b6afcc479..9676bb176e4f2 100644 --- a/packages/@aws-cdk/aws-amazonmq/package.json +++ b/packages/@aws-cdk/aws-amazonmq/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-amplify/package.json b/packages/@aws-cdk/aws-amplify/package.json index 49f6496d7ae0f..1fd6faa048cb4 100644 --- a/packages/@aws-cdk/aws-amplify/package.json +++ b/packages/@aws-cdk/aws-amplify/package.json @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-apigateway/package.json b/packages/@aws-cdk/aws-apigateway/package.json index 976a0d8cad79f..109bb8bbf704a 100644 --- a/packages/@aws-cdk/aws-apigateway/package.json +++ b/packages/@aws-cdk/aws-apigateway/package.json @@ -112,7 +112,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "nyc": { "exclude": [ diff --git a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json index 70cd006b9282b..49b9cbb3cd2ae 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-apigatewayv2/README.md b/packages/@aws-cdk/aws-apigatewayv2/README.md index 1fda5a731ff40..297ec5ce2bfdb 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/README.md +++ b/packages/@aws-cdk/aws-apigatewayv2/README.md @@ -95,13 +95,7 @@ httpApi.addRoutes({ }); ``` -The URL to the endpoint can be retrieved via the `apiEndpoint` attribute. By default this URL is enabled for clients. Use `disableExecuteApiEndpoint` to disable it. - -```ts -const httpApi = new HttpApi(stack, 'HttpApi', { - disableExecuteApiEndpoint: true, -}); -``` +The URL to the endpoint can be retrieved via the `apiEndpoint` attribute. The `defaultIntegration` option while defining HTTP APIs lets you create a default catch-all integration that is matched when a client reaches a route that is not explicitly defined. diff --git a/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts b/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts index 5ced1f20f18a0..cc2e646443f0e 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/lib/http/api.ts @@ -128,15 +128,6 @@ export interface HttpApiProps { * @default - no default domain mapping configured. meaningless if `createDefaultStage` is `false`. */ readonly defaultDomainMapping?: DefaultDomainMappingOptions; - - /** - * Specifies whether clients can invoke your API using the default endpoint. - * By default, clients can invoke your API with the default - * `https://{api_id}.execute-api.{region}.amazonaws.com` endpoint. Enable - * this if you would like clients to use your custom domain name. - * @default false execute-api endpoint enabled. - */ - readonly disableExecuteApiEndpoint?: boolean; } /** @@ -292,24 +283,17 @@ export class HttpApi extends HttpApiBase { */ public readonly httpApiName?: string; public readonly httpApiId: string; - - /** - * Specifies whether clients can invoke this HTTP API by using the default execute-api endpoint. - */ - public readonly disableExecuteApiEndpoint?: boolean; + public readonly apiEndpoint: string; /** * default stage of the api resource */ public readonly defaultStage: HttpStage | undefined; - private readonly _apiEndpoint: string; - constructor(scope: Construct, id: string, props?: HttpApiProps) { super(scope, id); this.httpApiName = props?.apiName ?? id; - this.disableExecuteApiEndpoint = props?.disableExecuteApiEndpoint; let corsConfiguration: CfnApi.CorsProperty | undefined; if (props?.corsPreflight) { @@ -340,12 +324,11 @@ export class HttpApi extends HttpApiBase { protocolType: 'HTTP', corsConfiguration, description: props?.description, - disableExecuteApiEndpoint: this.disableExecuteApiEndpoint, }; const resource = new CfnApi(this, 'Resource', apiProps); this.httpApiId = resource.ref; - this._apiEndpoint = resource.attrApiEndpoint; + this.apiEndpoint = resource.attrApiEndpoint; if (props?.defaultIntegration) { new HttpRoute(this, 'DefaultRoute', { @@ -374,16 +357,6 @@ export class HttpApi extends HttpApiBase { } } - /** - * Get the default endpoint for this API. - */ - public get apiEndpoint(): string { - if (this.disableExecuteApiEndpoint) { - throw new Error('apiEndpoint is not accessible when disableExecuteApiEndpoint is set to true.'); - } - return this._apiEndpoint; - } - /** * Get the URL to the default stage of this API. * Returns `undefined` if `createDefaultStage` is unset. diff --git a/packages/@aws-cdk/aws-apigatewayv2/package.json b/packages/@aws-cdk/aws-apigatewayv2/package.json index 47d08c5f18ce5..2273b4773d06f 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts b/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts index 70bc45000ddec..b061f613f4ca3 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/test/http/api.test.ts @@ -215,19 +215,6 @@ describe('HttpApi', () => { }); }); - test('disableExecuteApiEndpoint is enabled', () => { - const stack = new Stack(); - new HttpApi(stack, 'api', { - disableExecuteApiEndpoint: true, - }); - - expect(stack).toHaveResource('AWS::ApiGatewayV2::Api', { - Name: 'api', - ProtocolType: 'HTTP', - DisableExecuteApiEndpoint: true, - }); - }); - test('can add a vpc links', () => { // GIVEN const stack = new Stack(); @@ -274,17 +261,6 @@ describe('HttpApi', () => { expect(api.apiEndpoint).toBeDefined(); }); - test('throws when accessing apiEndpoint and disableExecuteApiEndpoint is true', () => { - const stack = new Stack(); - const api = new HttpApi(stack, 'api', { - disableExecuteApiEndpoint: true, - }); - - expect(() => api.apiEndpoint).toThrow( - /apiEndpoint is not accessible when disableExecuteApiEndpoint is set to true./, - ); - }); - test('apiEndpoint for imported', () => { const stack = new Stack(); const api = HttpApi.fromHttpApiAttributes(stack, 'imported', { httpApiId: 'api-1234' }); diff --git a/packages/@aws-cdk/aws-appconfig/package.json b/packages/@aws-cdk/aws-appconfig/package.json index a5a4ff2cffeaf..2b53f982ac627 100644 --- a/packages/@aws-cdk/aws-appconfig/package.json +++ b/packages/@aws-cdk/aws-appconfig/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appflow/package.json b/packages/@aws-cdk/aws-appflow/package.json index c4c9e0656ece7..77ecabd32dfc7 100644 --- a/packages/@aws-cdk/aws-appflow/package.json +++ b/packages/@aws-cdk/aws-appflow/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts index 092609125e70f..1949e53f771e2 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts +++ b/packages/@aws-cdk/aws-applicationautoscaling/lib/step-scaling-policy.ts @@ -57,7 +57,7 @@ export interface StepScalingPolicyProps extends BasicStepScalingPolicyProps { } /** - * Define a scaling strategy which scales depending on absolute values of some metric. + * Define a acaling strategy which scales depending on absolute values of some metric. * * You can specify the scaling behavior for various values of the metric. * diff --git a/packages/@aws-cdk/aws-applicationautoscaling/package.json b/packages/@aws-cdk/aws-applicationautoscaling/package.json index 9fdb2bc837af4..a05d2c8d7a96b 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/package.json +++ b/packages/@aws-cdk/aws-applicationautoscaling/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "nyc": { "branches": 65, diff --git a/packages/@aws-cdk/aws-applicationinsights/package.json b/packages/@aws-cdk/aws-applicationinsights/package.json index 143f9273c9f58..046e2e03399c8 100644 --- a/packages/@aws-cdk/aws-applicationinsights/package.json +++ b/packages/@aws-cdk/aws-applicationinsights/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appmesh/README.md b/packages/@aws-cdk/aws-appmesh/README.md index 2253b12d2987d..9a4fcddf386cc 100644 --- a/packages/@aws-cdk/aws-appmesh/README.md +++ b/packages/@aws-cdk/aws-appmesh/README.md @@ -241,44 +241,6 @@ The `backends` property can be added with `node.addBackend()`. We define a virtu The `backendsDefaultClientPolicy` property are added to the node while creating the virtual node. These are virtual node's service backends client policy defaults. -## Adding TLS to a listener - -The `tlsCertificate` property can be added to a Virtual Node listener or Virtual Gateway listener to add TLS configuration. -A certificate from AWS Certificate Manager can be incorporated or a customer provided certificate can be specified with a `certificateChain` path file and a `privateKey` file path. - -```typescript -import * as certificatemanager from '@aws-cdk/aws-certificatemanager'; - -// A Virtual Node with listener TLS from an ACM provided certificate -const cert = new certificatemanager.Certificate(this, 'cert', {...}); - -const node = new appmesh.VirtualNode(stack, 'node', { - mesh, - dnsHostName: 'node', - listeners: [appmesh.VirtualNodeListener.grpc({ - port: 80, - tlsCertificate: appmesh.TlsCertificate.acm({ - certificate: cert, - tlsMode: TlsMode.STRICT, - }), - })], -}); - -// A Virtual Gateway with listener TLS from a customer provided file certificate -const gateway = new appmesh.VirtualGateway(this, 'gateway', { - mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.grpc({ - port: 8080, - tlsCertificate: appmesh.TlsCertificate.file({ - certificateChain: 'path/to/certChain', - privateKey: 'path/to/privateKey', - tlsMode: TlsMode.STRICT, - }), - })], - virtualGatewayName: 'gateway', -}); -``` - ## Adding a Route A `route` is associated with a virtual router, and it's used to match requests for a virtual router and distribute traffic accordingly to its associated virtual nodes. diff --git a/packages/@aws-cdk/aws-appmesh/lib/index.ts b/packages/@aws-cdk/aws-appmesh/lib/index.ts index 1f5ca87def34d..a10ef54aa977b 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/index.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/index.ts @@ -5,7 +5,6 @@ export * from './route'; export * from './service-discovery'; export * from './route-spec'; export * from './shared-interfaces'; -export * from './tls-certificate'; export * from './virtual-node'; export * from './virtual-router'; export * from './virtual-router-listener'; diff --git a/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts b/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts index 5793bbf746eda..91884cecb2550 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/service-discovery.ts @@ -2,6 +2,7 @@ import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; + /** * Represents the properties needed to define CloudMap Service Discovery */ diff --git a/packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts b/packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts deleted file mode 100644 index 8fde7e8b7694f..0000000000000 --- a/packages/@aws-cdk/aws-appmesh/lib/tls-certificate.ts +++ /dev/null @@ -1,173 +0,0 @@ -import * as acm from '@aws-cdk/aws-certificatemanager'; -import { Construct } from 'constructs'; -import { CfnVirtualNode } from './appmesh.generated'; - -/** - * Enum of supported TLS modes - */ -export enum TlsMode { - /** - * Only accept encrypted traffic - */ - STRICT = 'STRICT', - - /** - * Accept encrypted and plaintext traffic. - */ - PERMISSIVE = 'PERMISSIVE', - - /** - * TLS is disabled, only accept plaintext traffic. - */ - DISABLED = 'DISABLED', -} - -/** - * A wrapper for the tls config returned by {@link TlsCertificate.bind} - */ -export interface TlsCertificateConfig { - /** - * The CFN shape for a listener TLS certificate - */ - readonly tlsCertificate: CfnVirtualNode.ListenerTlsCertificateProperty, - - /** - * The TLS mode. - */ - readonly tlsMode: TlsMode; -} - -/** - * ACM Certificate Properties - */ -export interface AcmCertificateOptions { - /** - * The TLS mode. - */ - readonly tlsMode: TlsMode; - - /** - * The ACM certificate - */ - readonly certificate: acm.ICertificate; -} - -/** - * File Certificate Properties - */ -export interface FileCertificateOptions { - /** - * The TLS mode. - */ - readonly tlsMode: TlsMode; - - /** - * The file path of the certificate chain file. - */ - readonly certificateChainPath: string; - - /** - * The file path of the private key file. - */ - readonly privateKeyPath: string; -} - -/** - * Represents a TLS certificate - */ -export abstract class TlsCertificate { - /** - * Returns an File TLS Certificate - */ - public static file(props: FileCertificateOptions): TlsCertificate { - return new FileTlsCertificate(props); - } - - /** - * Returns an ACM TLS Certificate - */ - public static acm(props: AcmCertificateOptions): TlsCertificate { - return new AcmTlsCertificate(props); - } - - /** - * Returns TLS certificate based provider. - */ - public abstract bind(_scope: Construct): TlsCertificateConfig; - -} - -/** - * Represents a ACM provided TLS certificate - */ -class AcmTlsCertificate extends TlsCertificate { - /** - * The TLS mode. - * - * @default - TlsMode.DISABLED - */ - readonly tlsMode: TlsMode; - - /** - * The ARN of the ACM certificate - */ - readonly acmCertificate: acm.ICertificate; - - constructor(props: AcmCertificateOptions) { - super(); - this.tlsMode = props.tlsMode; - this.acmCertificate = props.certificate; - } - - bind(_scope: Construct): TlsCertificateConfig { - return { - tlsCertificate: { - acm: { - certificateArn: this.acmCertificate.certificateArn, - }, - }, - tlsMode: this.tlsMode, - }; - } -} - -/** - * Represents a file provided TLS certificate - */ -class FileTlsCertificate extends TlsCertificate { - /** - * The TLS mode. - * - * @default - TlsMode.DISABLED - */ - readonly tlsMode: TlsMode; - - /** - * The file path of the certificate chain file. - */ - readonly certificateChain: string; - - /** - * The file path of the private key file. - */ - readonly privateKey: string; - - constructor(props: FileCertificateOptions) { - super(); - this.tlsMode = props.tlsMode; - this.certificateChain = props.certificateChainPath; - this.privateKey = props.privateKeyPath; - } - - bind(_scope: Construct): TlsCertificateConfig { - return { - tlsCertificate: { - file: { - certificateChain: this.certificateChain, - privateKey: this.privateKey, - }, - }, - tlsMode: this.tlsMode, - }; - } -} diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts index 9428b2fd41748..0fdcbbf7e256a 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-gateway-listener.ts @@ -3,7 +3,6 @@ import { Construct } from 'constructs'; import { CfnVirtualGateway } from './appmesh.generated'; import { validateHealthChecks } from './private/utils'; import { HealthCheck, Protocol } from './shared-interfaces'; -import { TlsCertificate, TlsCertificateConfig } from './tls-certificate'; /** * Represents the properties needed to define HTTP Listeners for a VirtualGateway @@ -22,13 +21,6 @@ export interface HttpGatewayListenerOptions { * @default - no healthcheck */ readonly healthCheck?: HealthCheck; - - /** - * Represents the configuration for enabling TLS on a listener - * - * @default - none - */ - readonly tlsCertificate?: TlsCertificate; } /** @@ -48,13 +40,6 @@ export interface GrpcGatewayListenerOptions { * @default - no healthcheck */ readonly healthCheck?: HealthCheck; - - /** - * Represents the listener certificate - * - * @default - none - */ - readonly tlsCertificate?: TlsCertificate; } /** @@ -64,7 +49,7 @@ export interface VirtualGatewayListenerConfig { /** * Single listener config for a VirtualGateway */ - readonly listener: CfnVirtualGateway.VirtualGatewayListenerProperty; + readonly listener: CfnVirtualGateway.VirtualGatewayListenerProperty, } /** @@ -75,21 +60,21 @@ export abstract class VirtualGatewayListener { * Returns an HTTP Listener for a VirtualGateway */ public static http(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { - return new VirtualGatewayListenerImpl(Protocol.HTTP, options.healthCheck, options.port, options.tlsCertificate); + return new HttpGatewayListener(options); } /** * Returns an HTTP2 Listener for a VirtualGateway */ public static http2(options: HttpGatewayListenerOptions = {}): VirtualGatewayListener { - return new VirtualGatewayListenerImpl(Protocol.HTTP2, options.healthCheck, options.port, options.tlsCertificate); + return new Http2GatewayListener(options); } /** * Returns a GRPC Listener for a VirtualGateway */ public static grpc(options: GrpcGatewayListenerOptions = {}): VirtualGatewayListener { - return new VirtualGatewayListenerImpl(Protocol.GRPC, options.healthCheck, options.port, options.tlsCertificate); + return new GrpcGatewayListener(options); } /** @@ -102,21 +87,37 @@ export abstract class VirtualGatewayListener { /** * Represents the properties needed to define an HTTP Listener for a VirtualGateway */ -class VirtualGatewayListenerImpl extends VirtualGatewayListener { +class HttpGatewayListener extends VirtualGatewayListener { + /** + * Port to listen for connections on + * + * @default - 8080 + */ + readonly port: number; - constructor(private readonly protocol: Protocol, - private readonly healthCheck: HealthCheck | undefined, - private readonly port: number = 8080, - private readonly tlsCertificate: TlsCertificate | undefined) { + /** + * Health checking strategy upstream nodes should use when communicating with the listener + * + * @default - no healthcheck + */ + readonly healthCheck?: HealthCheck; + + /** + * Protocol the listener implements + */ + protected protocol: Protocol = Protocol.HTTP; + + constructor(options: HttpGatewayListenerOptions = {}) { super(); + this.port = options.port ? options.port : 8080; + this.healthCheck = options.healthCheck; } /** * Called when the GatewayListener type is initialized. Can be used to enforce * mutual exclusivity */ - public bind(scope: Construct): VirtualGatewayListenerConfig { - const tlsConfig = this.tlsCertificate?.bind(scope); + public bind(_scope: Construct): VirtualGatewayListenerConfig { return { listener: { portMapping: { @@ -124,25 +125,69 @@ class VirtualGatewayListenerImpl extends VirtualGatewayListener { protocol: this.protocol, }, healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, - tls: tlsConfig ? renderTls(tlsConfig) : undefined, }, }; } +} +/** +* Represents the properties needed to define an HTTP2 Listener for a VirtualGateway +*/ +class Http2GatewayListener extends HttpGatewayListener { + constructor(options: HttpGatewayListenerOptions = {}) { + super(options); + this.protocol = Protocol.HTTP2; + } } /** - * Renders the TLS config for a listener + * Represents the properties needed to define a GRPC Listener for Virtual Gateway */ -function renderTls(tlsCertificateConfig: TlsCertificateConfig): CfnVirtualGateway.VirtualGatewayListenerTlsProperty { - return { - certificate: tlsCertificateConfig.tlsCertificate, - mode: tlsCertificateConfig.tlsMode.toString(), - }; +class GrpcGatewayListener extends VirtualGatewayListener { + /** + * Port to listen for connections on + * + * @default - 8080 + */ + readonly port: number; + + /** + * Health checking strategy upstream nodes should use when communicating with the listener + * + * @default - no healthcheck + */ + readonly healthCheck?: HealthCheck; + + /** + * Protocol the listener implements + */ + protected protocol: Protocol = Protocol.GRPC; + + constructor(options: HttpGatewayListenerOptions = {}) { + super(); + this.port = options.port ? options.port : 8080; + this.healthCheck = options.healthCheck; + } + + /** + * Called when the GatewayListener type is initialized. Can be used to enforce + * mutual exclusivity + */ + public bind(_scope: Construct): VirtualGatewayListenerConfig { + return { + listener: { + portMapping: { + port: this.port, + protocol: Protocol.GRPC, + }, + healthCheck: this.healthCheck ? renderHealthCheck(this.healthCheck, this.protocol, this.port): undefined, + }, + }; + } } -function renderHealthCheck(hc: HealthCheck, listenerProtocol: Protocol, - listenerPort: number): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty { +function renderHealthCheck( + hc: HealthCheck, listenerProtocol: Protocol, listenerPort: number): CfnVirtualGateway.VirtualGatewayHealthCheckPolicyProperty { if (hc.protocol === Protocol.TCP) { throw new Error('TCP health checks are not permitted for gateway listeners'); diff --git a/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts b/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts index f918fb9443228..af690970ab192 100644 --- a/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts +++ b/packages/@aws-cdk/aws-appmesh/lib/virtual-node-listener.ts @@ -3,7 +3,6 @@ import { Construct } from 'constructs'; import { CfnVirtualNode } from './appmesh.generated'; import { validateHealthChecks } from './private/utils'; import { HealthCheck, Protocol, HttpTimeout, GrpcTimeout, TcpTimeout } from './shared-interfaces'; -import { TlsCertificate, TlsCertificateConfig } from './tls-certificate'; /** * Properties for a VirtualNode listener @@ -32,13 +31,6 @@ interface VirtualNodeListenerCommonOptions { * @default - no healthcheck */ readonly healthCheck?: HealthCheck; - - /** - * Represents the configuration for enabling TLS on a listener - * - * @default - none - */ - readonly tlsCertificate?: TlsCertificate; } /** @@ -85,28 +77,28 @@ export abstract class VirtualNodeListener { * Returns an HTTP Listener for a VirtualNode */ public static http(props: HttpVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.HTTP, props.healthCheck, props.timeout, props.port, props.tlsCertificate); + return new VirtualNodeListenerImpl(Protocol.HTTP, props.healthCheck, props.timeout, props.port); } /** * Returns an HTTP2 Listener for a VirtualNode */ public static http2(props: HttpVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.HTTP2, props.healthCheck, props.timeout, props.port, props.tlsCertificate); + return new VirtualNodeListenerImpl(Protocol.HTTP2, props.healthCheck, props.timeout, props.port); } /** * Returns an GRPC Listener for a VirtualNode */ public static grpc(props: GrpcVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.GRPC, props.healthCheck, props.timeout, props.port, props.tlsCertificate); + return new VirtualNodeListenerImpl(Protocol.GRPC, props.healthCheck, props.timeout, props.port); } /** * Returns an TCP Listener for a VirtualNode */ public static tcp(props: TcpVirtualNodeListenerOptions = {}): VirtualNodeListener { - return new VirtualNodeListenerImpl(Protocol.TCP, props.healthCheck, props.timeout, props.port, props.tlsCertificate); + return new VirtualNodeListenerImpl(Protocol.TCP, props.healthCheck, props.timeout, props.port); } /** @@ -120,11 +112,9 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { constructor(private readonly protocol: Protocol, private readonly healthCheck: HealthCheck | undefined, private readonly timeout: HttpTimeout | undefined, - private readonly port: number = 8080, - private readonly tlsCertificate: TlsCertificate | undefined) { super(); } + private readonly port: number = 8080) { super(); } - public bind(scope: Construct): VirtualNodeListenerConfig { - const tlsConfig = this.tlsCertificate?.bind(scope); + public bind(_scope: Construct): VirtualNodeListenerConfig { return { listener: { portMapping: { @@ -133,21 +123,10 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { }, healthCheck: this.healthCheck ? this.renderHealthCheck(this.healthCheck) : undefined, timeout: this.timeout ? this.renderTimeout(this.timeout) : undefined, - tls: tlsConfig ? this.renderTls(tlsConfig) : undefined, }, }; } - /** - * Renders the TLS config for a listener - */ - private renderTls(tlsCertificateConfig: TlsCertificateConfig): CfnVirtualNode.ListenerTlsProperty { - return { - certificate: tlsCertificateConfig.tlsCertificate, - mode: tlsCertificateConfig.tlsMode.toString(), - }; - } - private renderHealthCheck(hc: HealthCheck): CfnVirtualNode.HealthCheckProperty | undefined { if (hc === undefined) { return undefined; } @@ -189,4 +168,3 @@ class VirtualNodeListenerImpl extends VirtualNodeListener { }); } } - diff --git a/packages/@aws-cdk/aws-appmesh/package.json b/packages/@aws-cdk/aws-appmesh/package.json index b2dd882828beb..d684ac2641dc2 100644 --- a/packages/@aws-cdk/aws-appmesh/package.json +++ b/packages/@aws-cdk/aws-appmesh/package.json @@ -88,7 +88,6 @@ }, "dependencies": { "@aws-cdk/aws-acmpca": "0.0.0", - "@aws-cdk/aws-certificatemanager": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", @@ -97,7 +96,6 @@ }, "peerDependencies": { "@aws-cdk/aws-acmpca": "0.0.0", - "@aws-cdk/aws-certificatemanager": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-servicediscovery": "0.0.0", @@ -105,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json index db9277d071432..e642633387206 100644 --- a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json +++ b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.expected.json @@ -649,17 +649,6 @@ "VirtualServiceName": "service1.domain.local" } }, - "cert56CA94EB": { - "Type": "AWS::CertificateManager::Certificate", - "Properties": { - "DomainName":"node1.domain.local", - "DomainValidationOptions": [{ - "DomainName":"node1.domain.local", - "ValidationDomain":"local" - }], - "ValidationMethod": "EMAIL" - } - }, "meshnode726C787D": { "Type": "AWS::AppMesh::VirtualNode", "Properties": { @@ -706,16 +695,6 @@ "PortMapping": { "Port": 8080, "Protocol": "http" - }, - "TLS": { - "Certificate": { - "ACM": { - "CertificateArn": { - "Ref": "cert56CA94EB" - } - } - }, - "Mode": "STRICT" } } ], @@ -1040,15 +1019,6 @@ "PortMapping": { "Port": 443, "Protocol": "http" - }, - "TLS": { - "Certificate": { - "File": { - "CertificateChain": "path/to/certChain", - "PrivateKey": "path/to/privateKey" - } - }, - "Mode": "STRICT" } } ] diff --git a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts index 730418aef7970..2f1884b3f7e63 100644 --- a/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts +++ b/packages/@aws-cdk/aws-appmesh/test/integ.mesh.ts @@ -1,5 +1,4 @@ import * as acmpca from '@aws-cdk/aws-acmpca'; -import * as acm from '@aws-cdk/aws-certificatemanager'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import * as cdk from '@aws-cdk/core'; @@ -30,10 +29,6 @@ const virtualService = mesh.addVirtualService('service', { virtualServiceName: 'service1.domain.local', }); -const cert = new acm.Certificate(stack, 'cert', { - domainName: `node1.${namespace.namespaceName}`, -}); - const node = mesh.addVirtualNode('node', { serviceDiscovery: appmesh.ServiceDiscovery.dns(`node1.${namespace.namespaceName}`), listeners: [appmesh.VirtualNodeListener.http({ @@ -41,10 +36,6 @@ const node = mesh.addVirtualNode('node', { healthyThreshold: 3, path: '/check-path', }, - tlsCertificate: appmesh.TlsCertificate.acm({ - certificate: cert, - tlsMode: appmesh.TlsMode.STRICT, - }), })], backends: [ virtualService, @@ -164,11 +155,6 @@ new appmesh.VirtualGateway(stack, 'gateway2', { healthCheck: { interval: cdk.Duration.seconds(10), }, - tlsCertificate: appmesh.TlsCertificate.file({ - certificateChainPath: 'path/to/certChain', - privateKeyPath: 'path/to/privateKey', - tlsMode: appmesh.TlsMode.STRICT, - }), })], }); diff --git a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts index 7b4a563c90d34..6207e49ce0be1 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.virtual-gateway.ts @@ -1,7 +1,7 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; -import * as acm from '@aws-cdk/aws-certificatemanager'; import * as cdk from '@aws-cdk/core'; import { Test } from 'nodeunit'; + import * as appmesh from '../lib'; export = { @@ -153,142 +153,6 @@ export = { })); test.done(); }, - - 'with an http listener with a TLS certificate from ACM'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - - // WHEN - const mesh = new appmesh.Mesh(stack, 'mesh', { - meshName: 'test-mesh', - }); - - const cert = new acm.Certificate(stack, 'cert', { - domainName: '', - }); - - new appmesh.VirtualGateway(stack, 'testGateway', { - virtualGatewayName: 'test-gateway', - mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.http({ - port: 8080, - tlsCertificate: appmesh.TlsCertificate.acm({ - tlsMode: appmesh.TlsMode.STRICT, - certificate: cert, - }), - })], - }); - - // THEN - expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualGateway', { - Spec: { - Listeners: [ - { - TLS: { - Mode: appmesh.TlsMode.STRICT, - Certificate: { - ACM: { - CertificateArn: { - Ref: 'cert56CA94EB', - }, - }, - }, - }, - }, - ], - }, - })); - - test.done(); - }, - - 'with an grpc listener with a TLS certificate from file'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - - // WHEN - const mesh = new appmesh.Mesh(stack, 'mesh', { - meshName: 'test-mesh', - }); - - new appmesh.VirtualGateway(stack, 'testGateway', { - virtualGatewayName: 'test-gateway', - mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.grpc({ - port: 8080, - tlsCertificate: appmesh.TlsCertificate.file({ - certificateChainPath: 'path/to/certChain', - privateKeyPath: 'path/to/privateKey', - tlsMode: appmesh.TlsMode.STRICT, - }), - })], - }); - - // THEN - expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualGateway', { - Spec: { - Listeners: [ - { - TLS: { - Mode: appmesh.TlsMode.STRICT, - Certificate: { - File: { - CertificateChain: 'path/to/certChain', - PrivateKey: 'path/to/privateKey', - }, - }, - }, - }, - ], - }, - })); - - test.done(); - }, - - 'with an grpc listener with the TLS mode permissive'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - - // WHEN - const mesh = new appmesh.Mesh(stack, 'mesh', { - meshName: 'test-mesh', - }); - - new appmesh.VirtualGateway(stack, 'testGateway', { - virtualGatewayName: 'test-gateway', - mesh: mesh, - listeners: [appmesh.VirtualGatewayListener.grpc({ - port: 8080, - tlsCertificate: appmesh.TlsCertificate.file({ - certificateChainPath: 'path/to/certChain', - privateKeyPath: 'path/to/privateKey', - tlsMode: appmesh.TlsMode.PERMISSIVE, - }), - })], - }); - - // THEN - expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualGateway', { - Spec: { - Listeners: [ - { - TLS: { - Mode: appmesh.TlsMode.PERMISSIVE, - Certificate: { - File: { - CertificateChain: 'path/to/certChain', - PrivateKey: 'path/to/privateKey', - }, - }, - }, - }, - ], - }, - })); - - test.done(); - }, }, 'When adding a gateway route to existing VirtualGateway ': { diff --git a/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts b/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts index 9fb05931a2a44..ffc7e60107ba1 100644 --- a/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts +++ b/packages/@aws-cdk/aws-appmesh/test/test.virtual-node.ts @@ -1,6 +1,5 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as acmpca from '@aws-cdk/aws-acmpca'; -import * as acm from '@aws-cdk/aws-certificatemanager'; import * as cdk from '@aws-cdk/core'; import { Test } from 'nodeunit'; import * as appmesh from '../lib'; @@ -358,149 +357,7 @@ export = { test.done(); }, }, - - 'when a grpc listener is added with a TLS certificate from ACM': { - 'the listener should include the TLS configuration'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - - // WHEN - const mesh = new appmesh.Mesh(stack, 'mesh', { - meshName: 'test-mesh', - }); - - const cert = new acm.Certificate(stack, 'cert', { - domainName: '', - }); - - new appmesh.VirtualNode(stack, 'test-node', { - mesh, - listeners: [appmesh.VirtualNodeListener.grpc({ - port: 80, - tlsCertificate: appmesh.TlsCertificate.acm({ - certificate: cert, - tlsMode: appmesh.TlsMode.STRICT, - }), - }, - )], - }); - - // THEN - - expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualNode', { - Spec: { - Listeners: [ - { - TLS: { - Mode: appmesh.TlsMode.STRICT, - Certificate: { - ACM: { - CertificateArn: { - Ref: 'cert56CA94EB', - }, - }, - }, - }, - }, - ], - }, - })); - - test.done(); - }, - }, - - 'when an http listener is added with a TLS certificate from file': { - 'the listener should include the TLS configuration'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - - // WHEN - const mesh = new appmesh.Mesh(stack, 'mesh', { - meshName: 'test-mesh', - }); - - new appmesh.VirtualNode(stack, 'test-node', { - mesh, - listeners: [appmesh.VirtualNodeListener.http({ - port: 80, - tlsCertificate: appmesh.TlsCertificate.file({ - certificateChainPath: 'path/to/certChain', - privateKeyPath: 'path/to/privateKey', - tlsMode: appmesh.TlsMode.STRICT, - }), - })], - }); - - // THEN - expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualNode', { - Spec: { - Listeners: [ - { - TLS: { - Mode: appmesh.TlsMode.STRICT, - Certificate: { - File: { - CertificateChain: 'path/to/certChain', - PrivateKey: 'path/to/privateKey', - }, - }, - }, - }, - ], - }, - })); - - test.done(); - }, - }, - - 'when an http listener is added with the TLS mode permissive': { - 'the listener should include the TLS configuration'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - - // WHEN - const mesh = new appmesh.Mesh(stack, 'mesh', { - meshName: 'test-mesh', - }); - - new appmesh.VirtualNode(stack, 'test-node', { - mesh, - listeners: [appmesh.VirtualNodeListener.http({ - port: 80, - tlsCertificate: appmesh.TlsCertificate.file({ - certificateChainPath: 'path/to/certChain', - privateKeyPath: 'path/to/privateKey', - tlsMode: appmesh.TlsMode.PERMISSIVE, - }), - })], - }); - - // THEN - expect(stack).to(haveResourceLike('AWS::AppMesh::VirtualNode', { - Spec: { - Listeners: [ - { - TLS: { - Mode: appmesh.TlsMode.PERMISSIVE, - Certificate: { - File: { - CertificateChain: 'path/to/certChain', - PrivateKey: 'path/to/privateKey', - }, - }, - }, - }, - ], - }, - })); - - test.done(); - }, - }, }, - 'Can import Virtual Nodes using an ARN'(test: Test) { // GIVEN const stack = new cdk.Stack(); diff --git a/packages/@aws-cdk/aws-appstream/package.json b/packages/@aws-cdk/aws-appstream/package.json index bd25e2530059d..dc58f32d7dfe0 100644 --- a/packages/@aws-cdk/aws-appstream/package.json +++ b/packages/@aws-cdk/aws-appstream/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appsync/README.md b/packages/@aws-cdk/aws-appsync/README.md index 61c4e797f5bb4..794cff6db3cda 100644 --- a/packages/@aws-cdk/aws-appsync/README.md +++ b/packages/@aws-cdk/aws-appsync/README.md @@ -75,23 +75,20 @@ const demoTable = new db.Table(stack, 'DemoTable', { const demoDS = api.addDynamoDbDataSource('demoDataSource', demoTable); -// Resolver for the Query "getDemos" that scans the DynamoDb table and returns the entire list. +// Resolver for the Query "getDemos" that scans the DyanmoDb table and returns the entire list. demoDS.createResolver({ typeName: 'Query', fieldName: 'getDemos', - requestMappingTemplate: appsync.MappingTemplate.dynamoDbScanTable(), - responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultList(), + requestMappingTemplate: MappingTemplate.dynamoDbScanTable(), + responseMappingTemplate: MappingTemplate.dynamoDbResultList(), }); // Resolver for the Mutation "addDemo" that puts the item into the DynamoDb table. demoDS.createResolver({ typeName: 'Mutation', fieldName: 'addDemo', - requestMappingTemplate: appsync.MappingTemplate.dynamoDbPutItem( - appsync.PrimaryKey.partition('id').auto(), - appsync.Values.projecting('demo') - ), - responseMappingTemplate: appsync.MappingTemplate.dynamoDbResultItem(), + requestMappingTemplate: MappingTemplate.dynamoDbPutItem(PrimaryKey.partition('id').auto(), Values.projecting('demo')), + responseMappingTemplate: MappingTemplate.dynamoDbResultItem(), }); ``` diff --git a/packages/@aws-cdk/aws-appsync/lib/data-source.ts b/packages/@aws-cdk/aws-appsync/lib/data-source.ts index 0132de1534383..70e0576687de7 100644 --- a/packages/@aws-cdk/aws-appsync/lib/data-source.ts +++ b/packages/@aws-cdk/aws-appsync/lib/data-source.ts @@ -3,7 +3,7 @@ import { Grant, IGrantable, IPrincipal, IRole, Role, ServicePrincipal } from '@a import { IFunction } from '@aws-cdk/aws-lambda'; import { IDatabaseCluster } from '@aws-cdk/aws-rds'; import { ISecret } from '@aws-cdk/aws-secretsmanager'; -import { IResolvable, Lazy, Stack } from '@aws-cdk/core'; +import { IResolvable, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { BaseAppsyncFunctionProps, AppsyncFunction } from './appsync-function'; import { CfnDataSource } from './appsync.generated'; @@ -314,25 +314,17 @@ export class RdsDataSource extends BackedDataSource { relationalDatabaseConfig: { rdsHttpEndpointConfig: { awsRegion: props.databaseCluster.stack.region, - dbClusterIdentifier: Lazy.string({ - produce: () => { - return Stack.of(this).formatArn({ - service: 'rds', - resource: `cluster:${props.databaseCluster.clusterIdentifier}`, - }); - }, - }), + dbClusterIdentifier: props.databaseCluster.clusterIdentifier, awsSecretStoreArn: props.secretStore.secretArn, }, relationalDatabaseSourceType: 'RDS_HTTP_ENDPOINT', }, }); + props.secretStore.grantRead(this); const clusterArn = Stack.of(this).formatArn({ service: 'rds', resource: `cluster:${props.databaseCluster.clusterIdentifier}`, }); - props.secretStore.grantRead(this); - // Change to grant with RDS grant becomes implemented Grant.addToPrincipal({ grantee: this, diff --git a/packages/@aws-cdk/aws-appsync/package.json b/packages/@aws-cdk/aws-appsync/package.json index 1f4779edad008..675b7dd08f3a7 100644 --- a/packages/@aws-cdk/aws-appsync/package.json +++ b/packages/@aws-cdk/aws-appsync/package.json @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts b/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts index 97cea819de8f3..ba0d80d00037b 100644 --- a/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts +++ b/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts @@ -97,32 +97,6 @@ describe('Rds Data Source configuration', () => { }); }); - test('rds cluster arn saved to RdsHttpEndpointConfig', () => { - // WHEN - api.addRdsDataSource('ds', cluster, secret); - - // THEN - expect(stack).toHaveResourceLike('AWS::AppSync::DataSource', { - Type: 'RELATIONAL_DATABASE', - RelationalDatabaseConfig: { - RdsHttpEndpointConfig: { - AwsRegion: { Ref: 'AWS::Region' }, - AwsSecretStoreArn: { Ref: 'AuroraSecret41E6E877' }, - DbClusterIdentifier: { - 'Fn::Join': ['', ['arn:', - { Ref: 'AWS::Partition' }, - ':rds:', - { Ref: 'AWS::Region' }, - ':', - { Ref: 'AWS::AccountId' }, - ':cluster:', - { Ref: 'AuroraCluster23D869C0' }]], - }, - }, - }, - }); - }); - test('default configuration produces name identical to the id', () => { // WHEN api.addRdsDataSource('ds', cluster, secret); diff --git a/packages/@aws-cdk/aws-athena/package.json b/packages/@aws-cdk/aws-athena/package.json index 636e7e0db2440..60190909b1eb7 100644 --- a/packages/@aws-cdk/aws-athena/package.json +++ b/packages/@aws-cdk/aws-athena/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-auditmanager/.eslintrc.js b/packages/@aws-cdk/aws-auditmanager/.eslintrc.js deleted file mode 100644 index 61dd8dd001f63..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-auditmanager/.gitignore b/packages/@aws-cdk/aws-auditmanager/.gitignore deleted file mode 100644 index 62ebc95d75ce6..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*.js -*.js.map -*.d.ts -tsconfig.json -node_modules -*.generated.ts -dist -.jsii - -.LAST_BUILD -.nyc_output -coverage -.nycrc -.LAST_PACKAGE -*.snk -nyc.config.js -!.eslintrc.js -!jest.config.js -junit.xml diff --git a/packages/@aws-cdk/aws-auditmanager/.npmignore b/packages/@aws-cdk/aws-auditmanager/.npmignore deleted file mode 100644 index e4486030fcb17..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Don't include original .ts files when doing `npm pack` -*.ts -!*.d.ts -coverage -.nyc_output -*.tgz - -dist -.LAST_PACKAGE -.LAST_BUILD -!*.js - -# Include .jsii -!.jsii - -*.snk - -*.tsbuildinfo - -tsconfig.json - -.eslintrc.js -jest.config.js - -# exclude cdk artifacts -**/cdk.out -junit.xml -test/ diff --git a/packages/@aws-cdk/aws-auditmanager/LICENSE b/packages/@aws-cdk/aws-auditmanager/LICENSE deleted file mode 100644 index 28e4bdcec77ec..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/@aws-cdk/aws-auditmanager/NOTICE b/packages/@aws-cdk/aws-auditmanager/NOTICE deleted file mode 100644 index 5fc3826926b5b..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AWS Cloud Development Kit (AWS CDK) -Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-auditmanager/README.md b/packages/@aws-cdk/aws-auditmanager/README.md deleted file mode 100644 index ee34051ab78e3..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# AWS::AuditManager Construct Library - - ---- - -![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) - -> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use. -> -> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib - ---- - - - -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -```ts -import auditmanager = require('@aws-cdk/aws-auditmanager'); -``` diff --git a/packages/@aws-cdk/aws-auditmanager/jest.config.js b/packages/@aws-cdk/aws-auditmanager/jest.config.js deleted file mode 100644 index 54e28beb9798b..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/jest.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/jest.config'); -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-auditmanager/lib/index.ts b/packages/@aws-cdk/aws-auditmanager/lib/index.ts deleted file mode 100644 index f6234117e603f..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// AWS::AuditManager CloudFormation Resources: -export * from './auditmanager.generated'; diff --git a/packages/@aws-cdk/aws-auditmanager/package.json b/packages/@aws-cdk/aws-auditmanager/package.json deleted file mode 100644 index 6ba8246bf99e5..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "name": "@aws-cdk/aws-auditmanager", - "version": "0.0.0", - "description": "The CDK Construct Library for AWS::AuditManager", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "jsii": { - "outdir": "dist", - "projectReferences": true, - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.AuditManager", - "packageId": "Amazon.CDK.AWS.AuditManager", - "signAssembly": true, - "assemblyOriginatorKeyFile": "../../key.snk", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" - }, - "java": { - "package": "software.amazon.awscdk.services.auditmanager", - "maven": { - "groupId": "software.amazon.awscdk", - "artifactId": "auditmanager" - } - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 1" - ], - "distName": "aws-cdk.aws-auditmanager", - "module": "aws_cdk.aws_auditmanager" - } - } - }, - "repository": { - "type": "git", - "url": "https://github.com/aws/aws-cdk.git", - "directory": "packages/@aws-cdk/aws-auditmanager" - }, - "homepage": "https://github.com/aws/aws-cdk", - "scripts": { - "build": "cdk-build", - "watch": "cdk-watch", - "lint": "cdk-lint", - "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f", - "package": "cdk-package", - "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", - "build+test+package": "npm run build+test && npm run package", - "build+test": "npm run build && npm test", - "compat": "cdk-compat", - "gen": "cfn2ts", - "rosetta:extract": "yarn --silent jsii-rosetta extract" - }, - "cdk-build": { - "cloudformation": "AWS::AuditManager", - "jest": true, - "env": { - "AWSLINT_BASE_CONSTRUCT": "true" - } - }, - "keywords": [ - "aws", - "cdk", - "constructs", - "AWS::AuditManager", - "aws-auditmanager" - ], - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com", - "organization": true - }, - "license": "Apache-2.0", - "devDependencies": { - "@aws-cdk/assert": "0.0.0", - "cdk-build-tools": "0.0.0", - "cfn2ts": "0.0.0", - "pkglint": "0.0.0" - }, - "dependencies": { - "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" - }, - "peerDependencies": { - "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" - }, - "engines": { - "node": ">= 14.15.0" - }, - "stability": "experimental", - "maturity": "cfn-only", - "awscdkio": { - "announce": false - }, - "private": true -} diff --git a/packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts b/packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts deleted file mode 100644 index e394ef336bfb4..0000000000000 --- a/packages/@aws-cdk/aws-auditmanager/test/auditmanager.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@aws-cdk/assert/jest'; -import {} from '../lib'; - -test('No tests are specified for this package', () => { - expect(true).toBe(true); -}); diff --git a/packages/@aws-cdk/aws-autoscaling-common/package.json b/packages/@aws-cdk/aws-autoscaling-common/package.json index d2a4727f8dd5f..74ee22b8e4e68 100644 --- a/packages/@aws-cdk/aws-autoscaling-common/package.json +++ b/packages/@aws-cdk/aws-autoscaling-common/package.json @@ -106,7 +106,7 @@ ] }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index 817a72b2a57df..92243308c0f6f 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-autoscaling/package.json b/packages/@aws-cdk/aws-autoscaling/package.json index 866ab4faa891b..d3ae544c25854 100644 --- a/packages/@aws-cdk/aws-autoscaling/package.json +++ b/packages/@aws-cdk/aws-autoscaling/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-autoscalingplans/package.json b/packages/@aws-cdk/aws-autoscalingplans/package.json index 3471d9669f49d..dc3f19ca4eacb 100644 --- a/packages/@aws-cdk/aws-autoscalingplans/package.json +++ b/packages/@aws-cdk/aws-autoscalingplans/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-backup/package.json b/packages/@aws-cdk/aws-backup/package.json index aaab59716d22d..73e4aea43bad6 100644 --- a/packages/@aws-cdk/aws-backup/package.json +++ b/packages/@aws-cdk/aws-backup/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-batch/package.json b/packages/@aws-cdk/aws-batch/package.json index a0466afc56ced..1138c735829cb 100644 --- a/packages/@aws-cdk/aws-batch/package.json +++ b/packages/@aws-cdk/aws-batch/package.json @@ -103,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-budgets/package.json b/packages/@aws-cdk/aws-budgets/package.json index 14b8c8e6a27dd..9e6337dacca2e 100644 --- a/packages/@aws-cdk/aws-budgets/package.json +++ b/packages/@aws-cdk/aws-budgets/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-cassandra/package.json b/packages/@aws-cdk/aws-cassandra/package.json index 52e56a27d2e4d..260bf21b88421 100644 --- a/packages/@aws-cdk/aws-cassandra/package.json +++ b/packages/@aws-cdk/aws-cassandra/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ce/package.json b/packages/@aws-cdk/aws-ce/package.json index 846c609faa1f8..cea361aa5330e 100644 --- a/packages/@aws-cdk/aws-ce/package.json +++ b/packages/@aws-cdk/aws-ce/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-certificatemanager/package.json b/packages/@aws-cdk/aws-certificatemanager/package.json index 186844eba2905..1408d12da5030 100644 --- a/packages/@aws-cdk/aws-certificatemanager/package.json +++ b/packages/@aws-cdk/aws-certificatemanager/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-chatbot/package.json b/packages/@aws-cdk/aws-chatbot/package.json index fd0bd2e678b02..411d86b8decf6 100644 --- a/packages/@aws-cdk/aws-chatbot/package.json +++ b/packages/@aws-cdk/aws-chatbot/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-cloud9/package.json b/packages/@aws-cdk/aws-cloud9/package.json index f03ea8fc68eb4..75392c444cc7b 100644 --- a/packages/@aws-cdk/aws-cloud9/package.json +++ b/packages/@aws-cdk/aws-cloud9/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudformation/package.json b/packages/@aws-cdk/aws-cloudformation/package.json index 7d6b8ce021e9c..5eb0f585689bb 100644 --- a/packages/@aws-cdk/aws-cloudformation/package.json +++ b/packages/@aws-cdk/aws-cloudformation/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index 8ba4f39f0d7b3..2f54cd51caa60 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -74,7 +74,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-ec2": "0.0.0", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "pkglint": "0.0.0" @@ -95,7 +95,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index d75c587889e3d..eaee0e452a805 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -75,7 +75,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index 1d2e72f08a587..8a768f18b97c7 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -75,7 +75,7 @@ "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "0.0.0", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -112,7 +112,7 @@ ] }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index 0ec045589ab34..a500201df2b70 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-cloudwatch/package.json b/packages/@aws-cdk/aws-cloudwatch/package.json index ef6b44705ebc5..145245299dde3 100644 --- a/packages/@aws-cdk/aws-cloudwatch/package.json +++ b/packages/@aws-cdk/aws-cloudwatch/package.json @@ -115,7 +115,7 @@ ] }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-codeartifact/package.json b/packages/@aws-cdk/aws-codeartifact/package.json index af2f92dc4d913..f7ecfab89b381 100644 --- a/packages/@aws-cdk/aws-codeartifact/package.json +++ b/packages/@aws-cdk/aws-codeartifact/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codebuild/lib/project.ts b/packages/@aws-cdk/aws-codebuild/lib/project.ts index fe3ab4424220d..656772bd6b188 100644 --- a/packages/@aws-cdk/aws-codebuild/lib/project.ts +++ b/packages/@aws-cdk/aws-codebuild/lib/project.ts @@ -1431,8 +1431,6 @@ export class LinuxBuildImage implements IBuildImage { public static readonly STANDARD_3_0 = LinuxBuildImage.codeBuildImage('aws/codebuild/standard:3.0'); /** The `aws/codebuild/standard:4.0` build image. */ public static readonly STANDARD_4_0 = LinuxBuildImage.codeBuildImage('aws/codebuild/standard:4.0'); - /** The `aws/codebuild/standard:5.0` build image. */ - public static readonly STANDARD_5_0 = LinuxBuildImage.codeBuildImage('aws/codebuild/standard:5.0'); public static readonly AMAZON_LINUX_2 = LinuxBuildImage.codeBuildImage('aws/codebuild/amazonlinux2-x86_64-standard:1.0'); public static readonly AMAZON_LINUX_2_2 = LinuxBuildImage.codeBuildImage('aws/codebuild/amazonlinux2-x86_64-standard:2.0'); @@ -1773,10 +1771,8 @@ export interface BuildEnvironmentVariable { readonly type?: BuildEnvironmentVariableType; /** - * The value of the environment variable. - * For plain-text variables (the default), this is the literal value of variable. - * For SSM parameter variables, pass the name of the parameter here (`parameterName` property of `IParameter`). - * For SecretsManager variables secrets, pass the secret name here (`secretName` property of `ISecret`). + * The value of the environment variable (or the name of the parameter in + * the SSM parameter store.) */ readonly value: any; } diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index c6695504192d0..caa6ea540bf3b 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -81,7 +81,7 @@ "@aws-cdk/aws-sns": "0.0.0", "@aws-cdk/aws-sqs": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -126,7 +126,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index b6984776ef19a..0b0a1e59e0067 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -81,7 +81,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-sns": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-codedeploy/package.json b/packages/@aws-cdk/aws-codedeploy/package.json index 30f68f86a19a6..f148fda75d9a7 100644 --- a/packages/@aws-cdk/aws-codedeploy/package.json +++ b/packages/@aws-cdk/aws-codedeploy/package.json @@ -112,7 +112,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codeguruprofiler/package.json b/packages/@aws-cdk/aws-codeguruprofiler/package.json index 427d99cfccf4e..de619dff0c1ce 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/package.json +++ b/packages/@aws-cdk/aws-codeguruprofiler/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-codegurureviewer/package.json b/packages/@aws-cdk/aws-codegurureviewer/package.json index 9aa4f8c52be08..ff9b04bf1dcca 100644 --- a/packages/@aws-cdk/aws-codegurureviewer/package.json +++ b/packages/@aws-cdk/aws-codegurureviewer/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts index 0805ae2ab8cab..0273a1cafe827 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/s3/deploy-action.ts @@ -112,12 +112,6 @@ export class S3DeployAction extends Action { // pipeline needs permissions to write to the S3 bucket this.props.bucket.grantWrite(options.role); - if (this.props.accessControl !== undefined) { - // we need to modify the ACL settings of objects within the Bucket, - // so grant the Action's Role permissions to do that - this.props.bucket.grantPutAcl(options.role); - } - // the Action Role also needs to read from the Pipeline's bucket options.bucket.grantRead(options.role); diff --git a/packages/@aws-cdk/aws-codepipeline-actions/package.json b/packages/@aws-cdk/aws-codepipeline-actions/package.json index 7461f76edf534..d083acbf9cefd 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/package.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/package.json @@ -127,7 +127,7 @@ "case" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json index d37bdc0c6798c..d6bc02e90525c 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.expected.json @@ -12,9 +12,155 @@ }, "DeployBucket67E2C076": { "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, + "PipelineArtifactsBucketEncryptionKey01D58D69": { + "Type": "AWS::KMS::Key", + "Properties": { + "KeyPolicy": { + "Statement": [ + { + "Action": [ + "kms:Create*", + "kms:Describe*", + "kms:Enable*", + "kms:List*", + "kms:Put*", + "kms:Update*", + "kms:Revoke*", + "kms:Disable*", + "kms:Get*", + "kms:Delete*", + "kms:ScheduleKeyDeletion", + "kms:CancelKeyDeletion", + "kms:GenerateDataKey", + "kms:TagResource", + "kms:UntagResource" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineRoleD68726F7", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + "kms:Decrypt" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineSourceCodePipelineActionRoleC6F9E7F5", + "Arn" + ] + } + }, + "Resource": "*" + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey" + ], + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::GetAtt": [ + "PipelineDeployDeployActionCodePipelineActionRole1C288A60", + "Arn" + ] + } + }, + "Resource": "*" + } + ], + "Version": "2012-10-17" + } + }, "UpdateReplacePolicy": "Delete", "DeletionPolicy": "Delete" }, + "PipelineArtifactsBucketEncryptionKeyAlias5C510EEE": { + "Type": "AWS::KMS::Alias", + "Properties": { + "AliasName": "alias/codepipeline-awscdkcodepipelines3deploypipeline907bf1e7", + "TargetKeyId": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKey01D58D69", + "Arn" + ] + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "PipelineArtifactsBucket22248F97": { + "Type": "AWS::S3::Bucket", + "Properties": { + "BucketEncryption": { + "ServerSideEncryptionConfiguration": [ + { + "ServerSideEncryptionByDefault": { + "KMSMasterKeyID": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKey01D58D69", + "Arn" + ] + }, + "SSEAlgorithm": "aws:kms" + } + } + ] + }, + "PublicAccessBlockConfiguration": { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true + } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" + }, "PipelineRoleD68726F7": { "Type": "AWS::IAM::Role", "Properties": { @@ -50,7 +196,7 @@ "Resource": [ { "Fn::GetAtt": [ - "PipelineBucketB967BD35", + "PipelineArtifactsBucket22248F97", "Arn" ] }, @@ -60,7 +206,7 @@ [ { "Fn::GetAtt": [ - "PipelineBucketB967BD35", + "PipelineArtifactsBucket22248F97", "Arn" ] }, @@ -70,6 +216,22 @@ } ] }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey", + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKey01D58D69", + "Arn" + ] + } + }, { "Action": "sts:AssumeRole", "Effect": "Allow", @@ -179,8 +341,17 @@ } ], "ArtifactStore": { + "EncryptionKey": { + "Id": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKey01D58D69", + "Arn" + ] + }, + "Type": "KMS" + }, "Location": { - "Ref": "PipelineBucketB967BD35" + "Ref": "PipelineArtifactsBucket22248F97" }, "Type": "S3" } @@ -267,7 +438,7 @@ "Resource": [ { "Fn::GetAtt": [ - "PipelineBucketB967BD35", + "PipelineArtifactsBucket22248F97", "Arn" ] }, @@ -277,7 +448,7 @@ [ { "Fn::GetAtt": [ - "PipelineBucketB967BD35", + "PipelineArtifactsBucket22248F97", "Arn" ] }, @@ -286,6 +457,21 @@ ] } ] + }, + { + "Action": [ + "kms:Encrypt", + "kms:ReEncrypt*", + "kms:GenerateDataKey*", + "kms:Decrypt" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKey01D58D69", + "Arn" + ] + } } ], "Version": "2012-10-17" @@ -365,24 +551,6 @@ } ] }, - { - "Action": "s3:PutObjectAcl", - "Effect": "Allow", - "Resource": { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "DeployBucket67E2C076", - "Arn" - ] - }, - "/*" - ] - ] - } - }, { "Action": [ "s3:GetObject*", @@ -393,7 +561,7 @@ "Resource": [ { "Fn::GetAtt": [ - "PipelineBucketB967BD35", + "PipelineArtifactsBucket22248F97", "Arn" ] }, @@ -403,7 +571,7 @@ [ { "Fn::GetAtt": [ - "PipelineBucketB967BD35", + "PipelineArtifactsBucket22248F97", "Arn" ] }, @@ -412,6 +580,19 @@ ] } ] + }, + { + "Action": [ + "kms:Decrypt", + "kms:DescribeKey" + ], + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "PipelineArtifactsBucketEncryptionKey01D58D69", + "Arn" + ] + } } ], "Version": "2012-10-17" diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts index 5277170c0ca59..b012d6ff8aeb8 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-s3-deploy.ts @@ -19,12 +19,9 @@ const sourceAction = new cpactions.S3SourceAction({ bucketKey: 'key', }); -const deployBucket = new s3.Bucket(stack, 'DeployBucket', { - removalPolicy: cdk.RemovalPolicy.DESTROY, -}); +const deployBucket = new s3.Bucket(stack, 'DeployBucket', {}); new codepipeline.Pipeline(stack, 'Pipeline', { - artifactBucket: bucket, stages: [ { stageName: 'Source', diff --git a/packages/@aws-cdk/aws-codepipeline/package.json b/packages/@aws-cdk/aws-codepipeline/package.json index bf8f9fee5a456..26bce804351c9 100644 --- a/packages/@aws-cdk/aws-codepipeline/package.json +++ b/packages/@aws-cdk/aws-codepipeline/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codestar/package.json b/packages/@aws-cdk/aws-codestar/package.json index 7e71ddca2b7b9..56bac132e6acf 100644 --- a/packages/@aws-cdk/aws-codestar/package.json +++ b/packages/@aws-cdk/aws-codestar/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codestarconnections/package.json b/packages/@aws-cdk/aws-codestarconnections/package.json index ad88fe1cda03b..761c8e42b7df2 100644 --- a/packages/@aws-cdk/aws-codestarconnections/package.json +++ b/packages/@aws-cdk/aws-codestarconnections/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codestarnotifications/package.json b/packages/@aws-cdk/aws-codestarnotifications/package.json index 6b6ee628a1565..9c8feaf505dc3 100644 --- a/packages/@aws-cdk/aws-codestarnotifications/package.json +++ b/packages/@aws-cdk/aws-codestarnotifications/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 085ef0953d4b7..26064cc93dce1 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -104,7 +104,7 @@ "punycode" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-config/package.json b/packages/@aws-cdk/aws-config/package.json index 8c03cccbc41ef..5b8812acb1d8f 100644 --- a/packages/@aws-cdk/aws-config/package.json +++ b/packages/@aws-cdk/aws-config/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json index f516110f39116..6a42329c36617 100644 --- a/packages/@aws-cdk/aws-databrew/package.json +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-datapipeline/package.json b/packages/@aws-cdk/aws-datapipeline/package.json index f612b24e4bde1..377bace5f77f4 100644 --- a/packages/@aws-cdk/aws-datapipeline/package.json +++ b/packages/@aws-cdk/aws-datapipeline/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-datasync/.eslintrc.js b/packages/@aws-cdk/aws-datasync/.eslintrc.js deleted file mode 100644 index 61dd8dd001f63..0000000000000 --- a/packages/@aws-cdk/aws-datasync/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-datasync/.gitignore b/packages/@aws-cdk/aws-datasync/.gitignore deleted file mode 100644 index 62ebc95d75ce6..0000000000000 --- a/packages/@aws-cdk/aws-datasync/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*.js -*.js.map -*.d.ts -tsconfig.json -node_modules -*.generated.ts -dist -.jsii - -.LAST_BUILD -.nyc_output -coverage -.nycrc -.LAST_PACKAGE -*.snk -nyc.config.js -!.eslintrc.js -!jest.config.js -junit.xml diff --git a/packages/@aws-cdk/aws-datasync/.npmignore b/packages/@aws-cdk/aws-datasync/.npmignore deleted file mode 100644 index e4486030fcb17..0000000000000 --- a/packages/@aws-cdk/aws-datasync/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Don't include original .ts files when doing `npm pack` -*.ts -!*.d.ts -coverage -.nyc_output -*.tgz - -dist -.LAST_PACKAGE -.LAST_BUILD -!*.js - -# Include .jsii -!.jsii - -*.snk - -*.tsbuildinfo - -tsconfig.json - -.eslintrc.js -jest.config.js - -# exclude cdk artifacts -**/cdk.out -junit.xml -test/ diff --git a/packages/@aws-cdk/aws-datasync/LICENSE b/packages/@aws-cdk/aws-datasync/LICENSE deleted file mode 100644 index 28e4bdcec77ec..0000000000000 --- a/packages/@aws-cdk/aws-datasync/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/@aws-cdk/aws-datasync/NOTICE b/packages/@aws-cdk/aws-datasync/NOTICE deleted file mode 100644 index 5fc3826926b5b..0000000000000 --- a/packages/@aws-cdk/aws-datasync/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AWS Cloud Development Kit (AWS CDK) -Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-datasync/README.md b/packages/@aws-cdk/aws-datasync/README.md deleted file mode 100644 index ab865b0be83a8..0000000000000 --- a/packages/@aws-cdk/aws-datasync/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# AWS::DataSync Construct Library - - ---- - -![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) - -> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use. -> -> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib - ---- - - - -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -```ts -import datasync = require('@aws-cdk/aws-datasync'); -``` diff --git a/packages/@aws-cdk/aws-datasync/jest.config.js b/packages/@aws-cdk/aws-datasync/jest.config.js deleted file mode 100644 index 54e28beb9798b..0000000000000 --- a/packages/@aws-cdk/aws-datasync/jest.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/jest.config'); -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-datasync/lib/index.ts b/packages/@aws-cdk/aws-datasync/lib/index.ts deleted file mode 100644 index e6edd2b3a8a5f..0000000000000 --- a/packages/@aws-cdk/aws-datasync/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// AWS::DataSync CloudFormation Resources: -export * from './datasync.generated'; diff --git a/packages/@aws-cdk/aws-datasync/package.json b/packages/@aws-cdk/aws-datasync/package.json deleted file mode 100644 index 65d0fc8fab75a..0000000000000 --- a/packages/@aws-cdk/aws-datasync/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "name": "@aws-cdk/aws-datasync", - "version": "0.0.0", - "description": "The CDK Construct Library for AWS::DataSync", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "jsii": { - "outdir": "dist", - "projectReferences": true, - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.DataSync", - "packageId": "Amazon.CDK.AWS.DataSync", - "signAssembly": true, - "assemblyOriginatorKeyFile": "../../key.snk", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" - }, - "java": { - "package": "software.amazon.awscdk.services.datasync", - "maven": { - "groupId": "software.amazon.awscdk", - "artifactId": "datasync" - } - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 1" - ], - "distName": "aws-cdk.aws-datasync", - "module": "aws_cdk.aws_datasync" - } - } - }, - "repository": { - "type": "git", - "url": "https://github.com/aws/aws-cdk.git", - "directory": "packages/@aws-cdk/aws-datasync" - }, - "homepage": "https://github.com/aws/aws-cdk", - "scripts": { - "build": "cdk-build", - "watch": "cdk-watch", - "lint": "cdk-lint", - "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f", - "package": "cdk-package", - "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", - "build+test+package": "npm run build+test && npm run package", - "build+test": "npm run build && npm test", - "compat": "cdk-compat", - "gen": "cfn2ts", - "rosetta:extract": "yarn --silent jsii-rosetta extract" - }, - "cdk-build": { - "cloudformation": "AWS::DataSync", - "jest": true, - "env": { - "AWSLINT_BASE_CONSTRUCT": "true" - } - }, - "keywords": [ - "aws", - "cdk", - "constructs", - "AWS::DataSync", - "aws-datasync" - ], - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com", - "organization": true - }, - "license": "Apache-2.0", - "devDependencies": { - "@aws-cdk/assert": "0.0.0", - "cdk-build-tools": "0.0.0", - "cfn2ts": "0.0.0", - "pkglint": "0.0.0" - }, - "dependencies": { - "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" - }, - "peerDependencies": { - "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" - }, - "engines": { - "node": ">= 14.15.0" - }, - "stability": "experimental", - "maturity": "cfn-only", - "awscdkio": { - "announce": false - }, - "private": true -} diff --git a/packages/@aws-cdk/aws-datasync/test/datasync.test.ts b/packages/@aws-cdk/aws-datasync/test/datasync.test.ts deleted file mode 100644 index e394ef336bfb4..0000000000000 --- a/packages/@aws-cdk/aws-datasync/test/datasync.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@aws-cdk/assert/jest'; -import {} from '../lib'; - -test('No tests are specified for this package', () => { - expect(true).toBe(true); -}); diff --git a/packages/@aws-cdk/aws-dax/package.json b/packages/@aws-cdk/aws-dax/package.json index 6582f4fc69a19..b61cf80ba6694 100644 --- a/packages/@aws-cdk/aws-dax/package.json +++ b/packages/@aws-cdk/aws-dax/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-detective/package.json b/packages/@aws-cdk/aws-detective/package.json index bcc38a1b454ac..c1f1e091807c4 100644 --- a/packages/@aws-cdk/aws-detective/package.json +++ b/packages/@aws-cdk/aws-detective/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "awscdkio": { diff --git a/packages/@aws-cdk/aws-devopsguru/package.json b/packages/@aws-cdk/aws-devopsguru/package.json index 590085c5a5fed..409a0d2a6b9c6 100644 --- a/packages/@aws-cdk/aws-devopsguru/package.json +++ b/packages/@aws-cdk/aws-devopsguru/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-directoryservice/package.json b/packages/@aws-cdk/aws-directoryservice/package.json index a3aaed26eb565..948fac3e84ef0 100644 --- a/packages/@aws-cdk/aws-directoryservice/package.json +++ b/packages/@aws-cdk/aws-directoryservice/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dlm/package.json b/packages/@aws-cdk/aws-dlm/package.json index d9bca4e2cd251..6a816e5ee5590 100644 --- a/packages/@aws-cdk/aws-dlm/package.json +++ b/packages/@aws-cdk/aws-dlm/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dms/package.json b/packages/@aws-cdk/aws-dms/package.json index 40fa193c0c1d8..1c3ff387a3029 100644 --- a/packages/@aws-cdk/aws-dms/package.json +++ b/packages/@aws-cdk/aws-dms/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index 32aef49367ea5..f16c155a95439 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index 11ac33a37de9d..8bfdc673ae756 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -88,7 +88,7 @@ "rosetta:extract": "yarn --silent jsii-rosetta extract" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index c05531dbc3da4..7317cc34c981d 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -76,7 +76,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/jest": "^26.0.15", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-ec2/lib/security-group.ts b/packages/@aws-cdk/aws-ec2/lib/security-group.ts index b5c3e4bf5cff2..62a0ceb19e0ca 100644 --- a/packages/@aws-cdk/aws-ec2/lib/security-group.ts +++ b/packages/@aws-cdk/aws-ec2/lib/security-group.ts @@ -321,13 +321,6 @@ export class SecurityGroup extends SecurityGroupBase { /** * Import an existing security group into this app. - * - * This method will assume that the Security Group has a rule in it which allows - * all outbound traffic, and so will not add egress rules to the imported Security - * Group (only ingress rules). - * - * If your existing Security Group needs to have egress rules added, pass the - * `allowAllOutbound: false` option on import. */ public static fromSecurityGroupId(scope: Construct, id: string, securityGroupId: string, options: SecurityGroupImportOptions = {}): ISecurityGroup { class MutableImport extends SecurityGroupBase { diff --git a/packages/@aws-cdk/aws-ec2/package.json b/packages/@aws-cdk/aws-ec2/package.json index 9aa676bc06c33..afd9d1ae25081 100644 --- a/packages/@aws-cdk/aws-ec2/package.json +++ b/packages/@aws-cdk/aws-ec2/package.json @@ -113,7 +113,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecr-assets/package.json b/packages/@aws-cdk/aws-ecr-assets/package.json index 0129b307f72de..0fa09d212e9b2 100644 --- a/packages/@aws-cdk/aws-ecr-assets/package.json +++ b/packages/@aws-cdk/aws-ecr-assets/package.json @@ -100,7 +100,7 @@ "statements": 70 }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "bundledDependencies": [ "minimatch" diff --git a/packages/@aws-cdk/aws-ecr/package.json b/packages/@aws-cdk/aws-ecr/package.json index 1b9f1a81f3c6a..396c853a88c17 100644 --- a/packages/@aws-cdk/aws-ecr/package.json +++ b/packages/@aws-cdk/aws-ecr/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index 330a3466e1198..5aa12690e1955 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -109,7 +109,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-ecs/lib/cluster.ts b/packages/@aws-cdk/aws-ecs/lib/cluster.ts index b27da8557b757..4b1f3cbc56aec 100644 --- a/packages/@aws-cdk/aws-ecs/lib/cluster.ts +++ b/packages/@aws-cdk/aws-ecs/lib/cluster.ts @@ -227,42 +227,38 @@ export class Cluster extends Resource implements ICluster { this._hasEc2Capacity = true; this.connections.connections.addSecurityGroup(...autoScalingGroup.connections.securityGroups); - if ( autoScalingGroup.osType === ec2.OperatingSystemType.WINDOWS ) { - this.configureWindowsAutoScalingGroup(autoScalingGroup, options); - } else { - // Tie instances to cluster - switch (options.machineImageType) { - // Bottlerocket AMI - case MachineImageType.BOTTLEROCKET: { - autoScalingGroup.addUserData( - // Connect to the cluster - // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#connecting-to-your-cluster - '[settings.ecs]', - `cluster = "${this.clusterName}"`, - ); - // Enabling SSM - // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#enabling-ssm - autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore')); - // required managed policy - autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2ContainerServiceforEC2Role')); - break; - } - default: - // Amazon ECS-optimized AMI for Amazon Linux 2 - autoScalingGroup.addUserData(`echo ECS_CLUSTER=${this.clusterName} >> /etc/ecs/ecs.config`); - if (!options.canContainersAccessInstanceRole) { - // Deny containers access to instance metadata service - // Source: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html - autoScalingGroup.addUserData('sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP'); - autoScalingGroup.addUserData('sudo service iptables save'); - // The following is only for AwsVpc networking mode, but doesn't hurt for the other modes. - autoScalingGroup.addUserData('echo ECS_AWSVPC_BLOCK_IMDS=true >> /etc/ecs/ecs.config'); - } - - if (autoScalingGroup.spotPrice && options.spotInstanceDraining) { - autoScalingGroup.addUserData('echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config'); - } + // Tie instances to cluster + switch (options.machineImageType) { + // Bottlerocket AMI + case MachineImageType.BOTTLEROCKET: { + autoScalingGroup.addUserData( + // Connect to the cluster + // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#connecting-to-your-cluster + '[settings.ecs]', + `cluster = "${this.clusterName}"`, + ); + // Enabling SSM + // Source: https://github.com/bottlerocket-os/bottlerocket/blob/develop/QUICKSTART-ECS.md#enabling-ssm + autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore')); + // required managed policy + autoScalingGroup.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2ContainerServiceforEC2Role')); + break; } + default: + // Amazon ECS-optimized AMI for Amazon Linux 2 + autoScalingGroup.addUserData(`echo ECS_CLUSTER=${this.clusterName} >> /etc/ecs/ecs.config`); + if (!options.canContainersAccessInstanceRole) { + // Deny containers access to instance metadata service + // Source: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html + autoScalingGroup.addUserData('sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP'); + autoScalingGroup.addUserData('sudo service iptables save'); + // The following is only for AwsVpc networking mode, but doesn't hurt for the other modes. + autoScalingGroup.addUserData('echo ECS_AWSVPC_BLOCK_IMDS=true >> /etc/ecs/ecs.config'); + } + + if (autoScalingGroup.spotPrice && options.spotInstanceDraining) { + autoScalingGroup.addUserData('echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config'); + } } // ECS instances must be able to do these things @@ -319,33 +315,6 @@ export class Cluster extends Resource implements ICluster { } } - private configureWindowsAutoScalingGroup(autoScalingGroup: autoscaling.AutoScalingGroup, options: AddAutoScalingGroupCapacityOptions = {}) { - // clear the cache of the agent - autoScalingGroup.addUserData('Remove-Item -Recurse C:\\ProgramData\\Amazon\\ECS\\Cache'); - - // pull the latest ECS Tools - autoScalingGroup.addUserData('Import-Module ECSTools'); - - // set the cluster name environment variable - autoScalingGroup.addUserData(`[Environment]::SetEnvironmentVariable("ECS_CLUSTER", "${this.clusterName}", "Machine")`); - autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", "true", "Machine")'); - // tslint:disable-next-line: max-line-length - autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_AVAILABLE_LOGGING_DRIVERS", "[\"json-file\",\"awslogs\"]", "Machine")'); - - // enable instance draining - if (autoScalingGroup.spotPrice && options.spotInstanceDraining) { - autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_SPOT_INSTANCE_DRAINING", "true", "Machine")'); - } - - // enable task iam role - if (!options.canContainersAccessInstanceRole) { - autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_TASK_IAM_ROLE", "true", "Machine")'); - autoScalingGroup.addUserData(`Initialize-ECSAgent -Cluster '${this.clusterName}' -EnableTaskIAMRole'`); - } else { - autoScalingGroup.addUserData(`Initialize-ECSAgent -Cluster '${this.clusterName}'`); - } - } - /** * Getter for autoscaling group added to cluster */ diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index fbaf5bb20cc2c..b1a530e41c624 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -143,7 +143,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json b/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json index 34017cbb94b10..7ba376073123b 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json +++ b/packages/@aws-cdk/aws-ecs/test/ec2/integ.environment-file.expected.json @@ -711,12 +711,14 @@ "Code": { "ZipFile": "import boto3, json, os, time\n\necs = boto3.client('ecs')\nautoscaling = boto3.client('autoscaling')\n\n\ndef lambda_handler(event, context):\n print(json.dumps(event))\n cluster = os.environ['CLUSTER']\n snsTopicArn = event['Records'][0]['Sns']['TopicArn']\n lifecycle_event = json.loads(event['Records'][0]['Sns']['Message'])\n instance_id = lifecycle_event.get('EC2InstanceId')\n if not instance_id:\n print('Got event without EC2InstanceId: %s', json.dumps(event))\n return\n\n instance_arn = container_instance_arn(cluster, instance_id)\n print('Instance %s has container instance ARN %s' % (lifecycle_event['EC2InstanceId'], instance_arn))\n\n if not instance_arn:\n return\n\n while has_tasks(cluster, instance_arn):\n time.sleep(10)\n\n try:\n print('Terminating instance %s' % instance_id)\n autoscaling.complete_lifecycle_action(\n LifecycleActionResult='CONTINUE',\n **pick(lifecycle_event, 'LifecycleHookName', 'LifecycleActionToken', 'AutoScalingGroupName'))\n except Exception as e:\n # Lifecycle action may have already completed.\n print(str(e))\n\n\ndef container_instance_arn(cluster, instance_id):\n \"\"\"Turn an instance ID into a container instance ARN.\"\"\"\n arns = ecs.list_container_instances(cluster=cluster, filter='ec2InstanceId==' + instance_id)['containerInstanceArns']\n if not arns:\n return None\n return arns[0]\n\n\ndef has_tasks(cluster, instance_arn):\n \"\"\"Return True if the instance is running tasks for the given cluster.\"\"\"\n instances = ecs.describe_container_instances(cluster=cluster, containerInstances=[instance_arn])['containerInstances']\n if not instances:\n return False\n instance = instances[0]\n\n if instance['status'] == 'ACTIVE':\n # Start draining, then try again later\n set_container_instance_to_draining(cluster, instance_arn)\n return True\n\n tasks = instance['runningTasksCount'] + instance['pendingTasksCount']\n print('Instance %s has %s tasks' % (instance_arn, tasks))\n\n return tasks > 0\n\n\ndef set_container_instance_to_draining(cluster, instance_arn):\n ecs.update_container_instances_state(\n cluster=cluster,\n containerInstances=[instance_arn], status='DRAINING')\n\n\ndef pick(dct, *keys):\n \"\"\"Pick a subset of a dict.\"\"\"\n return {k: v for k, v in dct.items() if k in keys}\n" }, + "Handler": "index.lambda_handler", "Role": { "Fn::GetAtt": [ "EcsClusterDefaultAutoScalingGroupDrainECSHookFunctionServiceRole94543EDA", "Arn" ] }, + "Runtime": "python3.6", "Environment": { "Variables": { "CLUSTER": { @@ -724,8 +726,6 @@ } } }, - "Handler": "index.lambda_handler", - "Runtime": "python3.6", "Tags": [ { "Key": "Name", @@ -1219,7 +1219,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152" }, "S3Key": { "Fn::Join": [ @@ -1232,7 +1232,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" } ] } @@ -1245,7 +1245,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" } ] } @@ -1255,19 +1255,19 @@ ] } }, + "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn" ] }, - "Handler": "index.handler", + "Runtime": "python3.6", "Layers": [ { "Ref": "EnvFileDeploymentAwsCliLayerA8FC897D" } ], - "Runtime": "python3.6", "Timeout": 900 }, "DependsOn": [ @@ -1348,17 +1348,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152": { "Type": "String", - "Description": "S3 bucket for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "S3 bucket for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED": { "Type": "String", - "Description": "S3 key for asset version \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "S3 key for asset version \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aArtifactHash595EC1E7": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7ArtifactHash8926088E": { "Type": "String", - "Description": "Artifact hash for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "Artifact hash for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, "AssetParameters972240f9dd6e036a93d5f081af9a24315b2053828ac049b3b19b2fa12d7ae64aS3Bucket1F1A8472": { "Type": "String", diff --git a/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts b/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts index b8f3b3621a71c..cbccd0683dd0d 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts +++ b/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts @@ -755,59 +755,6 @@ export = { test.done(); }, - 'configures userdata with powershell if windows machine image is specified'(test: Test) { - // GIVEN - const stack = new cdk.Stack(); - const vpc = new ec2.Vpc(stack, 'MyVpc', {}); - - const cluster = new ecs.Cluster(stack, 'EcsCluster', { vpc }); - cluster.addCapacity('WindowsAutoScalingGroup', { - instanceType: new ec2.InstanceType('t2.micro'), - machineImage: new ecs.EcsOptimizedAmi({ - windowsVersion: ecs.WindowsOptimizedVersion.SERVER_2019, - }), - }); - - // THEN - expect(stack).to(haveResource('AWS::AutoScaling::LaunchConfiguration', { - ImageId: { - Ref: 'SsmParameterValueawsserviceecsoptimizedamiwindowsserver2019englishfullrecommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter', - }, - InstanceType: 't2.micro', - IamInstanceProfile: { - Ref: 'EcsClusterWindowsAutoScalingGroupInstanceProfile65DFA6BB', - }, - SecurityGroups: [ - { - 'Fn::GetAtt': [ - 'EcsClusterWindowsAutoScalingGroupInstanceSecurityGroupDA468DF1', - 'GroupId', - ], - }, - ], - UserData: { - 'Fn::Base64': { - 'Fn::Join': [ - '', - [ - 'Remove-Item -Recurse C:\\ProgramData\\Amazon\\ECS\\Cache\nImport-Module ECSTools\n[Environment]::SetEnvironmentVariable("ECS_CLUSTER", "', - { - Ref: 'EcsCluster97242B84', - }, - "\", \"Machine\")\n[Environment]::SetEnvironmentVariable(\"ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE\", \"true\", \"Machine\")\n[Environment]::SetEnvironmentVariable(\"ECS_AVAILABLE_LOGGING_DRIVERS\", \"[\"json-file\",\"awslogs\"]\", \"Machine\")\n[Environment]::SetEnvironmentVariable(\"ECS_ENABLE_TASK_IAM_ROLE\", \"true\", \"Machine\")\nInitialize-ECSAgent -Cluster '", - { - Ref: 'EcsCluster97242B84', - }, - "' -EnableTaskIAMRole'", - ], - ], - }, - }, - })); - - test.done(); - }, - /* * TODO:v2.0.0 BEGINNING OF OBSOLETE BLOCK */ diff --git a/packages/@aws-cdk/aws-efs/package.json b/packages/@aws-cdk/aws-efs/package.json index 8ef7ebb087d9e..559a961679bc1 100644 --- a/packages/@aws-cdk/aws-efs/package.json +++ b/packages/@aws-cdk/aws-efs/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks-legacy/package.json b/packages/@aws-cdk/aws-eks-legacy/package.json index b5adddcd25205..ca92246e41c7c 100644 --- a/packages/@aws-cdk/aws-eks-legacy/package.json +++ b/packages/@aws-cdk/aws-eks-legacy/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks/README.md b/packages/@aws-cdk/aws-eks/README.md index 35fc9c24c244e..0b92c183fb786 100644 --- a/packages/@aws-cdk/aws-eks/README.md +++ b/packages/@aws-cdk/aws-eks/README.md @@ -232,40 +232,8 @@ cluster.addNodegroupCapacity('extra-ng-spot', { #### Launch Template Support -You can specify a launch template that the node group will use. For example, this can be useful if you want to use -a custom AMI or add custom user data. - -When supplying a custom user data script, it must be encoded in the MIME multi-part archive format, since Amazon EKS merges with its own user data. Visit the [Launch Template Docs](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html#launch-template-user-data) -for mode details. - -```ts -const userData = `MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" - ---==MYBOUNDARY== -Content-Type: text/x-shellscript; charset="us-ascii" - -#!/bin/bash -echo "Running custom user data script" - ---==MYBOUNDARY==--\\ -`; -const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', { - launchTemplateData: { - instanceType: 't3.small', - userData: Fn.base64(userData), - }, -}); -cluster.addNodegroupCapacity('extra-ng', { - launchTemplateSpec: { - id: lt.ref, - version: lt.attrLatestVersionNumber, - }, -}); - -``` - -Note that when using a custom AMI, Amazon EKS doesn't merge any user data. Which means you do not need the multi-part encoding. and are responsible for supplying the required bootstrap commands for nodes to join the cluster. +You can specify a launch template that the node group will use. Note that when using a custom AMI, Amazon EKS doesn't merge any user data. +Rather, You are responsible for supplying the required bootstrap commands for nodes to join the cluster. In the following example, `/ect/eks/bootstrap.sh` from the AMI will be used to bootstrap the node. ```ts @@ -277,19 +245,19 @@ userData.addCommands( const lt = new ec2.CfnLaunchTemplate(this, 'LaunchTemplate', { launchTemplateData: { imageId: 'some-ami-id', // custom AMI - instanceType: 't3.small', + instanceType: new ec2.InstanceType('t3.small').toString(), userData: Fn.base64(userData.render()), }, }); cluster.addNodegroupCapacity('extra-ng', { launchTemplateSpec: { id: lt.ref, - version: lt.attrLatestVersionNumber, + version: lt.attrDefaultVersionNumber, }, }); ``` -You may specify one `instanceType` in the launch template or multiple `instanceTypes` in the node group, **but not both**. +You may specify one or instance types in either the `instanceTypes` property of `NodeGroup` or in the launch template, **but not both**. > For more details visit [Launch Template Support](https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html). @@ -433,8 +401,6 @@ terminated. > > Chart Version: [0.9.5](https://github.com/aws/eks-charts/blob/v0.0.28/stable/aws-node-termination-handler/Chart.yaml) -To disable the installation of the termination handler, set the `spotInterruptHandler` property to `false`. This applies both to `addAutoScalingGroupCapacity` and `connectAutoScalingGroupCapacity`. - #### Bottlerocket [Bottlerocket](https://aws.amazon.com/bottlerocket/) is a Linux-based open-source operating system that is purpose-built by Amazon Web Services for running containers on virtual machines or bare metal hosts. diff --git a/packages/@aws-cdk/aws-eks/lib/cluster.ts b/packages/@aws-cdk/aws-eks/lib/cluster.ts index 0b221c8347b56..cb35a3c719283 100644 --- a/packages/@aws-cdk/aws-eks/lib/cluster.ts +++ b/packages/@aws-cdk/aws-eks/lib/cluster.ts @@ -1177,7 +1177,6 @@ export class Cluster extends ClusterBase { bootstrapOptions: options.bootstrapOptions, bootstrapEnabled: options.bootstrapEnabled, machineImageType: options.machineImageType, - spotInterruptHandler: options.spotInterruptHandler, }); if (nodeTypeForInstanceType(options.instanceType) === NodeType.INFERENTIA) { @@ -1287,9 +1286,8 @@ export class Cluster extends ClusterBase { }); } - const addSpotInterruptHandler = options.spotInterruptHandler ?? true; // if this is an ASG with spot instances, install the spot interrupt handler (only if kubectl is enabled). - if (autoScalingGroup.spotPrice && addSpotInterruptHandler) { + if (autoScalingGroup.spotPrice) { this.addSpotInterruptHandler(); } } @@ -1446,9 +1444,7 @@ export class Cluster extends ClusterBase { repository: 'https://aws.github.io/eks-charts', namespace: 'kube-system', values: { - nodeSelector: { - lifecycle: LifecycleLabel.SPOT, - }, + 'nodeSelector.lifecycle': LifecycleLabel.SPOT, }, }); } @@ -1580,14 +1576,6 @@ export interface AutoScalingGroupCapacityOptions extends autoscaling.CommonAutoS * @default MachineImageType.AMAZON_LINUX_2 */ readonly machineImageType?: MachineImageType; - - /** - * Installs the AWS spot instance interrupt handler on the cluster if it's not - * already added. Only relevant if `spotPrice` is used. - * - * @default true - */ - readonly spotInterruptHandler?: boolean; } /** @@ -1679,14 +1667,6 @@ export interface AutoScalingGroupOptions { * @default MachineImageType.AMAZON_LINUX_2 */ readonly machineImageType?: MachineImageType; - - /** - * Installs the AWS spot instance interrupt handler on the cluster if it's not - * already added. Only relevant if `spotPrice` is configured on the auto-scaling group. - * - * @default true - */ - readonly spotInterruptHandler?: boolean; } /** diff --git a/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts b/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts index 7d46fb00c6e92..576957512cc6d 100644 --- a/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts +++ b/packages/@aws-cdk/aws-eks/lib/managed-nodegroup.ts @@ -226,6 +226,10 @@ export interface NodegroupProps extends NodegroupOptions { * The Nodegroup resource class */ export class Nodegroup extends Resource implements INodegroup { + /** + * Default instanceTypes + */ + public static readonly DEFAULT_INSTANCE_TYPES = [new InstanceType('t3.medium')]; /** * Import the Nodegroup from attributes */ @@ -287,17 +291,16 @@ export class Nodegroup extends Resource implements INodegroup { if (props.instanceType) { Annotations.of(this).addWarning('"instanceType" is deprecated and will be removed in the next major version. please use "instanceTypes" instead'); } - const instanceTypes = props.instanceTypes ?? (props.instanceType ? [props.instanceType] : undefined); - let expectedAmiType = undefined; - - if (instanceTypes && instanceTypes.length > 0) { - // if the user explicitly configured instance types, we can calculate the expected ami type. - expectedAmiType = getAmiType(instanceTypes); - - // if the user explicitly configured an ami type, make sure its the same as the expected one. - if (props.amiType && props.amiType !== expectedAmiType) { - throw new Error(`The specified AMI does not match the instance types architecture, either specify ${expectedAmiType} or dont specify any`); - } + const instanceTypes = props.instanceTypes ?? (props.instanceType ? [props.instanceType] : Nodegroup.DEFAULT_INSTANCE_TYPES); + // get unique AMI types from instanceTypes + const uniqAmiTypes = getAmiTypes(instanceTypes); + // uniqAmiTypes.length should be at least 1 + if (uniqAmiTypes.length > 1) { + throw new Error('instanceTypes of different CPU architectures is not allowed'); + } + const determinedAmiType = uniqAmiTypes[0]; + if (props.amiType && props.amiType !== determinedAmiType) { + throw new Error(`The specified AMI does not match the instance types architecture, either specify ${determinedAmiType} or dont specify any`); } if (!props.nodeRole) { @@ -318,18 +321,13 @@ export class Nodegroup extends Resource implements INodegroup { nodegroupName: props.nodegroupName, nodeRole: this.role.roleArn, subnets: this.cluster.vpc.selectSubnets(props.subnets).subnetIds, - - // if a launch template is configured, we cannot apply a default since it - // might exist in the launch template as well, causing a deployment failure. - amiType: props.launchTemplateSpec !== undefined ? props.amiType : (props.amiType ?? expectedAmiType), - + // AmyType is not allowed by CFN when specifying an image id in your launch template. + amiType: props.launchTemplateSpec === undefined ? determinedAmiType : undefined, capacityType: props.capacityType ? props.capacityType.valueOf() : undefined, diskSize: props.diskSize, forceUpdateEnabled: props.forceUpdate ?? true, - - // note that we don't check if a launch template is configured here (even though it might configure instance types as well) - // because this doesn't have a default value, meaning the user had to explicitly configure this. - instanceTypes: instanceTypes?.map(t => t.toString()), + instanceTypes: props.instanceTypes ? props.instanceTypes.map(t => t.toString()) : + props.instanceType ? [props.instanceType.toString()] : undefined, labels: props.labels, releaseVersion: props.releaseVersion, remoteAccess: props.remoteAccess ? { @@ -394,16 +392,8 @@ function getAmiTypeForInstanceType(instanceType: InstanceType) { NodegroupAmiType.AL2_X86_64; } -// this function examines the CPU architecture of every instance type and determines -// what ami type is compatible for all of them. it either throws or produces a single value because -// instance types of different CPU architectures are not supported. -function getAmiType(instanceTypes: InstanceType[]) { - const amiTypes = new Set(instanceTypes.map(i => getAmiTypeForInstanceType(i))); - if (amiTypes.size == 0) { // protective code, the current implementation will never result in this. - throw new Error(`Cannot determine any ami type comptaible with instance types: ${instanceTypes.map(i => i.toString).join(',')}`); - } - if (amiTypes.size > 1) { - throw new Error('instanceTypes of different CPU architectures is not allowed'); - } - return amiTypes.values().next().value; +function getAmiTypes(instanceType: InstanceType[]) { + const amiTypes = instanceType.map(i =>getAmiTypeForInstanceType(i)); + // retuen unique AMI types + return [...new Set(amiTypes)]; } diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index 773a62c580d25..39a08e0352fd5 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -76,7 +76,7 @@ "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", "@types/yaml": "1.9.6", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -118,7 +118,7 @@ "@aws-cdk/lambda-layer-kubectl": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json index 5c0b4bf402a5b..230268fdca0f7 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json @@ -2739,7 +2739,7 @@ "Release": "ksclustertestclusterchartspotinterrupthandlerf41ba997", "Chart": "aws-node-termination-handler", "Version": "0.13.2", - "Values": "{\"nodeSelector\":{\"lifecycle\":\"Ec2Spot\"}}", + "Values": "{\"nodeSelector.lifecycle\":\"Ec2Spot\"}", "Namespace": "kube-system", "Repository": "https://aws.github.io/eks-charts", "CreateNamespace": true diff --git a/packages/@aws-cdk/aws-eks/test/test.cluster.ts b/packages/@aws-cdk/aws-eks/test/test.cluster.ts index 171e07fdced72..f485253d1eba4 100644 --- a/packages/@aws-cdk/aws-eks/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-eks/test/test.cluster.ts @@ -188,31 +188,6 @@ export = { }, - 'spot interrupt handler is not added if spotInterruptHandler is false when connecting self-managed nodes'(test: Test) { - - // GIVEN - const { stack, vpc } = testFixture(); - const cluster = new eks.Cluster(stack, 'Cluster', { - vpc, - defaultCapacity: 0, - version: CLUSTER_VERSION, - prune: false, - }); - - const selfManaged = new asg.AutoScalingGroup(stack, 'self-managed', { - instanceType: new ec2.InstanceType('t2.medium'), - vpc: vpc, - machineImage: new ec2.AmazonLinuxImage(), - spotPrice: '0.1', - }); - - // WHEN - cluster.connectAutoScalingGroupCapacity(selfManaged, { spotInterruptHandler: false }); - - test.equal(cluster.node.findAll().filter(c => c.node.id === 'chart-spot-interrupt-handler').length, 0); - test.done(); - }, - 'throws when a non cdk8s chart construct is added as cdk8s chart'(test: Test) { const { stack } = testFixture(); @@ -1310,30 +1285,13 @@ export = { expect(stack).to(haveResource(eks.HelmChart.RESOURCE_TYPE, { Release: 'stackclusterchartspotinterrupthandlerdec62e07', Chart: 'aws-node-termination-handler', - Values: '{\"nodeSelector\":{\"lifecycle\":\"Ec2Spot\"}}', + Values: '{\"nodeSelector.lifecycle\":\"Ec2Spot\"}', Namespace: 'kube-system', Repository: 'https://aws.github.io/eks-charts', })); test.done(); }, - 'interrupt handler is not added when spotInterruptHandler is false'(test: Test) { - // GIVEN - const { stack } = testFixtureNoVpc(); - const cluster = new eks.Cluster(stack, 'Cluster', { defaultCapacity: 0, version: CLUSTER_VERSION, prune: false }); - - // WHEN - cluster.addAutoScalingGroupCapacity('MyCapcity', { - instanceType: new ec2.InstanceType('m3.xlarge'), - spotPrice: '0.01', - spotInterruptHandler: false, - }); - - // THEN - test.equal(cluster.node.findAll().filter(c => c.node.id === 'chart-spot-interrupt-handler').length, 0); - test.done(); - }, - 'its possible to add two capacities with spot instances and only one stop handler will be installed'(test: Test) { // GIVEN const { stack } = testFixtureNoVpc(); diff --git a/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts b/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts index 241482d469c65..ff962572a6f92 100644 --- a/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts +++ b/packages/@aws-cdk/aws-eks/test/test.nodegroup.ts @@ -10,92 +10,6 @@ import { testFixture } from './util'; const CLUSTER_VERSION = eks.KubernetesVersion.V1_18; export = { - - 'default ami type is not applied when launch template is configured'(test: Test) { - - // GIVEN - const { stack, vpc } = testFixture(); - - const launchTemplate = new ec2.CfnLaunchTemplate(stack, 'LaunchTemplate', { - launchTemplateData: { - instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.MEDIUM).toString(), - }, - }); - - // WHEN - const cluster = new eks.Cluster(stack, 'Cluster', { - vpc, - defaultCapacity: 0, - version: CLUSTER_VERSION, - }); - new eks.Nodegroup(stack, 'Nodegroup', { - cluster, - instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.LARGE)], - launchTemplateSpec: { - id: launchTemplate.ref, - version: launchTemplate.attrLatestVersionNumber, - }, - }); - - // THEN - test.equal(expect(stack).value.Resources.Nodegroup62B4B2C1.Properties.AmiType, undefined); - test.done(); - }, - - 'explicit ami type is applied even when launch template is configured'(test: Test) { - - // GIVEN - const { stack, vpc } = testFixture(); - - const launchTemplate = new ec2.CfnLaunchTemplate(stack, 'LaunchTemplate', { - launchTemplateData: { - instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.MEDIUM).toString(), - }, - }); - - // WHEN - const cluster = new eks.Cluster(stack, 'Cluster', { - vpc, - defaultCapacity: 0, - version: CLUSTER_VERSION, - }); - new eks.Nodegroup(stack, 'Nodegroup', { - cluster, - amiType: eks.NodegroupAmiType.AL2_X86_64, - launchTemplateSpec: { - id: launchTemplate.ref, - version: launchTemplate.attrLatestVersionNumber, - }, - }); - - // THEN - test.equal(expect(stack).value.Resources.Nodegroup62B4B2C1.Properties.AmiType, 'AL2_x86_64'); - test.done(); - }, - - 'ami type is taken as is when no instance types are configured'(test: Test) { - - // GIVEN - const { stack, vpc } = testFixture(); - - // WHEN - const cluster = new eks.Cluster(stack, 'Cluster', { - vpc, - defaultCapacity: 0, - version: CLUSTER_VERSION, - }); - new eks.Nodegroup(stack, 'Nodegroup', { - cluster, - amiType: eks.NodegroupAmiType.AL2_X86_64_GPU, - }); - - // THEN - expect(stack).to(haveResourceLike('AWS::EKS::Nodegroup', { - AmiType: 'AL2_x86_64_GPU', - })); - test.done(); - }, - 'create nodegroup correctly'(test: Test) { // GIVEN const { stack, vpc } = testFixture(); diff --git a/packages/@aws-cdk/aws-elasticache/package.json b/packages/@aws-cdk/aws-elasticache/package.json index c28539b5b06b5..8f89a5c5b7238 100644 --- a/packages/@aws-cdk/aws-elasticache/package.json +++ b/packages/@aws-cdk/aws-elasticache/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-elasticbeanstalk/package.json b/packages/@aws-cdk/aws-elasticbeanstalk/package.json index c112c9280c718..da4ed4bc4f320 100644 --- a/packages/@aws-cdk/aws-elasticbeanstalk/package.json +++ b/packages/@aws-cdk/aws-elasticbeanstalk/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/package.json b/packages/@aws-cdk/aws-elasticloadbalancing/package.json index 7792b2c813531..42612b65ae9ea 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancing/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "nyc": { "statements": 75 diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index ae4c86ed370c7..f0df897f6db29 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index a3813eea37f1d..2c5de8a263103 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json index 141302e37b87a..25f2a85c1d082 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json @@ -108,7 +108,7 @@ "@aws-cdk/region-info": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts index 668086dab5372..480361c1358f6 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts @@ -1474,36 +1474,6 @@ export class Domain extends DomainBase implements IDomain { }); } - const logPublishing: Record = {}; - - if (this.appLogGroup) { - logPublishing.ES_APPLICATION_LOGS = { - enabled: true, - cloudWatchLogsLogGroupArn: this.appLogGroup.logGroupArn, - }; - } - - if (this.slowSearchLogGroup) { - logPublishing.SEARCH_SLOW_LOGS = { - enabled: true, - cloudWatchLogsLogGroupArn: this.slowSearchLogGroup.logGroupArn, - }; - } - - if (this.slowIndexLogGroup) { - logPublishing.INDEX_SLOW_LOGS = { - enabled: true, - cloudWatchLogsLogGroupArn: this.slowIndexLogGroup.logGroupArn, - }; - } - - if (this.auditLogGroup) { - logPublishing.AUDIT_LOGS = { - enabled: this.auditLogGroup != null, - cloudWatchLogsLogGroupArn: this.auditLogGroup?.logGroupArn, - }; - } - // Create the domain this.domain = new CfnDomain(this, 'Resource', { domainName: this.physicalName, @@ -1536,7 +1506,24 @@ export class Domain extends DomainBase implements IDomain { : undefined, }, nodeToNodeEncryptionOptions: { enabled: nodeToNodeEncryptionEnabled }, - logPublishingOptions: logPublishing, + logPublishingOptions: { + AUDIT_LOGS: { + enabled: this.auditLogGroup != null, + cloudWatchLogsLogGroupArn: this.auditLogGroup?.logGroupArn, + }, + ES_APPLICATION_LOGS: { + enabled: this.appLogGroup != null, + cloudWatchLogsLogGroupArn: this.appLogGroup?.logGroupArn, + }, + SEARCH_SLOW_LOGS: { + enabled: this.slowSearchLogGroup != null, + cloudWatchLogsLogGroupArn: this.slowSearchLogGroup?.logGroupArn, + }, + INDEX_SLOW_LOGS: { + enabled: this.slowIndexLogGroup != null, + cloudWatchLogsLogGroupArn: this.slowIndexLogGroup?.logGroupArn, + }, + }, cognitoOptions: { enabled: props.cognitoKibanaAuth != null, identityPoolId: props.cognitoKibanaAuth?.identityPoolId, diff --git a/packages/@aws-cdk/aws-elasticsearch/package.json b/packages/@aws-cdk/aws-elasticsearch/package.json index 00cf8c59b320d..07c8b997db14c 100644 --- a/packages/@aws-cdk/aws-elasticsearch/package.json +++ b/packages/@aws-cdk/aws-elasticsearch/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts b/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts index ff85a85e218f8..affa1d45e4477 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts @@ -89,10 +89,18 @@ test('minimal example renders correctly', () => { Enabled: false, }, LogPublishingOptions: { - AUDIT_LOGS: assert.ABSENT, - ES_APPLICATION_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + AUDIT_LOGS: { + Enabled: false, + }, + ES_APPLICATION_LOGS: { + Enabled: false, + }, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, NodeToNodeEncryptionOptions: { Enabled: false, @@ -125,6 +133,9 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { + ES_APPLICATION_LOGS: { + Enabled: false, + }, SEARCH_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -134,9 +145,9 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, - ES_APPLICATION_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, }); }); @@ -151,6 +162,12 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { + ES_APPLICATION_LOGS: { + Enabled: false, + }, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, INDEX_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -160,9 +177,6 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, - ES_APPLICATION_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -186,9 +200,12 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, }); }); @@ -220,9 +237,15 @@ describe('log groups', () => { }, Enabled: true, }, - ES_APPLICATION_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: { + Enabled: false, + }, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, }); }); @@ -273,7 +296,6 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, }, }); expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { @@ -305,7 +327,6 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, }, }); }); @@ -364,6 +385,12 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { + AUDIT_LOGS: { + Enabled: false, + }, + ES_APPLICATION_LOGS: { + Enabled: false, + }, SEARCH_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -373,9 +400,9 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, - ES_APPLICATION_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, }); }); @@ -393,6 +420,15 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { + AUDIT_LOGS: { + Enabled: false, + }, + ES_APPLICATION_LOGS: { + Enabled: false, + }, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, INDEX_SLOW_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -402,9 +438,6 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, - ES_APPLICATION_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, }, }); }); @@ -422,6 +455,9 @@ describe('log groups', () => { expect(stack).toHaveResourceLike('AWS::Elasticsearch::Domain', { LogPublishingOptions: { + AUDIT_LOGS: { + Enabled: false, + }, ES_APPLICATION_LOGS: { CloudWatchLogsLogGroupArn: { 'Fn::GetAtt': [ @@ -431,9 +467,12 @@ describe('log groups', () => { }, Enabled: true, }, - AUDIT_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, }); }); @@ -468,9 +507,15 @@ describe('log groups', () => { }, Enabled: true, }, - ES_APPLICATION_LOGS: assert.ABSENT, - SEARCH_SLOW_LOGS: assert.ABSENT, - INDEX_SLOW_LOGS: assert.ABSENT, + ES_APPLICATION_LOGS: { + Enabled: false, + }, + SEARCH_SLOW_LOGS: { + Enabled: false, + }, + INDEX_SLOW_LOGS: { + Enabled: false, + }, }, }); }); diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json index e919ee6365e8e..a4ec48af68521 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json @@ -40,7 +40,20 @@ "EncryptionAtRestOptions": { "Enabled": true }, - "LogPublishingOptions": {}, + "LogPublishingOptions": { + "AUDIT_LOGS": { + "Enabled": false + }, + "ES_APPLICATION_LOGS": { + "Enabled": false + }, + "SEARCH_SLOW_LOGS": { + "Enabled": false + }, + "INDEX_SLOW_LOGS": { + "Enabled": false + } + }, "NodeToNodeEncryptionOptions": { "Enabled": true } diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json index fafc653e73740..f987bec734004 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json @@ -211,6 +211,9 @@ } }, "LogPublishingOptions": { + "AUDIT_LOGS": { + "Enabled": false + }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn": { "Fn::GetAtt": [ @@ -228,6 +231,9 @@ ] }, "Enabled": true + }, + "INDEX_SLOW_LOGS": { + "Enabled": false } }, "NodeToNodeEncryptionOptions": { @@ -436,13 +442,13 @@ ] } }, + "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, - "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json index 6c782aee20cc9..a6a6dd2b0d37f 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json @@ -157,6 +157,9 @@ "Enabled": true }, "LogPublishingOptions": { + "AUDIT_LOGS": { + "Enabled": false + }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn": { "Fn::GetAtt": [ @@ -174,6 +177,9 @@ ] }, "Enabled": true + }, + "INDEX_SLOW_LOGS": { + "Enabled": false } }, "NodeToNodeEncryptionOptions": { @@ -352,13 +358,13 @@ ] } }, + "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, - "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, @@ -523,6 +529,9 @@ "Enabled": true }, "LogPublishingOptions": { + "AUDIT_LOGS": { + "Enabled": false + }, "ES_APPLICATION_LOGS": { "CloudWatchLogsLogGroupArn": { "Fn::GetAtt": [ @@ -540,6 +549,9 @@ ] }, "Enabled": true + }, + "INDEX_SLOW_LOGS": { + "Enabled": false } }, "NodeToNodeEncryptionOptions": { diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json index b55ac9e14df69..99ca282a3469a 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json @@ -4,8 +4,8 @@ "Type": "AWS::SecretsManager::Secret", "Properties": { "GenerateSecretString": { - "ExcludeCharacters": "{}'\\*[]()`", "GenerateStringKey": "password", + "ExcludeCharacters": "{}'\\*[]()`", "SecretStringTemplate": "{\"username\":\"admin\"}" } } @@ -54,7 +54,20 @@ "EncryptionAtRestOptions": { "Enabled": true }, - "LogPublishingOptions": {}, + "LogPublishingOptions": { + "AUDIT_LOGS": { + "Enabled": false + }, + "ES_APPLICATION_LOGS": { + "Enabled": false + }, + "SEARCH_SLOW_LOGS": { + "Enabled": false + }, + "INDEX_SLOW_LOGS": { + "Enabled": false + } + }, "NodeToNodeEncryptionOptions": { "Enabled": true } @@ -284,4 +297,4 @@ "Description": "Artifact hash for asset \"b64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94\"" } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-emr/package.json b/packages/@aws-cdk/aws-emr/package.json index 12827772ad057..184ed9060344a 100644 --- a/packages/@aws-cdk/aws-emr/package.json +++ b/packages/@aws-cdk/aws-emr/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index b7f6923e10b0d..9f67340edfe04 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -77,7 +77,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-codecommit": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -126,7 +126,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-events/package.json b/packages/@aws-cdk/aws-events/package.json index 6ce0c48eb34db..4f4831fcd03c3 100644 --- a/packages/@aws-cdk/aws-events/package.json +++ b/packages/@aws-cdk/aws-events/package.json @@ -94,7 +94,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eventschemas/package.json b/packages/@aws-cdk/aws-eventschemas/package.json index a1f8138f6e3bf..c6430908d2217 100644 --- a/packages/@aws-cdk/aws-eventschemas/package.json +++ b/packages/@aws-cdk/aws-eventschemas/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-fms/package.json b/packages/@aws-cdk/aws-fms/package.json index 37db1822688df..168a95167750b 100644 --- a/packages/@aws-cdk/aws-fms/package.json +++ b/packages/@aws-cdk/aws-fms/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-fsx/package.json b/packages/@aws-cdk/aws-fsx/package.json index 62a572c56f0f1..39cac9ed7ffc0 100644 --- a/packages/@aws-cdk/aws-fsx/package.json +++ b/packages/@aws-cdk/aws-fsx/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-gamelift/package.json b/packages/@aws-cdk/aws-gamelift/package.json index dbf22cc3ba4ce..fda4f58696f60 100644 --- a/packages/@aws-cdk/aws-gamelift/package.json +++ b/packages/@aws-cdk/aws-gamelift/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-globalaccelerator/package.json b/packages/@aws-cdk/aws-globalaccelerator/package.json index 40b1013bc82b8..331ba5ddea4fc 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator/package.json @@ -96,7 +96,7 @@ "@aws-cdk/custom-resources": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-glue/package.json b/packages/@aws-cdk/aws-glue/package.json index 4a4a540875740..1d50c80e32441 100644 --- a/packages/@aws-cdk/aws-glue/package.json +++ b/packages/@aws-cdk/aws-glue/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-greengrass/package.json b/packages/@aws-cdk/aws-greengrass/package.json index 606c143dbe8f3..93dfabe51ee99 100644 --- a/packages/@aws-cdk/aws-greengrass/package.json +++ b/packages/@aws-cdk/aws-greengrass/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-greengrassv2/package.json b/packages/@aws-cdk/aws-greengrassv2/package.json index d653e6304a4c4..635baceaae643 100644 --- a/packages/@aws-cdk/aws-greengrassv2/package.json +++ b/packages/@aws-cdk/aws-greengrassv2/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-guardduty/package.json b/packages/@aws-cdk/aws-guardduty/package.json index ffad049d9738a..26a7e84f19f97 100644 --- a/packages/@aws-cdk/aws-guardduty/package.json +++ b/packages/@aws-cdk/aws-guardduty/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iam/README.md b/packages/@aws-cdk/aws-iam/README.md index d9488e7d081c8..a676af6352cf2 100644 --- a/packages/@aws-cdk/aws-iam/README.md +++ b/packages/@aws-cdk/aws-iam/README.md @@ -320,34 +320,6 @@ const provider = new iam.OpenIdConnectProvider(this, 'MyProvider', { const principal = new iam.OpenIdConnectPrincipal(provider); ``` -## Users - -IAM manages users for your AWS account. To create a new user: - -```ts -const user = new User(this, 'MyUser'); -``` - -To import an existing user by name [with path](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names): - -```ts -const user = User.fromUserName(stack, 'MyImportedUserByName', 'johnsmith'); -``` - -To import an existing user by ARN: - -```ts -const user = User.fromUserArn(this, 'MyImportedUserByArn', 'arn:aws:iam::123456789012:user/johnsmith'); -``` - -To import an existing user by attributes: - -```ts -const user = User.fromUserAttributes(stack, 'MyImportedUserByAttributes', { - userArn: 'arn:aws:iam::123456789012:user/johnsmith', -}); -``` - ## Features * Policy name uniqueness is enforced. If two policies by the same name are attached to the same diff --git a/packages/@aws-cdk/aws-iam/lib/user.ts b/packages/@aws-cdk/aws-iam/lib/user.ts index 5c8f6418a9bb8..a8c3b61443771 100644 --- a/packages/@aws-cdk/aws-iam/lib/user.ts +++ b/packages/@aws-cdk/aws-iam/lib/user.ts @@ -1,4 +1,4 @@ -import { Arn, Aws, Lazy, Resource, SecretValue, Stack } from '@aws-cdk/core'; +import { Aws, Lazy, Resource, SecretValue, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { IGroup } from './group'; import { CfnUser } from './iam.generated'; @@ -119,18 +119,6 @@ export interface UserProps { readonly passwordResetRequired?: boolean; } -/** - * Represents a user defined outside of this stack. - */ -export interface UserAttributes { - /** - * The ARN of the user. - * - * Format: arn::iam:::user/ - */ - readonly userArn: string; -} - /** * Define a new IAM user */ @@ -143,42 +131,20 @@ export class User extends Resource implements IIdentity, IUser { * @param userName the username of the existing user to import */ public static fromUserName(scope: Construct, id: string, userName: string): IUser { - const userArn = Stack.of(scope).formatArn({ + const arn = Stack.of(scope).formatArn({ service: 'iam', region: '', resource: 'user', resourceName: userName, }); - return User.fromUserAttributes(scope, id, { userArn }); - } - - /** - * Import an existing user given a user ARN. - * - * @param scope construct scope - * @param id construct id - * @param userArn the ARN of an existing user to import - */ - public static fromUserArn(scope: Construct, id: string, userArn: string): IUser { - return User.fromUserAttributes(scope, id, { userArn }); - } - - /** - * Import an existing user given user attributes. - * - * @param scope construct scope - * @param id construct id - * @param attrs the attributes of the user to import - */ - public static fromUserAttributes(scope: Construct, id: string, attrs: UserAttributes): IUser { class Import extends Resource implements IUser { public readonly grantPrincipal: IPrincipal = this; public readonly principalAccount = Aws.ACCOUNT_ID; - public readonly userName: string = Arn.extractResourceName(attrs.userArn, 'user'); - public readonly userArn: string = attrs.userArn; + public readonly userName: string = userName; + public readonly userArn: string = arn; public readonly assumeRoleAction: string = 'sts:AssumeRole'; - public readonly policyFragment: PrincipalPolicyFragment = new ArnPrincipal(attrs.userArn).policyFragment; + public readonly policyFragment: PrincipalPolicyFragment = new ArnPrincipal(arn).policyFragment; private readonly attachedPolicies = new AttachedPolicies(); private defaultPolicy?: Policy; diff --git a/packages/@aws-cdk/aws-iam/package.json b/packages/@aws-cdk/aws-iam/package.json index ebb1a574fe55c..1697e6f640398 100644 --- a/packages/@aws-cdk/aws-iam/package.json +++ b/packages/@aws-cdk/aws-iam/package.json @@ -101,7 +101,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-iam/test/integ.user.expected.json b/packages/@aws-cdk/aws-iam/test/integ.user.expected.json index a57b3db4c6f32..2c4bc6c9b52c0 100644 --- a/packages/@aws-cdk/aws-iam/test/integ.user.expected.json +++ b/packages/@aws-cdk/aws-iam/test/integ.user.expected.json @@ -4,22 +4,11 @@ "Type": "AWS::IAM::User", "Properties": { "LoginProfile": { - "Password": "Test1234567890!", + "Password": "1234", "PasswordResetRequired": true }, "UserName": "benisrae" } } - }, - "Outputs": { - "NameForUserImportedByArn": { - "Value": "rossrhodes" - }, - "NameForUserImportedByAttributes": { - "Value": "johndoe" - }, - "NameForUserImportedByName": { - "Value": "janedoe" - } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-iam/test/integ.user.ts b/packages/@aws-cdk/aws-iam/test/integ.user.ts index 7f8d00695742c..198f3ecb77c4c 100644 --- a/packages/@aws-cdk/aws-iam/test/integ.user.ts +++ b/packages/@aws-cdk/aws-iam/test/integ.user.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, SecretValue, Stack } from '@aws-cdk/core'; +import { App, SecretValue, Stack } from '@aws-cdk/core'; import { User } from '../lib'; const app = new App(); @@ -7,18 +7,8 @@ const stack = new Stack(app, 'aws-cdk-iam-user'); new User(stack, 'MyUser', { userName: 'benisrae', - password: SecretValue.plainText('Test1234567890!'), + password: SecretValue.plainText('1234'), passwordResetRequired: true, }); -const userImportedByArn = User.fromUserArn(stack, 'ImportedUserByArn', 'arn:aws:iam::123456789012:user/rossrhodes'); -const userImportedByAttributes = User.fromUserAttributes(stack, 'ImportedUserByAttributes', { - userArn: 'arn:aws:iam::123456789012:user/johndoe', -}); -const userImportedByName = User.fromUserName(stack, 'ImportedUserByName', 'janedoe'); - -new CfnOutput(stack, 'NameForUserImportedByArn', { value: userImportedByArn.userName }); -new CfnOutput(stack, 'NameForUserImportedByAttributes', { value: userImportedByAttributes.userName }); -new CfnOutput(stack, 'NameForUserImportedByName', { value: userImportedByName.userName }); - app.synth(); diff --git a/packages/@aws-cdk/aws-iam/test/user.test.ts b/packages/@aws-cdk/aws-iam/test/user.test.ts index 4a59a86d4a45d..9908eeac2c6c7 100644 --- a/packages/@aws-cdk/aws-iam/test/user.test.ts +++ b/packages/@aws-cdk/aws-iam/test/user.test.ts @@ -81,7 +81,7 @@ describe('IAM user', () => { }); }); - test('user imported by user name has an ARN', () => { + test('imported user has an ARN', () => { // GIVEN const stack = new Stack(); @@ -94,32 +94,6 @@ describe('IAM user', () => { }); }); - test('user imported by user ARN has a name', () => { - // GIVEN - const stack = new Stack(); - const userName = 'MyUserName'; - - // WHEN - const user = User.fromUserArn(stack, 'import', `arn:aws:iam::account-id:user/${userName}`); - - // THEN - expect(stack.resolve(user.userName)).toStrictEqual(userName); - }); - - test('user imported by user attributes has a name', () => { - // GIVEN - const stack = new Stack(); - const userName = 'MyUserName'; - - // WHEN - const user = User.fromUserAttributes(stack, 'import', { - userArn: `arn:aws:iam::account-id:user/${userName}`, - }); - - // THEN - expect(stack.resolve(user.userName)).toStrictEqual(userName); - }); - test('add to policy of imported user', () => { // GIVEN const stack = new Stack(); diff --git a/packages/@aws-cdk/aws-imagebuilder/package.json b/packages/@aws-cdk/aws-imagebuilder/package.json index 452e2f6ed8fa2..ff0ed2bbe9678 100644 --- a/packages/@aws-cdk/aws-imagebuilder/package.json +++ b/packages/@aws-cdk/aws-imagebuilder/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-inspector/package.json b/packages/@aws-cdk/aws-inspector/package.json index d767da5c11463..72920e0d8da05 100644 --- a/packages/@aws-cdk/aws-inspector/package.json +++ b/packages/@aws-cdk/aws-inspector/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iot/package.json b/packages/@aws-cdk/aws-iot/package.json index ecb5945f55aba..1a93905cc3e9f 100644 --- a/packages/@aws-cdk/aws-iot/package.json +++ b/packages/@aws-cdk/aws-iot/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iot1click/package.json b/packages/@aws-cdk/aws-iot1click/package.json index 5b2e454c8cb81..6ca9e533cc1ea 100644 --- a/packages/@aws-cdk/aws-iot1click/package.json +++ b/packages/@aws-cdk/aws-iot1click/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotanalytics/package.json b/packages/@aws-cdk/aws-iotanalytics/package.json index 6d575f2a93943..4b630c634fb92 100644 --- a/packages/@aws-cdk/aws-iotanalytics/package.json +++ b/packages/@aws-cdk/aws-iotanalytics/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotevents/package.json b/packages/@aws-cdk/aws-iotevents/package.json index adba82161f209..270da397bb18a 100644 --- a/packages/@aws-cdk/aws-iotevents/package.json +++ b/packages/@aws-cdk/aws-iotevents/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotsitewise/package.json b/packages/@aws-cdk/aws-iotsitewise/package.json index aa3c45d292f89..9a2540e65c512 100644 --- a/packages/@aws-cdk/aws-iotsitewise/package.json +++ b/packages/@aws-cdk/aws-iotsitewise/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotthingsgraph/package.json b/packages/@aws-cdk/aws-iotthingsgraph/package.json index 2c4767ead3820..69732aa3d083e 100644 --- a/packages/@aws-cdk/aws-iotthingsgraph/package.json +++ b/packages/@aws-cdk/aws-iotthingsgraph/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotwireless/package.json b/packages/@aws-cdk/aws-iotwireless/package.json index 3fb0230c95f8a..0c23c066e878b 100644 --- a/packages/@aws-cdk/aws-iotwireless/package.json +++ b/packages/@aws-cdk/aws-iotwireless/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ivs/package.json b/packages/@aws-cdk/aws-ivs/package.json index 185b02bf71af2..1d7d8f8ee01ab 100644 --- a/packages/@aws-cdk/aws-ivs/package.json +++ b/packages/@aws-cdk/aws-ivs/package.json @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-kendra/package.json b/packages/@aws-cdk/aws-kendra/package.json index 155a344e95d7c..85d72f4303039 100644 --- a/packages/@aws-cdk/aws-kendra/package.json +++ b/packages/@aws-cdk/aws-kendra/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kinesis/package.json b/packages/@aws-cdk/aws-kinesis/package.json index 23b368db79eb4..5e19c404ba772 100644 --- a/packages/@aws-cdk/aws-kinesis/package.json +++ b/packages/@aws-cdk/aws-kinesis/package.json @@ -96,7 +96,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-kinesisanalytics/package.json b/packages/@aws-cdk/aws-kinesisanalytics/package.json index 58e6fff01d6f0..2daa7d2bd9f2b 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kinesisfirehose/package.json b/packages/@aws-cdk/aws-kinesisfirehose/package.json index da5ce87c6c6c7..471d30713a914 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kms/package.json b/packages/@aws-cdk/aws-kms/package.json index 6fa29b998daa0..16df28eb2ec90 100644 --- a/packages/@aws-cdk/aws-kms/package.json +++ b/packages/@aws-cdk/aws-kms/package.json @@ -94,7 +94,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-lakeformation/package.json b/packages/@aws-cdk/aws-lakeformation/package.json index bf47bee33119f..0282c39139f47 100644 --- a/packages/@aws-cdk/aws-lakeformation/package.json +++ b/packages/@aws-cdk/aws-lakeformation/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index 9ff5c4376d83f..50e53b0389e75 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index d633b09927b32..332e03d15e83c 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index daf110688f6fd..90d7f73f18cde 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -70,7 +70,7 @@ "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "delay": "4.4.0", - "esbuild": "^0.8.32", + "esbuild": "^0.8.31", "pkglint": "0.0.0" }, "dependencies": { @@ -85,7 +85,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index 70a147b834984..5cab113b0f8f6 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -84,7 +84,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-lambda/README.md b/packages/@aws-cdk/aws-lambda/README.md index 5b7ee7cd3240e..54e7811688134 100644 --- a/packages/@aws-cdk/aws-lambda/README.md +++ b/packages/@aws-cdk/aws-lambda/README.md @@ -458,5 +458,5 @@ new lambda.Function(this, 'Function', { Language-specific higher level constructs are provided in separate modules: -* `@aws-cdk/aws-lambda-nodejs`: [Github](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-nodejs) & [CDK Docs](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-nodejs-readme.html) -* `@aws-cdk/aws-lambda-python`: [Github](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-python) & [CDK Docs](https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-python-readme.html) +* Node.js: [`@aws-cdk/aws-lambda-nodejs`](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-nodejs) +* Python: [`@aws-cdk/aws-lambda-python`](https://github.com/aws/aws-cdk/tree/master/packages/%40aws-cdk/aws-lambda-python) diff --git a/packages/@aws-cdk/aws-lambda/lib/code.ts b/packages/@aws-cdk/aws-lambda/lib/code.ts index af8b9d6dc26fd..491644b6c5ab6 100644 --- a/packages/@aws-cdk/aws-lambda/lib/code.ts +++ b/packages/@aws-cdk/aws-lambda/lib/code.ts @@ -249,9 +249,6 @@ export class AssetCode extends Code { path: this.path, ...this.options, }); - } else if (cdk.Stack.of(this.asset) !== cdk.Stack.of(scope)) { - throw new Error(`Asset is already associated with another stack '${cdk.Stack.of(this.asset).stackName}'. ` + - 'Create a new Code instance for every stack.'); } if (!this.asset.isZipArchive) { diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index c67ad82ff7f74..8c5def823b223 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -128,7 +128,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-lambda/test/code.test.ts b/packages/@aws-cdk/aws-lambda/test/code.test.ts index 9b99c095c2467..a822ba698697e 100644 --- a/packages/@aws-cdk/aws-lambda/test/code.test.ts +++ b/packages/@aws-cdk/aws-lambda/test/code.test.ts @@ -77,26 +77,6 @@ describe('code', () => { }, }, ResourcePart.CompleteDefinition); }); - - test('fails if asset is bound with a second stack', () => { - // GIVEN - const asset = lambda.Code.fromAsset(path.join(__dirname, 'my-lambda-handler')); - - const app = new cdk.App(); - const stack1 = new cdk.Stack(app, 'Stack1'); - new lambda.Function(stack1, 'Func', { - code: asset, - runtime: lambda.Runtime.NODEJS_10_X, - handler: 'foom', - }); - - const stack2 = new cdk.Stack(app, 'Stack2'); - expect(() => new lambda.Function(stack2, 'Func', { - code: asset, - runtime: lambda.Runtime.NODEJS_10_X, - handler: 'foom', - })).toThrow(/already associated/); - }); }); describe('lambda.Code.fromCfnParameters', () => { diff --git a/packages/@aws-cdk/aws-licensemanager/package.json b/packages/@aws-cdk/aws-licensemanager/package.json index d20a899707fa0..42d765826a30d 100644 --- a/packages/@aws-cdk/aws-licensemanager/package.json +++ b/packages/@aws-cdk/aws-licensemanager/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index 13e6a5543905c..5185d7075e1e3 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index b8df0773819e7..711de0a3d82bc 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -103,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-macie/package.json b/packages/@aws-cdk/aws-macie/package.json index b406426cc12e2..3d47c18c61083 100644 --- a/packages/@aws-cdk/aws-macie/package.json +++ b/packages/@aws-cdk/aws-macie/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-managedblockchain/package.json b/packages/@aws-cdk/aws-managedblockchain/package.json index fa719693e2864..f9afaaef1e147 100644 --- a/packages/@aws-cdk/aws-managedblockchain/package.json +++ b/packages/@aws-cdk/aws-managedblockchain/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediaconnect/.eslintrc.js b/packages/@aws-cdk/aws-mediaconnect/.eslintrc.js deleted file mode 100644 index 61dd8dd001f63..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/.eslintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/eslintrc'); -baseConfig.parserOptions.project = __dirname + '/tsconfig.json'; -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-mediaconnect/.gitignore b/packages/@aws-cdk/aws-mediaconnect/.gitignore deleted file mode 100644 index 62ebc95d75ce6..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/.gitignore +++ /dev/null @@ -1,19 +0,0 @@ -*.js -*.js.map -*.d.ts -tsconfig.json -node_modules -*.generated.ts -dist -.jsii - -.LAST_BUILD -.nyc_output -coverage -.nycrc -.LAST_PACKAGE -*.snk -nyc.config.js -!.eslintrc.js -!jest.config.js -junit.xml diff --git a/packages/@aws-cdk/aws-mediaconnect/.npmignore b/packages/@aws-cdk/aws-mediaconnect/.npmignore deleted file mode 100644 index e4486030fcb17..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/.npmignore +++ /dev/null @@ -1,28 +0,0 @@ -# Don't include original .ts files when doing `npm pack` -*.ts -!*.d.ts -coverage -.nyc_output -*.tgz - -dist -.LAST_PACKAGE -.LAST_BUILD -!*.js - -# Include .jsii -!.jsii - -*.snk - -*.tsbuildinfo - -tsconfig.json - -.eslintrc.js -jest.config.js - -# exclude cdk artifacts -**/cdk.out -junit.xml -test/ diff --git a/packages/@aws-cdk/aws-mediaconnect/LICENSE b/packages/@aws-cdk/aws-mediaconnect/LICENSE deleted file mode 100644 index 28e4bdcec77ec..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/@aws-cdk/aws-mediaconnect/NOTICE b/packages/@aws-cdk/aws-mediaconnect/NOTICE deleted file mode 100644 index 5fc3826926b5b..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AWS Cloud Development Kit (AWS CDK) -Copyright 2018-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-mediaconnect/README.md b/packages/@aws-cdk/aws-mediaconnect/README.md deleted file mode 100644 index 46776462c67ff..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/README.md +++ /dev/null @@ -1,20 +0,0 @@ -# AWS::MediaConnect Construct Library - - ---- - -![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge) - -> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use. -> -> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib - ---- - - - -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -```ts -import mediaconnect = require('@aws-cdk/aws-mediaconnect'); -``` diff --git a/packages/@aws-cdk/aws-mediaconnect/jest.config.js b/packages/@aws-cdk/aws-mediaconnect/jest.config.js deleted file mode 100644 index 54e28beb9798b..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/jest.config.js +++ /dev/null @@ -1,2 +0,0 @@ -const baseConfig = require('cdk-build-tools/config/jest.config'); -module.exports = baseConfig; diff --git a/packages/@aws-cdk/aws-mediaconnect/lib/index.ts b/packages/@aws-cdk/aws-mediaconnect/lib/index.ts deleted file mode 100644 index ffee08204e7b6..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/lib/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// AWS::MediaConnect CloudFormation Resources: -export * from './mediaconnect.generated'; diff --git a/packages/@aws-cdk/aws-mediaconnect/package.json b/packages/@aws-cdk/aws-mediaconnect/package.json deleted file mode 100644 index cba3f940f3510..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/package.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "name": "@aws-cdk/aws-mediaconnect", - "version": "0.0.0", - "description": "The CDK Construct Library for AWS::MediaConnect", - "main": "lib/index.js", - "types": "lib/index.d.ts", - "jsii": { - "outdir": "dist", - "projectReferences": true, - "targets": { - "dotnet": { - "namespace": "Amazon.CDK.AWS.MediaConnect", - "packageId": "Amazon.CDK.AWS.MediaConnect", - "signAssembly": true, - "assemblyOriginatorKeyFile": "../../key.snk", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" - }, - "java": { - "package": "software.amazon.awscdk.services.mediaconnect", - "maven": { - "groupId": "software.amazon.awscdk", - "artifactId": "mediaconnect" - } - }, - "python": { - "classifiers": [ - "Framework :: AWS CDK", - "Framework :: AWS CDK :: 1" - ], - "distName": "aws-cdk.aws-mediaconnect", - "module": "aws_cdk.aws_mediaconnect" - } - } - }, - "repository": { - "type": "git", - "url": "https://github.com/aws/aws-cdk.git", - "directory": "packages/@aws-cdk/aws-mediaconnect" - }, - "homepage": "https://github.com/aws/aws-cdk", - "scripts": { - "build": "cdk-build", - "watch": "cdk-watch", - "lint": "cdk-lint", - "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f", - "package": "cdk-package", - "awslint": "cdk-awslint", - "cfn2ts": "cfn2ts", - "build+test+package": "npm run build+test && npm run package", - "build+test": "npm run build && npm test", - "compat": "cdk-compat", - "gen": "cfn2ts", - "rosetta:extract": "yarn --silent jsii-rosetta extract" - }, - "cdk-build": { - "cloudformation": "AWS::MediaConnect", - "jest": true, - "env": { - "AWSLINT_BASE_CONSTRUCT": "true" - } - }, - "keywords": [ - "aws", - "cdk", - "constructs", - "AWS::MediaConnect", - "aws-mediaconnect" - ], - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com", - "organization": true - }, - "license": "Apache-2.0", - "devDependencies": { - "@aws-cdk/assert": "0.0.0", - "cdk-build-tools": "0.0.0", - "cfn2ts": "0.0.0", - "pkglint": "0.0.0" - }, - "dependencies": { - "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" - }, - "peerDependencies": { - "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5" - }, - "engines": { - "node": ">= 14.15.0" - }, - "stability": "experimental", - "maturity": "cfn-only", - "awscdkio": { - "announce": false - }, - "private": true -} diff --git a/packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts b/packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts deleted file mode 100644 index e394ef336bfb4..0000000000000 --- a/packages/@aws-cdk/aws-mediaconnect/test/mediaconnect.test.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@aws-cdk/assert/jest'; -import {} from '../lib'; - -test('No tests are specified for this package', () => { - expect(true).toBe(true); -}); diff --git a/packages/@aws-cdk/aws-mediaconvert/package.json b/packages/@aws-cdk/aws-mediaconvert/package.json index de7f37a53ca1d..0a44b32b9d184 100644 --- a/packages/@aws-cdk/aws-mediaconvert/package.json +++ b/packages/@aws-cdk/aws-mediaconvert/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-medialive/package.json b/packages/@aws-cdk/aws-medialive/package.json index 8a6e1a6ed4095..c6d5d99df2a29 100644 --- a/packages/@aws-cdk/aws-medialive/package.json +++ b/packages/@aws-cdk/aws-medialive/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediapackage/package.json b/packages/@aws-cdk/aws-mediapackage/package.json index e8da81e9330ed..bfe6be1316e52 100644 --- a/packages/@aws-cdk/aws-mediapackage/package.json +++ b/packages/@aws-cdk/aws-mediapackage/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediastore/package.json b/packages/@aws-cdk/aws-mediastore/package.json index 25fb05a01edb9..a519de117fded 100644 --- a/packages/@aws-cdk/aws-mediastore/package.json +++ b/packages/@aws-cdk/aws-mediastore/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-msk/package.json b/packages/@aws-cdk/aws-msk/package.json index 62603ab056c80..a65ca6e875c4d 100644 --- a/packages/@aws-cdk/aws-msk/package.json +++ b/packages/@aws-cdk/aws-msk/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mwaa/package.json b/packages/@aws-cdk/aws-mwaa/package.json index 1fa969e08b06d..dc9b81df0ed47 100644 --- a/packages/@aws-cdk/aws-mwaa/package.json +++ b/packages/@aws-cdk/aws-mwaa/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-neptune/package.json b/packages/@aws-cdk/aws-neptune/package.json index 1f006cbc69c52..a3ec119e4387a 100644 --- a/packages/@aws-cdk/aws-neptune/package.json +++ b/packages/@aws-cdk/aws-neptune/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json index ca8c3ecf2bf30..f5bd7120e51ed 100644 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-networkmanager/package.json b/packages/@aws-cdk/aws-networkmanager/package.json index f15f61d559b79..a78f59a812e28 100644 --- a/packages/@aws-cdk/aws-networkmanager/package.json +++ b/packages/@aws-cdk/aws-networkmanager/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-opsworks/package.json b/packages/@aws-cdk/aws-opsworks/package.json index ea9d4e937e706..cd7725a8fb859 100644 --- a/packages/@aws-cdk/aws-opsworks/package.json +++ b/packages/@aws-cdk/aws-opsworks/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-opsworkscm/package.json b/packages/@aws-cdk/aws-opsworkscm/package.json index 7d7647e4df78d..1a6ac9dc50b12 100644 --- a/packages/@aws-cdk/aws-opsworkscm/package.json +++ b/packages/@aws-cdk/aws-opsworkscm/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-pinpoint/package.json b/packages/@aws-cdk/aws-pinpoint/package.json index 779029d2c56a6..1d5d4678eb364 100644 --- a/packages/@aws-cdk/aws-pinpoint/package.json +++ b/packages/@aws-cdk/aws-pinpoint/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-pinpointemail/package.json b/packages/@aws-cdk/aws-pinpointemail/package.json index c496a4050238b..1c1f984d535f2 100644 --- a/packages/@aws-cdk/aws-pinpointemail/package.json +++ b/packages/@aws-cdk/aws-pinpointemail/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-qldb/package.json b/packages/@aws-cdk/aws-qldb/package.json index 4ba97349e2de4..cf6b0007c39ac 100644 --- a/packages/@aws-cdk/aws-qldb/package.json +++ b/packages/@aws-cdk/aws-qldb/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ram/package.json b/packages/@aws-cdk/aws-ram/package.json index 1d4706a60e3bd..97889d4010649 100644 --- a/packages/@aws-cdk/aws-ram/package.json +++ b/packages/@aws-cdk/aws-ram/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts b/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts index b877db48533e6..6fa16927fd51a 100644 --- a/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts +++ b/packages/@aws-cdk/aws-rds/lib/cluster-engine.ts @@ -422,10 +422,6 @@ export class AuroraPostgresEngineVersion { public static readonly VER_9_6_16 = AuroraPostgresEngineVersion.of('9.6.16', '9.6'); /** Version "9.6.17". */ public static readonly VER_9_6_17 = AuroraPostgresEngineVersion.of('9.6.17', '9.6'); - /** Version "9.6.18". */ - public static readonly VER_9_6_18 = AuroraPostgresEngineVersion.of('9.6.18', '9.6'); - /** Version "9.6.19". */ - public static readonly VER_9_6_19 = AuroraPostgresEngineVersion.of('9.6.19', '9.6'); /** Version "10.4". */ public static readonly VER_10_4 = AuroraPostgresEngineVersion.of('10.4', '10'); /** Version "10.5". */ @@ -438,10 +434,6 @@ export class AuroraPostgresEngineVersion { public static readonly VER_10_11 = AuroraPostgresEngineVersion.of('10.11', '10', { s3Import: true, s3Export: true }); /** Version "10.12". */ public static readonly VER_10_12 = AuroraPostgresEngineVersion.of('10.12', '10', { s3Import: true, s3Export: true }); - /** Version "10.13". */ - public static readonly VER_10_13 = AuroraPostgresEngineVersion.of('10.13', '10', { s3Import: true, s3Export: true }); - /** Version "10.14". */ - public static readonly VER_10_14 = AuroraPostgresEngineVersion.of('10.14', '10', { s3Import: true, s3Export: true }); /** Version "11.4". */ public static readonly VER_11_4 = AuroraPostgresEngineVersion.of('11.4', '11', { s3Import: true }); /** Version "11.6". */ diff --git a/packages/@aws-cdk/aws-rds/package.json b/packages/@aws-cdk/aws-rds/package.json index 4505e29e5da29..ea25b5bd99d77 100644 --- a/packages/@aws-cdk/aws-rds/package.json +++ b/packages/@aws-cdk/aws-rds/package.json @@ -109,7 +109,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-redshift/package.json b/packages/@aws-cdk/aws-redshift/package.json index 5ce179a8c1419..7347b516e04dd 100644 --- a/packages/@aws-cdk/aws-redshift/package.json +++ b/packages/@aws-cdk/aws-redshift/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-resourcegroups/package.json b/packages/@aws-cdk/aws-resourcegroups/package.json index 47984d69dd1b1..189f725467b50 100644 --- a/packages/@aws-cdk/aws-resourcegroups/package.json +++ b/packages/@aws-cdk/aws-resourcegroups/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-robomaker/package.json b/packages/@aws-cdk/aws-robomaker/package.json index f8485776136d7..242d9f031ba37 100644 --- a/packages/@aws-cdk/aws-robomaker/package.json +++ b/packages/@aws-cdk/aws-robomaker/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index b510696b08f54..0e34f572424a9 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index c7ef229dc3407..4aede2b1be6c8 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -106,7 +106,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index f91398736574e..f549ea9dc319e 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -75,7 +75,7 @@ "devDependencies": { "@aws-cdk/assert": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-route53resolver/README.md b/packages/@aws-cdk/aws-route53resolver/README.md index 9cf4ab7748b3d..f6eea77064f22 100644 --- a/packages/@aws-cdk/aws-route53resolver/README.md +++ b/packages/@aws-cdk/aws-route53resolver/README.md @@ -9,6 +9,14 @@ > > [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib +![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) + +> The APIs of higher level constructs in this module are experimental and under active development. +> They are subject to non-backward compatible changes or removal in any future version. These are +> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be +> announced in the release notes. This means that while you may use them, you may need to update +> your source code when upgrading to a newer version of this package. + --- diff --git a/packages/@aws-cdk/aws-route53resolver/package.json b/packages/@aws-cdk/aws-route53resolver/package.json index d1dcd3718c83c..a7d4597fa58f9 100644 --- a/packages/@aws-cdk/aws-route53resolver/package.json +++ b/packages/@aws-cdk/aws-route53resolver/package.json @@ -89,10 +89,10 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", - "maturity": "cfn-only", + "maturity": "experimental", "awscdkio": { "announce": false } diff --git a/packages/@aws-cdk/aws-s3-assets/package.json b/packages/@aws-cdk/aws-s3-assets/package.json index c3254542be8af..10dfc20dc1cd4 100644 --- a/packages/@aws-cdk/aws-s3-assets/package.json +++ b/packages/@aws-cdk/aws-s3-assets/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py b/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py index bf16d84608517..34a2da1681f4d 100644 --- a/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py +++ b/packages/@aws-cdk/aws-s3-deployment/lib/lambda/index.py @@ -7,11 +7,10 @@ import logging import shutil import boto3 -import contextlib from datetime import datetime from uuid import uuid4 -from urllib.request import Request, urlopen +from botocore.vendored import requests from zipfile import ZipFile logger = logging.getLogger() @@ -213,9 +212,8 @@ def cfn_send(event, context, responseStatus, responseData={}, physicalResourceId } try: - request = Request(responseUrl, method='PUT', data=bytes(body.encode('utf-8')), headers=headers) - with contextlib.closing(urlopen(request)) as response: - logger.info("| status code: " + response.reason) + response = requests.put(responseUrl, data=body, headers=headers) + logger.info("| status code: " + response.reason) except Exception as e: logger.error("| unable to send response to CloudFormation") logger.exception(e) diff --git a/packages/@aws-cdk/aws-s3-deployment/package.json b/packages/@aws-cdk/aws-s3-deployment/package.json index 1c6a156813c45..0ae5312216d20 100644 --- a/packages/@aws-cdk/aws-s3-deployment/package.json +++ b/packages/@aws-cdk/aws-s3-deployment/package.json @@ -111,7 +111,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json index 3e138f405e0d6..aa8c7fddd60c7 100644 --- a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json +++ b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment-cloudfront.expected.json @@ -295,7 +295,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152" }, "S3Key": { "Fn::Join": [ @@ -308,7 +308,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" } ] } @@ -321,7 +321,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" } ] } @@ -331,19 +331,19 @@ ] } }, + "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn" ] }, - "Handler": "index.handler", + "Runtime": "python3.6", "Layers": [ { "Ref": "DeployWithInvalidationAwsCliLayerDEDD5787" } ], - "Runtime": "python3.6", "Timeout": 900 }, "DependsOn": [ @@ -365,17 +365,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152": { "Type": "String", - "Description": "S3 bucket for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "S3 bucket for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED": { "Type": "String", - "Description": "S3 key for asset version \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "S3 key for asset version \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aArtifactHash595EC1E7": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7ArtifactHash8926088E": { "Type": "String", - "Description": "Artifact hash for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "Artifact hash for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, "AssetParametersfc4481abf279255619ff7418faa5d24456fef3432ea0da59c95542578ff0222eS3Bucket9CD8B20A": { "Type": "String", diff --git a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json index 9d52b89269f5a..267c6eaa23476 100644 --- a/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json +++ b/packages/@aws-cdk/aws-s3-deployment/test/integ.bucket-deployment.expected.json @@ -304,7 +304,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152" }, "S3Key": { "Fn::Join": [ @@ -317,7 +317,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" } ] } @@ -330,7 +330,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76" + "Ref": "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED" } ] } @@ -340,19 +340,19 @@ ] } }, + "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "CustomCDKBucketDeployment8693BB64968944B69AAFB0CC9EB8756CServiceRole89A01265", "Arn" ] }, - "Handler": "index.handler", + "Runtime": "python3.6", "Layers": [ { "Ref": "DeployMeAwsCliLayer5F9219E9" } ], - "Runtime": "python3.6", "Timeout": 900 }, "DependsOn": [ @@ -700,17 +700,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3BucketFD1BBE00": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3Bucket28CE5152": { "Type": "String", - "Description": "S3 bucket for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "S3 bucket for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aS3VersionKey6E54DC76": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7S3VersionKeyAF6E05ED": { "Type": "String", - "Description": "S3 key for asset version \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "S3 key for asset version \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, - "AssetParameters8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59aArtifactHash595EC1E7": { + "AssetParameters3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7ArtifactHash8926088E": { "Type": "String", - "Description": "Artifact hash for asset \"8bda025b845a88fbeb54ef75e52048aa9f3378463116cb413f12f6014673a59a\"" + "Description": "Artifact hash for asset \"3c3ed777478fe845fb5950df5e26461242b39cf220f00e0683aab244d9d7c0f7\"" }, "AssetParametersfc4481abf279255619ff7418faa5d24456fef3432ea0da59c95542578ff0222eS3Bucket9CD8B20A": { "Type": "String", diff --git a/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py b/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py index fcd79f18af4d5..cd88eaf6a5269 100644 --- a/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py +++ b/packages/@aws-cdk/aws-s3-deployment/test/lambda/test.py @@ -425,7 +425,7 @@ def read_aws_out(): # resourceProps: map to pass to "ResourceProperties" # expected_status: "SUCCESS" or "FAILED" def invoke_handler(requestType, resourceProps, old_resource_props=None, physical_id=None, expected_status='SUCCESS'): - response_url = 'http://' + response_url = '' event={ 'ResponseURL': response_url, @@ -443,33 +443,25 @@ def invoke_handler(requestType, resourceProps, old_resource_props=None, physical event['PhysicalResourceId'] = physical_id class ContextMock: log_stream_name = 'log_stream' - class ResponseMock: - reason = 'OK' - # needed because the context manager calls this - close = lambda _: _ + class ResponseMock: reason = 'OK' context = ContextMock() - index.urlopen = MagicMock(return_value=ResponseMock()) + requests.put = MagicMock(return_value=ResponseMock()) #-------------------- # invoke the handler #-------------------- index.handler(event, context) - index.urlopen.assert_called_once() - (pos_args, _) = index.urlopen.call_args + requests.put.assert_called_once() + (pos_args, kw_args) = requests.put.call_args - actual_request = pos_args[0] - actual_url = actual_request.full_url - actual_data = actual_request.data - actual_method = actual_request.method + actual_url = pos_args[0] + actual_data = kw_args['data'] if actual_url != response_url: raise Exception("Invalid url used for sending CFN response. expected=%s actual=%s" % (response_url, actual_url)) - if actual_method != 'PUT': - raise Exception("Invalid method used for sending CFN response. expected=PUT actual=%s" % (actual_method,)) - resp = json.loads(actual_data) def assert_field(name, expect=None): diff --git a/packages/@aws-cdk/aws-s3-notifications/package.json b/packages/@aws-cdk/aws-s3-notifications/package.json index 7f5bb8ab5a193..89d5fa86793b1 100644 --- a/packages/@aws-cdk/aws-s3-notifications/package.json +++ b/packages/@aws-cdk/aws-s3-notifications/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-s3/lib/bucket.ts b/packages/@aws-cdk/aws-s3/lib/bucket.ts index 4dbda84d6b34d..2d3a10285198f 100644 --- a/packages/@aws-cdk/aws-s3/lib/bucket.ts +++ b/packages/@aws-cdk/aws-s3/lib/bucket.ts @@ -5,9 +5,8 @@ import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import { Fn, IResource, Lazy, RemovalPolicy, Resource, ResourceProps, Stack, Token, - CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, FeatureFlags, + CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, } from '@aws-cdk/core'; -import * as cxapi from '@aws-cdk/cx-api'; import { Construct } from 'constructs'; import { BucketPolicy } from './bucket-policy'; import { IBucketNotificationDestination } from './destination'; @@ -162,18 +161,6 @@ export interface IBucket extends IResource { */ grantPut(identity: iam.IGrantable, objectsKeyPattern?: any): iam.Grant; - /** - * Grant the given IAM identity permissions to modify the ACLs of objects in the given Bucket. - * - * If your application has the '@aws-cdk/aws-s3:grantWriteWithoutAcl' feature flag set, - * calling {@link grantWrite} or {@link grantReadWrite} no longer grants permissions to modify the ACLs of the objects; - * in this case, if you need to modify object ACLs, call this method explicitly. - * - * @param identity The principal - * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') - */ - grantPutAcl(identity: iam.IGrantable, objectsKeyPattern?: string): iam.Grant; - /** * Grants s3:DeleteObject* permission to an IAM pricipal for objects * in this bucket. @@ -597,7 +584,7 @@ abstract class BucketBase extends Resource implements IBucket { * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') */ public grantWrite(identity: iam.IGrantable, objectsKeyPattern: any = '*') { - return this.grant(identity, this.writeActions, perms.KEY_WRITE_ACTIONS, + return this.grant(identity, perms.BUCKET_WRITE_ACTIONS, perms.KEY_WRITE_ACTIONS, this.bucketArn, this.arnForObjects(objectsKeyPattern)); } @@ -611,12 +598,7 @@ abstract class BucketBase extends Resource implements IBucket { * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') */ public grantPut(identity: iam.IGrantable, objectsKeyPattern: any = '*') { - return this.grant(identity, this.putActions, perms.KEY_WRITE_ACTIONS, - this.arnForObjects(objectsKeyPattern)); - } - - public grantPutAcl(identity: iam.IGrantable, objectsKeyPattern: string = '*') { - return this.grant(identity, perms.BUCKET_PUT_ACL_ACTIONS, [], + return this.grant(identity, perms.BUCKET_PUT_ACTIONS, perms.KEY_WRITE_ACTIONS, this.arnForObjects(objectsKeyPattern)); } @@ -643,7 +625,7 @@ abstract class BucketBase extends Resource implements IBucket { * @param objectsKeyPattern Restrict the permission to a certain key pattern (default '*') */ public grantReadWrite(identity: iam.IGrantable, objectsKeyPattern: any = '*') { - const bucketActions = perms.BUCKET_READ_ACTIONS.concat(this.writeActions); + const bucketActions = perms.BUCKET_READ_ACTIONS.concat(perms.BUCKET_WRITE_ACTIONS); // we need unique permissions because some permissions are common between read and write key actions const keyActions = [...new Set([...perms.KEY_READ_ACTIONS, ...perms.KEY_WRITE_ACTIONS])]; @@ -691,19 +673,6 @@ abstract class BucketBase extends Resource implements IBucket { }); } - private get writeActions(): string[] { - return [ - ...perms.BUCKET_DELETE_ACTIONS, - ...this.putActions, - ]; - } - - private get putActions(): string[] { - return FeatureFlags.of(this).isEnabled(cxapi.S3_GRANT_WRITE_WITHOUT_ACL) - ? perms.BUCKET_PUT_ACTIONS - : perms.LEGACY_BUCKET_PUT_ACTIONS; - } - private urlJoin(...components: string[]): string { return components.reduce((result, component) => { if (result.endsWith('/')) { diff --git a/packages/@aws-cdk/aws-s3/lib/perms.ts b/packages/@aws-cdk/aws-s3/lib/perms.ts index eebab60da2104..544bdda936da9 100644 --- a/packages/@aws-cdk/aws-s3/lib/perms.ts +++ b/packages/@aws-cdk/aws-s3/lib/perms.ts @@ -4,24 +4,20 @@ export const BUCKET_READ_ACTIONS = [ 's3:List*', ]; -export const LEGACY_BUCKET_PUT_ACTIONS = [ - 's3:PutObject*', - 's3:Abort*', -]; - export const BUCKET_PUT_ACTIONS = [ - 's3:PutObject', + 's3:PutObject*', 's3:Abort*', ]; -export const BUCKET_PUT_ACL_ACTIONS = [ - 's3:PutObjectAcl', -]; - export const BUCKET_DELETE_ACTIONS = [ 's3:DeleteObject*', ]; +export const BUCKET_WRITE_ACTIONS = [ + ...BUCKET_DELETE_ACTIONS, + ...BUCKET_PUT_ACTIONS, +]; + export const KEY_READ_ACTIONS = [ 'kms:Decrypt', 'kms:DescribeKey', diff --git a/packages/@aws-cdk/aws-s3/package.json b/packages/@aws-cdk/aws-s3/package.json index 5fd6bb04be7b9..3ed503ab990cd 100644 --- a/packages/@aws-cdk/aws-s3/package.json +++ b/packages/@aws-cdk/aws-s3/package.json @@ -86,8 +86,7 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5", - "@aws-cdk/cx-api": "0.0.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -95,11 +94,10 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "10.0.0-pre.5", - "@aws-cdk/cx-api": "0.0.0" + "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-s3/test/bucket.test.ts b/packages/@aws-cdk/aws-s3/test/bucket.test.ts index cb9202b28cfd7..997a3abd4e56f 100644 --- a/packages/@aws-cdk/aws-s3/test/bucket.test.ts +++ b/packages/@aws-cdk/aws-s3/test/bucket.test.ts @@ -3,7 +3,6 @@ import { countResources, expect, haveResource, haveResourceLike, ResourcePart, S import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import * as cdk from '@aws-cdk/core'; -import * as cxapi from '@aws-cdk/cx-api'; import { nodeunitShim, Test } from 'nodeunit-shim'; import * as s3 from '../lib'; @@ -1086,293 +1085,176 @@ nodeunitShim({ test.done(); }, - - 'does not grant PutObjectAcl when the S3_GRANT_WRITE_WITHOUT_ACL feature is enabled'(test: Test) { - const app = new cdk.App({ - context: { - [cxapi.S3_GRANT_WRITE_WITHOUT_ACL]: true, - }, - }); - const stack = new cdk.Stack(app, 'Stack'); - const bucket = new s3.Bucket(stack, 'MyBucket'); - const user = new iam.User(stack, 'MyUser'); - - bucket.grantReadWrite(user); - - expect(stack).to(haveResourceLike('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': [ - { - 'Action': [ - 's3:GetObject*', - 's3:GetBucket*', - 's3:List*', - 's3:DeleteObject*', - 's3:PutObject', - 's3:Abort*', - ], - 'Resource': [ - { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, - { - 'Fn::Join': ['', [ - { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, - '/*', - ]], - }, - ], - }, - ], - }, - })); - - test.done(); - }, }, - 'grantWrite': { - 'with KMS key has appropriate permissions for multipart uploads'(test: Test) { - const stack = new cdk.Stack(); - const bucket = new s3.Bucket(stack, 'MyBucket', { encryption: s3.BucketEncryption.KMS }); - const user = new iam.User(stack, 'MyUser'); - bucket.grantWrite(user); + 'grantWrite with KMS key has appropriate permissions for multipart uploads'(test: Test) { + const stack = new cdk.Stack(); + const bucket = new s3.Bucket(stack, 'MyBucket', { encryption: s3.BucketEncryption.KMS }); + const user = new iam.User(stack, 'MyUser'); + bucket.grantWrite(user); - expect(stack).toMatch({ - 'Resources': { - 'MyBucketKeyC17130CF': { - 'Type': 'AWS::KMS::Key', - 'Properties': { - 'KeyPolicy': { - 'Statement': [ - { - 'Action': [ - 'kms:Create*', - 'kms:Describe*', - 'kms:Enable*', - 'kms:List*', - 'kms:Put*', - 'kms:Update*', - 'kms:Revoke*', - 'kms:Disable*', - 'kms:Get*', - 'kms:Delete*', - 'kms:ScheduleKeyDeletion', - 'kms:CancelKeyDeletion', - 'kms:GenerateDataKey', - 'kms:TagResource', - 'kms:UntagResource', - ], - 'Effect': 'Allow', - 'Principal': { - 'AWS': { - 'Fn::Join': [ - '', - [ - 'arn:', - { - 'Ref': 'AWS::Partition', - }, - ':iam::', - { - 'Ref': 'AWS::AccountId', - }, - ':root', - ], - ], - }, - }, - 'Resource': '*', - }, - { - 'Action': [ - 'kms:Encrypt', - 'kms:ReEncrypt*', - 'kms:GenerateDataKey*', - 'kms:Decrypt', - ], - 'Effect': 'Allow', - 'Principal': { - 'AWS': { - 'Fn::GetAtt': [ - 'MyUserDC45028B', - 'Arn', + expect(stack).toMatch({ + 'Resources': { + 'MyBucketKeyC17130CF': { + 'Type': 'AWS::KMS::Key', + 'Properties': { + 'KeyPolicy': { + 'Statement': [ + { + 'Action': [ + 'kms:Create*', + 'kms:Describe*', + 'kms:Enable*', + 'kms:List*', + 'kms:Put*', + 'kms:Update*', + 'kms:Revoke*', + 'kms:Disable*', + 'kms:Get*', + 'kms:Delete*', + 'kms:ScheduleKeyDeletion', + 'kms:CancelKeyDeletion', + 'kms:GenerateDataKey', + 'kms:TagResource', + 'kms:UntagResource', + ], + 'Effect': 'Allow', + 'Principal': { + 'AWS': { + 'Fn::Join': [ + '', + [ + 'arn:', + { + 'Ref': 'AWS::Partition', + }, + ':iam::', + { + 'Ref': 'AWS::AccountId', + }, + ':root', ], - }, + ], }, - 'Resource': '*', }, - ], - 'Version': '2012-10-17', - }, - 'Description': 'Created by Default/MyBucket', - }, - 'UpdateReplacePolicy': 'Retain', - 'DeletionPolicy': 'Retain', - }, - 'MyBucketF68F3FF0': { - 'Type': 'AWS::S3::Bucket', - 'Properties': { - 'BucketEncryption': { - 'ServerSideEncryptionConfiguration': [ - { - 'ServerSideEncryptionByDefault': { - 'KMSMasterKeyID': { - 'Fn::GetAtt': [ - 'MyBucketKeyC17130CF', - 'Arn', - ], - }, - 'SSEAlgorithm': 'aws:kms', + 'Resource': '*', + }, + { + 'Action': [ + 'kms:Encrypt', + 'kms:ReEncrypt*', + 'kms:GenerateDataKey*', + 'kms:Decrypt', + ], + 'Effect': 'Allow', + 'Principal': { + 'AWS': { + 'Fn::GetAtt': [ + 'MyUserDC45028B', + 'Arn', + ], }, }, - ], - }, + 'Resource': '*', + }, + ], + 'Version': '2012-10-17', }, - 'UpdateReplacePolicy': 'Retain', - 'DeletionPolicy': 'Retain', - }, - 'MyUserDC45028B': { - 'Type': 'AWS::IAM::User', + 'Description': 'Created by Default/MyBucket', }, - 'MyUserDefaultPolicy7B897426': { - 'Type': 'AWS::IAM::Policy', - 'Properties': { - 'PolicyDocument': { - 'Statement': [ - { - 'Action': [ - 's3:DeleteObject*', - 's3:PutObject*', - 's3:Abort*', - ], - 'Effect': 'Allow', - 'Resource': [ - { - 'Fn::GetAtt': [ - 'MyBucketF68F3FF0', - 'Arn', - ], - }, - { - 'Fn::Join': [ - '', - [ - { - 'Fn::GetAtt': [ - 'MyBucketF68F3FF0', - 'Arn', - ], - }, - '/*', - ], - ], - }, - ], - }, - { - 'Action': [ - 'kms:Encrypt', - 'kms:ReEncrypt*', - 'kms:GenerateDataKey*', - 'kms:Decrypt', - ], - 'Effect': 'Allow', - 'Resource': { + 'UpdateReplacePolicy': 'Retain', + 'DeletionPolicy': 'Retain', + }, + 'MyBucketF68F3FF0': { + 'Type': 'AWS::S3::Bucket', + 'Properties': { + 'BucketEncryption': { + 'ServerSideEncryptionConfiguration': [ + { + 'ServerSideEncryptionByDefault': { + 'KMSMasterKeyID': { 'Fn::GetAtt': [ 'MyBucketKeyC17130CF', 'Arn', ], }, + 'SSEAlgorithm': 'aws:kms', }, - ], - 'Version': '2012-10-17', - }, - 'PolicyName': 'MyUserDefaultPolicy7B897426', - 'Users': [ - { - 'Ref': 'MyUserDC45028B', }, ], }, }, + 'UpdateReplacePolicy': 'Retain', + 'DeletionPolicy': 'Retain', }, - }); - - test.done(); - }, - - 'does not grant PutObjectAcl when the S3_GRANT_WRITE_WITHOUT_ACL feature is enabled'(test: Test) { - const app = new cdk.App({ - context: { - [cxapi.S3_GRANT_WRITE_WITHOUT_ACL]: true, + 'MyUserDC45028B': { + 'Type': 'AWS::IAM::User', }, - }); - const stack = new cdk.Stack(app, 'Stack'); - const bucket = new s3.Bucket(stack, 'MyBucket'); - const user = new iam.User(stack, 'MyUser'); - - bucket.grantWrite(user); - - expect(stack).to(haveResourceLike('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': [ - { - 'Action': [ - 's3:DeleteObject*', - 's3:PutObject', - 's3:Abort*', - ], - 'Resource': [ - { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, + 'MyUserDefaultPolicy7B897426': { + 'Type': 'AWS::IAM::Policy', + 'Properties': { + 'PolicyDocument': { + 'Statement': [ { - 'Fn::Join': ['', [ - { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, - '/*', - ]], + 'Action': [ + 's3:DeleteObject*', + 's3:PutObject*', + 's3:Abort*', + ], + 'Effect': 'Allow', + 'Resource': [ + { + 'Fn::GetAtt': [ + 'MyBucketF68F3FF0', + 'Arn', + ], + }, + { + 'Fn::Join': [ + '', + [ + { + 'Fn::GetAtt': [ + 'MyBucketF68F3FF0', + 'Arn', + ], + }, + '/*', + ], + ], + }, + ], + }, + { + 'Action': [ + 'kms:Encrypt', + 'kms:ReEncrypt*', + 'kms:GenerateDataKey*', + 'kms:Decrypt', + ], + 'Effect': 'Allow', + 'Resource': { + 'Fn::GetAtt': [ + 'MyBucketKeyC17130CF', + 'Arn', + ], + }, }, ], + 'Version': '2012-10-17', }, - ], - }, - })); - - test.done(); - }, - }, - - 'grantPut': { - 'does not grant PutObjectAcl when the S3_GRANT_WRITE_WITHOUT_ACL feature is enabled'(test: Test) { - const app = new cdk.App({ - context: { - [cxapi.S3_GRANT_WRITE_WITHOUT_ACL]: true, - }, - }); - const stack = new cdk.Stack(app, 'Stack'); - const bucket = new s3.Bucket(stack, 'MyBucket'); - const user = new iam.User(stack, 'MyUser'); - - bucket.grantPut(user); - - expect(stack).to(haveResourceLike('AWS::IAM::Policy', { - 'PolicyDocument': { - 'Statement': [ - { - 'Action': [ - 's3:PutObject', - 's3:Abort*', - ], - 'Resource': { - 'Fn::Join': ['', [ - { 'Fn::GetAtt': ['MyBucketF68F3FF0', 'Arn'] }, - '/*', - ]], + 'PolicyName': 'MyUserDefaultPolicy7B897426', + 'Users': [ + { + 'Ref': 'MyUserDC45028B', }, - }, - ], + ], + }, }, - })); + }, + }); - test.done(); - }, + test.done(); }, 'more grants'(test: Test) { diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json index e4981ab8180e0..d6c58403a5414 100644 --- a/packages/@aws-cdk/aws-sagemaker/package.json +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sam/package.json b/packages/@aws-cdk/aws-sam/package.json index fd6cd8628a312..e4ccbaa37c62f 100644 --- a/packages/@aws-cdk/aws-sam/package.json +++ b/packages/@aws-cdk/aws-sam/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sdb/package.json b/packages/@aws-cdk/aws-sdb/package.json index c536472f8c508..2ae25527bbcbf 100644 --- a/packages/@aws-cdk/aws-sdb/package.json +++ b/packages/@aws-cdk/aws-sdb/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-secretsmanager/package.json b/packages/@aws-cdk/aws-secretsmanager/package.json index fd74429eddca2..0420b2402529c 100644 --- a/packages/@aws-cdk/aws-secretsmanager/package.json +++ b/packages/@aws-cdk/aws-secretsmanager/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-securityhub/package.json b/packages/@aws-cdk/aws-securityhub/package.json index cdcd56d59ba6d..cddae0a79b9b0 100644 --- a/packages/@aws-cdk/aws-securityhub/package.json +++ b/packages/@aws-cdk/aws-securityhub/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicecatalog/package.json b/packages/@aws-cdk/aws-servicecatalog/package.json index ccbf4b26d856d..535b2205ee518 100644 --- a/packages/@aws-cdk/aws-servicecatalog/package.json +++ b/packages/@aws-cdk/aws-servicecatalog/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicediscovery/package.json b/packages/@aws-cdk/aws-servicediscovery/package.json index 99ee44935b839..a2f12ab225ebc 100644 --- a/packages/@aws-cdk/aws-servicediscovery/package.json +++ b/packages/@aws-cdk/aws-servicediscovery/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index a4b0472f346c3..31d1cfa549e39 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-ses/package.json b/packages/@aws-cdk/aws-ses/package.json index c44c7e3c4ef78..bd5b41df2ce40 100644 --- a/packages/@aws-cdk/aws-ses/package.json +++ b/packages/@aws-cdk/aws-ses/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json index 1c8fdfa9efa8d..26ae15e0fec33 100644 --- a/packages/@aws-cdk/aws-signer/package.json +++ b/packages/@aws-cdk/aws-signer/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index 8c39536ed26f0..7dfacbe739f40 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-sns/README.md b/packages/@aws-cdk/aws-sns/README.md index b5d9f52c3d9b9..05ad30fc9af17 100644 --- a/packages/@aws-cdk/aws-sns/README.md +++ b/packages/@aws-cdk/aws-sns/README.md @@ -30,12 +30,9 @@ const topic = new sns.Topic(this, 'Topic', { contentBasedDeduplication: true, displayName: 'Customer subscription topic', fifo: true, - topicName: 'customerTopic', }); ``` -Note that FIFO topics require a topic name to be provided. The required `.fifo` suffix will be automatically added to the topic name if it is not explicitly provided. - ## Subscriptions Various subscriptions can be added to the topic by calling the diff --git a/packages/@aws-cdk/aws-sns/lib/topic.ts b/packages/@aws-cdk/aws-sns/lib/topic.ts index f4bbfc10cb2ca..532c138fd7ef3 100644 --- a/packages/@aws-cdk/aws-sns/lib/topic.ts +++ b/packages/@aws-cdk/aws-sns/lib/topic.ts @@ -80,26 +80,13 @@ export class Topic extends TopicBase { physicalName: props.topicName, }); - if (props.fifo && !props.topicName) { - // NOTE: Workaround for CloudFormation problem reported in CDK issue 12386 - // see https://github.com/aws/aws-cdk/issues/12386 - throw new Error('FIFO SNS topics must be given a topic name.'); - } - if (props.contentBasedDeduplication && !props.fifo) { throw new Error('Content based deduplication can only be enabled for FIFO SNS topics.'); } - let cfnTopicName: string; - if (props.fifo && props.topicName && !props.topicName.endsWith('.fifo')) { - cfnTopicName = this.physicalName + '.fifo'; - } else { - cfnTopicName = this.physicalName; - } - const resource = new CfnTopic(this, 'Resource', { displayName: props.displayName, - topicName: cfnTopicName, + topicName: this.physicalName, kmsMasterKeyId: props.masterKey && props.masterKey.keyArn, contentBasedDeduplication: props.contentBasedDeduplication, fifoTopic: props.fifo, diff --git a/packages/@aws-cdk/aws-sns/package.json b/packages/@aws-cdk/aws-sns/package.json index 1e701393a8cff..b79497e6e998a 100644 --- a/packages/@aws-cdk/aws-sns/package.json +++ b/packages/@aws-cdk/aws-sns/package.json @@ -105,7 +105,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts b/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts index a4352cbe6fe44..76e4cef96994c 100644 --- a/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts +++ b/packages/@aws-cdk/aws-sns/test/integ.sns-fifo.ts @@ -6,7 +6,7 @@ class SNSFifoInteg extends Stack { super(scope, id, props); new Topic(this, 'MyTopic', { - topicName: 'fooTopic', + topicName: 'fooTopic.fifo', displayName: 'fooDisplayName', contentBasedDeduplication: true, fifo: true, diff --git a/packages/@aws-cdk/aws-sns/test/test.sns.ts b/packages/@aws-cdk/aws-sns/test/test.sns.ts index cc4b50aed717c..bbe171ca188ab 100644 --- a/packages/@aws-cdk/aws-sns/test/test.sns.ts +++ b/packages/@aws-cdk/aws-sns/test/test.sns.ts @@ -81,7 +81,7 @@ export = { test.done(); }, - 'specify displayName and topicName'(test: Test) { + 'specify both'(test: Test) { const stack = new cdk.Stack(); new sns.Topic(stack, 'MyTopic', { @@ -104,70 +104,11 @@ export = { test.done(); }, - // NOTE: This test case should be invalid when CloudFormation problem reported in CDK issue 12386 is resolved - // see https://github.com/aws/aws-cdk/issues/12386 - 'throw with missing topicName on fifo topic'(test: Test) { - const stack = new cdk.Stack(); - - test.throws(() => new sns.Topic(stack, 'MyTopic', { - fifo: true, - }), /FIFO SNS topics must be given a topic name./); - - test.done(); - }, - - 'specify fifo without .fifo suffix in topicName'(test: Test) { - const stack = new cdk.Stack(); - - new sns.Topic(stack, 'MyTopic', { - fifo: true, - topicName: 'topicName', - }); - - expect(stack).toMatch({ - 'Resources': { - 'MyTopic86869434': { - 'Type': 'AWS::SNS::Topic', - 'Properties': { - 'FifoTopic': true, - 'TopicName': 'topicName.fifo', - }, - }, - }, - }); - - test.done(); - }, - - 'specify fifo with .fifo suffix in topicName'(test: Test) { - const stack = new cdk.Stack(); - - new sns.Topic(stack, 'MyTopic', { - fifo: true, - topicName: 'topicName.fifo', - }); - - expect(stack).toMatch({ - 'Resources': { - 'MyTopic86869434': { - 'Type': 'AWS::SNS::Topic', - 'Properties': { - 'FifoTopic': true, - 'TopicName': 'topicName.fifo', - }, - }, - }, - }); - - test.done(); - }, - 'specify fifo without contentBasedDeduplication'(test: Test) { const stack = new cdk.Stack(); new sns.Topic(stack, 'MyTopic', { fifo: true, - topicName: 'topicName', }); expect(stack).toMatch({ @@ -176,7 +117,6 @@ export = { 'Type': 'AWS::SNS::Topic', 'Properties': { 'FifoTopic': true, - 'TopicName': 'topicName.fifo', }, }, }, @@ -191,7 +131,6 @@ export = { new sns.Topic(stack, 'MyTopic', { contentBasedDeduplication: true, fifo: true, - topicName: 'topicName', }); expect(stack).toMatch({ @@ -201,7 +140,6 @@ export = { 'Properties': { 'ContentBasedDeduplication': true, 'FifoTopic': true, - 'TopicName': 'topicName.fifo', }, }, }, diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index 7be27a709ae75..18bb815996ac7 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -76,7 +76,7 @@ "@aws-cdk/assert": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@types/nodeunit": "^0.0.31", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ssm/package.json b/packages/@aws-cdk/aws-ssm/package.json index 38f62f0bb40f3..43b5bdc958e03 100644 --- a/packages/@aws-cdk/aws-ssm/package.json +++ b/packages/@aws-cdk/aws-ssm/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-sso/package.json b/packages/@aws-cdk/aws-sso/package.json index 02842e0bbb53d..ea7aaa1d2c45b 100644 --- a/packages/@aws-cdk/aws-sso/package.json +++ b/packages/@aws-cdk/aws-sso/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md index 689ed0a53195f..32044b4a23649 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md @@ -667,7 +667,7 @@ You can call the [`StartJobRun`](https://docs.aws.amazon.com/glue/latest/dg/aws- ```ts new GlueStartJobRun(stack, 'Task', { - glueJobName: 'my-glue-job', + jobName: 'my-glue-job', arguments: { key: 'value', }, diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 05e29937628d3..3176bf2829eb5 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -118,7 +118,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-stepfunctions/package.json b/packages/@aws-cdk/aws-stepfunctions/package.json index 9f20f1437939c..81c0056c5c017 100644 --- a/packages/@aws-cdk/aws-stepfunctions/package.json +++ b/packages/@aws-cdk/aws-stepfunctions/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-synthetics/package.json b/packages/@aws-cdk/aws-synthetics/package.json index e9c168a03b00d..2a4bc2170c834 100644 --- a/packages/@aws-cdk/aws-synthetics/package.json +++ b/packages/@aws-cdk/aws-synthetics/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "developer-preview", diff --git a/packages/@aws-cdk/aws-timestream/package.json b/packages/@aws-cdk/aws-timestream/package.json index 40af4cde4d161..c9c5c606d1361 100644 --- a/packages/@aws-cdk/aws-timestream/package.json +++ b/packages/@aws-cdk/aws-timestream/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-transfer/package.json b/packages/@aws-cdk/aws-transfer/package.json index e7537ca2a0c04..5f30d3ad91603 100644 --- a/packages/@aws-cdk/aws-transfer/package.json +++ b/packages/@aws-cdk/aws-transfer/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-waf/package.json b/packages/@aws-cdk/aws-waf/package.json index 7bbbbd97f7287..907e68f31eb51 100644 --- a/packages/@aws-cdk/aws-waf/package.json +++ b/packages/@aws-cdk/aws-waf/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-wafregional/package.json b/packages/@aws-cdk/aws-wafregional/package.json index f07a701b7d05f..60f7c2052c232 100644 --- a/packages/@aws-cdk/aws-wafregional/package.json +++ b/packages/@aws-cdk/aws-wafregional/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-wafv2/package.json b/packages/@aws-cdk/aws-wafv2/package.json index 264600e14ddd5..f06a0b25d4d39 100644 --- a/packages/@aws-cdk/aws-wafv2/package.json +++ b/packages/@aws-cdk/aws-wafv2/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-workspaces/package.json b/packages/@aws-cdk/aws-workspaces/package.json index d8dc39a0c53d1..4c14d7649c0d7 100644 --- a/packages/@aws-cdk/aws-workspaces/package.json +++ b/packages/@aws-cdk/aws-workspaces/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/cdk-assets-schema/package.json b/packages/@aws-cdk/cdk-assets-schema/package.json index 041fcf748eea0..d38f3fb7674b5 100644 --- a/packages/@aws-cdk/cdk-assets-schema/package.json +++ b/packages/@aws-cdk/cdk-assets-schema/package.json @@ -69,7 +69,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "deprecated", "awscdkio": { diff --git a/packages/@aws-cdk/cfnspec/CHANGELOG.md b/packages/@aws-cdk/cfnspec/CHANGELOG.md index b2d9016a94475..c2eac793948d6 100644 --- a/packages/@aws-cdk/cfnspec/CHANGELOG.md +++ b/packages/@aws-cdk/cfnspec/CHANGELOG.md @@ -1,472 +1,3 @@ -# CloudFormation Resource Specification v23.0.0 - -## New Resource Types - -* AWS::Config::StoredQuery -* AWS::DataSync::Agent -* AWS::DataSync::LocationEFS -* AWS::DataSync::LocationFSxWindows -* AWS::DataSync::LocationNFS -* AWS::DataSync::LocationObjectStorage -* AWS::DataSync::LocationS3 -* AWS::DataSync::LocationSMB -* AWS::DataSync::Task -* AWS::MediaConnect::Flow -* AWS::MediaConnect::FlowEntitlement -* AWS::MediaConnect::FlowOutput -* AWS::MediaConnect::FlowSource -* AWS::MediaConnect::FlowVpcInterface -* AWS::Route53::DNSSEC -* AWS::Route53::KeySigningKey -* AWS::Route53Resolver::ResolverDNSSECConfig - -## Attribute Changes - -* AWS::ApiGateway::ClientCertificate ClientCertificateId (__added__) -* AWS::AuditManager::Assessment arn (__deleted__) -* AWS::AuditManager::Assessment assessmentId (__deleted__) -* AWS::AuditManager::Assessment creationTime (__deleted__) -* AWS::AuditManager::Assessment delegations (__deleted__) -* AWS::AuditManager::Assessment frameworkId (__deleted__) -* AWS::AuditManager::Assessment Arn (__added__) -* AWS::AuditManager::Assessment AssessmentId (__added__) -* AWS::AuditManager::Assessment CreationTime (__added__) -* AWS::AuditManager::Assessment Delegations (__added__) -* AWS::AuditManager::Assessment FrameworkId (__added__) -* AWS::EC2::NetworkInsightsAnalysis StatusMessage (__added__) -* AWS::ElastiCache::User Authentication (__deleted__) -* AWS::ElastiCache::User UserGroupIds (__deleted__) -* AWS::ElastiCache::UserGroup PendingChanges (__deleted__) -* AWS::ElastiCache::UserGroup ReplicationGroupIds (__deleted__) -* AWS::ElasticLoadBalancingV2::ListenerRule IsDefault (__added__) -* AWS::ElasticLoadBalancingV2::ListenerRule RuleArn (__added__) -* AWS::SageMaker::Device DeviceFleetName (__deleted__) -* AWS::SageMaker::DeviceFleet DeviceFleetName (__deleted__) - -## Property Changes - -* AWS::ACMPCA::CertificateAuthority CsrExtensions (__added__) -* AWS::ApiGatewayV2::Integration ResponseParameters (__added__) -* AWS::Athena::DataCatalog Tags.ItemType (__added__) -* AWS::Athena::DataCatalog Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::Athena::WorkGroup Tags.ItemType (__added__) -* AWS::Athena::WorkGroup Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::AuditManager::Assessment assessmentReportsDestination (__deleted__) -* AWS::AuditManager::Assessment awsAccount (__deleted__) -* AWS::AuditManager::Assessment description (__deleted__) -* AWS::AuditManager::Assessment frameworkId (__deleted__) -* AWS::AuditManager::Assessment name (__deleted__) -* AWS::AuditManager::Assessment roles (__deleted__) -* AWS::AuditManager::Assessment scope (__deleted__) -* AWS::AuditManager::Assessment status (__deleted__) -* AWS::AuditManager::Assessment tags (__deleted__) -* AWS::AuditManager::Assessment AssessmentReportsDestination (__added__) -* AWS::AuditManager::Assessment AwsAccount (__added__) -* AWS::AuditManager::Assessment Description (__added__) -* AWS::AuditManager::Assessment FrameworkId (__added__) -* AWS::AuditManager::Assessment Name (__added__) -* AWS::AuditManager::Assessment Roles (__added__) -* AWS::AuditManager::Assessment Scope (__added__) -* AWS::AuditManager::Assessment Status (__added__) -* AWS::AuditManager::Assessment Tags (__added__) -* AWS::EC2::CarrierGateway Tags.DuplicatesAllowed (__added__) -* AWS::EC2::CarrierGateway Tags.ItemType (__added__) -* AWS::EC2::CarrierGateway Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::EC2::LocalGatewayRouteTableVPCAssociation Tags.DuplicatesAllowed (__added__) -* AWS::EC2::LocalGatewayRouteTableVPCAssociation Tags.ItemType (__added__) -* AWS::EC2::LocalGatewayRouteTableVPCAssociation Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::EC2::NetworkInsightsAnalysis StatusMessage (__deleted__) -* AWS::ECR::PublicRepository RepositoryPolicyText.PrimitiveType (__added__) -* AWS::ECR::Repository RepositoryPolicyText.PrimitiveType (__added__) -* AWS::ElastiCache::User Authentication (__added__) -* AWS::ElastiCache::User UserGroupIds (__added__) -* AWS::ElastiCache::User Passwords.DuplicatesAllowed (__added__) -* AWS::ElastiCache::User Passwords.PrimitiveItemType (__added__) -* AWS::ElastiCache::User Passwords.Type (__changed__) - * Old: PasswordList - * New: List -* AWS::ElastiCache::UserGroup PendingChanges (__added__) -* AWS::ElastiCache::UserGroup ReplicationGroupIds (__added__) -* AWS::ElastiCache::UserGroup UserIds.DuplicatesAllowed (__added__) -* AWS::ElastiCache::UserGroup UserIds.PrimitiveItemType (__added__) -* AWS::ElastiCache::UserGroup UserIds.Type (__changed__) - * Old: UserIdList - * New: List -* AWS::GameLift::GameServerGroup InstanceDefinitions.ItemType (__added__) -* AWS::GameLift::GameServerGroup InstanceDefinitions.Type (__changed__) - * Old: InstanceDefinitions - * New: List -* AWS::GameLift::GameServerGroup Tags.ItemType (__added__) -* AWS::GameLift::GameServerGroup Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::GameLift::GameServerGroup VpcSubnets.PrimitiveItemType (__added__) -* AWS::GameLift::GameServerGroup VpcSubnets.Type (__changed__) - * Old: VpcSubnets - * New: List -* AWS::IoT::Authorizer Tags.ItemType (__added__) -* AWS::IoT::Authorizer Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::IoT::Authorizer TokenSigningPublicKeys.PrimitiveItemType (__added__) -* AWS::IoT::Authorizer TokenSigningPublicKeys.Type (__changed__) - * Old: TokenSigningPublicKeys - * New: Map -* AWS::IoT::DomainConfiguration Tags.ItemType (__added__) -* AWS::IoT::DomainConfiguration Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::IoT::ProvisioningTemplate Tags.ItemType (__added__) -* AWS::IoT::ProvisioningTemplate Tags.Type (__changed__) - * Old: Tags - * New: List -* AWS::KMS::Key KeyPolicy.PrimitiveType (__added__) -* AWS::Kendra::DataSource Tags.ItemType (__added__) -* AWS::Kendra::DataSource Tags.Type (__changed__) - * Old: TagList - * New: List -* AWS::Kendra::Faq Tags.ItemType (__added__) -* AWS::Kendra::Faq Tags.Type (__changed__) - * Old: TagList - * New: List -* AWS::Kendra::Index DocumentMetadataConfigurations.ItemType (__added__) -* AWS::Kendra::Index DocumentMetadataConfigurations.Type (__changed__) - * Old: DocumentMetadataConfigurationList - * New: List -* AWS::Kendra::Index Tags.ItemType (__added__) -* AWS::Kendra::Index Tags.Type (__changed__) - * Old: TagList - * New: List -* AWS::Kendra::Index UserTokenConfigurations.ItemType (__added__) -* AWS::Kendra::Index UserTokenConfigurations.Type (__changed__) - * Old: UserTokenConfigurationList - * New: List -* AWS::LicenseManager::Grant AllowedOperations.DuplicatesAllowed (__added__) -* AWS::LicenseManager::Grant AllowedOperations.PrimitiveItemType (__added__) -* AWS::LicenseManager::Grant AllowedOperations.Type (__changed__) - * Old: AllowedOperationList - * New: List -* AWS::LicenseManager::Grant Filters.DuplicatesAllowed (__added__) -* AWS::LicenseManager::Grant Filters.ItemType (__added__) -* AWS::LicenseManager::Grant Filters.Type (__changed__) - * Old: FilterList - * New: List -* AWS::LicenseManager::Grant GrantArns.DuplicatesAllowed (__added__) -* AWS::LicenseManager::Grant GrantArns.PrimitiveItemType (__added__) -* AWS::LicenseManager::Grant GrantArns.Type (__changed__) - * Old: ArnList - * New: List -* AWS::LicenseManager::Grant GrantedOperations.DuplicatesAllowed (__added__) -* AWS::LicenseManager::Grant GrantedOperations.PrimitiveItemType (__added__) -* AWS::LicenseManager::Grant GrantedOperations.Type (__changed__) - * Old: AllowedOperationList - * New: List -* AWS::LicenseManager::Grant Principals.DuplicatesAllowed (__added__) -* AWS::LicenseManager::Grant Principals.PrimitiveItemType (__added__) -* AWS::LicenseManager::Grant Principals.Type (__changed__) - * Old: ArnList - * New: List -* AWS::LicenseManager::Grant Tags.DuplicatesAllowed (__added__) -* AWS::LicenseManager::Grant Tags.ItemType (__added__) -* AWS::LicenseManager::Grant Tags.Type (__changed__) - * Old: TagList - * New: List -* AWS::LicenseManager::License Entitlements.DuplicatesAllowed (__added__) -* AWS::LicenseManager::License Entitlements.ItemType (__added__) -* AWS::LicenseManager::License Entitlements.Type (__changed__) - * Old: EntitlementList - * New: List -* AWS::LicenseManager::License Filters.DuplicatesAllowed (__added__) -* AWS::LicenseManager::License Filters.ItemType (__added__) -* AWS::LicenseManager::License Filters.Type (__changed__) - * Old: FilterList - * New: List -* AWS::LicenseManager::License LicenseArns.DuplicatesAllowed (__added__) -* AWS::LicenseManager::License LicenseArns.PrimitiveItemType (__added__) -* AWS::LicenseManager::License LicenseArns.Type (__changed__) - * Old: ArnList - * New: List -* AWS::LicenseManager::License LicenseMetadata.DuplicatesAllowed (__added__) -* AWS::LicenseManager::License LicenseMetadata.ItemType (__added__) -* AWS::LicenseManager::License LicenseMetadata.Type (__changed__) - * Old: MetadataList - * New: List -* AWS::LicenseManager::License Tags.DuplicatesAllowed (__added__) -* AWS::LicenseManager::License Tags.ItemType (__added__) -* AWS::LicenseManager::License Tags.Type (__changed__) - * Old: TagList - * New: List -* AWS::MediaLive::Channel CdiInputSpecification (__added__) -* AWS::SSO::InstanceAccessControlAttributeConfiguration AccessControlAttributes (__added__) -* AWS::SSO::InstanceAccessControlAttributeConfiguration InstanceAccessControlAttributeConfiguration.Required (__changed__) - * Old: true - * New: false -* AWS::SSO::InstanceAccessControlAttributeConfiguration InstanceArn.UpdateType (__changed__) - * Old: Mutable - * New: Immutable -* AWS::SSO::PermissionSet InlinePolicy.PrimitiveType (__changed__) - * Old: String - * New: Json -* AWS::SageMaker::Device DeviceFleetName (__added__) -* AWS::SageMaker::DeviceFleet DeviceFleetName (__added__) -* AWS::SageMaker::ModelPackageGroup ModelPackageGroupPolicy.PrimitiveType (__added__) -* AWS::StepFunctions::StateMachine DefinitionSubstitutions.PrimitiveItemType (__added__) -* AWS::StepFunctions::StateMachine DefinitionSubstitutions.Type (__changed__) - * Old: DefinitionSubstitutions - * New: Map -* AWS::Transfer::Server Domain (__added__) -* AWS::Transfer::User PosixProfile (__added__) - -## Property Type Changes - -* AWS::Athena::DataCatalog.Tags (__removed__) -* AWS::Athena::WorkGroup.Tags (__removed__) -* AWS::AuditManager::Assessment.AWSAccounts (__removed__) -* AWS::AuditManager::Assessment.AWSServices (__removed__) -* AWS::AuditManager::Assessment.Delegations (__removed__) -* AWS::AuditManager::Assessment.Roles (__removed__) -* AWS::AuditManager::Assessment.Tags (__removed__) -* AWS::EC2::CarrierGateway.Tags (__removed__) -* AWS::EC2::LocalGatewayRouteTableVPCAssociation.Tags (__removed__) -* AWS::ElastiCache::User.PasswordList (__removed__) -* AWS::ElastiCache::User.UserGroupIdList (__removed__) -* AWS::ElastiCache::UserGroup.ReplicationGroupIdList (__removed__) -* AWS::ElastiCache::UserGroup.UserIdList (__removed__) -* AWS::GameLift::GameServerGroup.InstanceDefinitions (__removed__) -* AWS::GameLift::GameServerGroup.Tags (__removed__) -* AWS::GameLift::GameServerGroup.VpcSubnets (__removed__) -* AWS::IoT::Authorizer.Tags (__removed__) -* AWS::IoT::Authorizer.TokenSigningPublicKeys (__removed__) -* AWS::IoT::DomainConfiguration.Tags (__removed__) -* AWS::IoT::ProvisioningTemplate.Tags (__removed__) -* AWS::Kendra::DataSource.TagList (__removed__) -* AWS::Kendra::Faq.TagList (__removed__) -* AWS::Kendra::Index.DocumentMetadataConfigurationList (__removed__) -* AWS::Kendra::Index.TagList (__removed__) -* AWS::Kendra::Index.UserTokenConfigurationList (__removed__) -* AWS::LicenseManager::Grant.AllowedOperationList (__removed__) -* AWS::LicenseManager::Grant.ArnList (__removed__) -* AWS::LicenseManager::Grant.FilterList (__removed__) -* AWS::LicenseManager::Grant.TagList (__removed__) -* AWS::LicenseManager::License.ArnList (__removed__) -* AWS::LicenseManager::License.EntitlementList (__removed__) -* AWS::LicenseManager::License.FilterList (__removed__) -* AWS::LicenseManager::License.MetadataList (__removed__) -* AWS::LicenseManager::License.TagList (__removed__) -* AWS::StepFunctions::StateMachine.DefinitionSubstitutions (__removed__) -* AWS::ACMPCA::CertificateAuthority.AccessDescription (__added__) -* AWS::ACMPCA::CertificateAuthority.AccessMethod (__added__) -* AWS::ACMPCA::CertificateAuthority.CsrExtensions (__added__) -* AWS::ACMPCA::CertificateAuthority.EdiPartyName (__added__) -* AWS::ACMPCA::CertificateAuthority.GeneralName (__added__) -* AWS::ACMPCA::CertificateAuthority.KeyUsage (__added__) -* AWS::ACMPCA::CertificateAuthority.OtherName (__added__) -* AWS::ACMPCA::CertificateAuthority.SubjectInformationAccess (__added__) -* AWS::ApiGatewayV2::Integration.ResponseParameter (__added__) -* AWS::ApiGatewayV2::Integration.ResponseParameterList (__added__) -* AWS::MediaLive::Channel.AncillarySourceSettings (__added__) -* AWS::MediaLive::Channel.AudioSilenceFailoverSettings (__added__) -* AWS::MediaLive::Channel.CdiInputSpecification (__added__) -* AWS::MediaLive::Channel.FailoverCondition (__added__) -* AWS::MediaLive::Channel.FailoverConditionSettings (__added__) -* AWS::MediaLive::Channel.InputLossFailoverSettings (__added__) -* AWS::MediaLive::Channel.Mpeg2FilterSettings (__added__) -* AWS::MediaLive::Channel.Mpeg2Settings (__added__) -* AWS::MediaLive::Channel.RawSettings (__added__) -* AWS::MediaLive::Channel.VideoBlackFailoverSettings (__added__) -* AWS::MediaLive::Channel.WavSettings (__added__) -* AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttribute (__added__) -* AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValue (__added__) -* AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValueSourceList (__added__) -* AWS::Transfer::User.PosixProfile (__added__) -* AWS::AuditManager::Assessment.AWSAccount emailAddress (__deleted__) -* AWS::AuditManager::Assessment.AWSAccount id (__deleted__) -* AWS::AuditManager::Assessment.AWSAccount name (__deleted__) -* AWS::AuditManager::Assessment.AWSAccount EmailAddress (__added__) -* AWS::AuditManager::Assessment.AWSAccount Id (__added__) -* AWS::AuditManager::Assessment.AWSAccount Name (__added__) -* AWS::AuditManager::Assessment.AWSService serviceName (__deleted__) -* AWS::AuditManager::Assessment.AWSService ServiceName (__added__) -* AWS::AuditManager::Assessment.AssessmentReportsDestination destination (__deleted__) -* AWS::AuditManager::Assessment.AssessmentReportsDestination destinationType (__deleted__) -* AWS::AuditManager::Assessment.AssessmentReportsDestination Destination (__added__) -* AWS::AuditManager::Assessment.AssessmentReportsDestination DestinationType (__added__) -* AWS::AuditManager::Assessment.Delegation assessmentId (__deleted__) -* AWS::AuditManager::Assessment.Delegation assessmentName (__deleted__) -* AWS::AuditManager::Assessment.Delegation comment (__deleted__) -* AWS::AuditManager::Assessment.Delegation controlSetId (__deleted__) -* AWS::AuditManager::Assessment.Delegation createdBy (__deleted__) -* AWS::AuditManager::Assessment.Delegation creationTime (__deleted__) -* AWS::AuditManager::Assessment.Delegation id (__deleted__) -* AWS::AuditManager::Assessment.Delegation lastUpdated (__deleted__) -* AWS::AuditManager::Assessment.Delegation roleArn (__deleted__) -* AWS::AuditManager::Assessment.Delegation roleType (__deleted__) -* AWS::AuditManager::Assessment.Delegation status (__deleted__) -* AWS::AuditManager::Assessment.Delegation AssessmentId (__added__) -* AWS::AuditManager::Assessment.Delegation AssessmentName (__added__) -* AWS::AuditManager::Assessment.Delegation Comment (__added__) -* AWS::AuditManager::Assessment.Delegation ControlSetId (__added__) -* AWS::AuditManager::Assessment.Delegation CreatedBy (__added__) -* AWS::AuditManager::Assessment.Delegation CreationTime (__added__) -* AWS::AuditManager::Assessment.Delegation Id (__added__) -* AWS::AuditManager::Assessment.Delegation LastUpdated (__added__) -* AWS::AuditManager::Assessment.Delegation RoleArn (__added__) -* AWS::AuditManager::Assessment.Delegation RoleType (__added__) -* AWS::AuditManager::Assessment.Delegation Status (__added__) -* AWS::AuditManager::Assessment.Role roleArn (__deleted__) -* AWS::AuditManager::Assessment.Role roleType (__deleted__) -* AWS::AuditManager::Assessment.Role RoleArn (__added__) -* AWS::AuditManager::Assessment.Role RoleType (__added__) -* AWS::AuditManager::Assessment.Scope awsAccounts (__deleted__) -* AWS::AuditManager::Assessment.Scope awsServices (__deleted__) -* AWS::AuditManager::Assessment.Scope AwsAccounts (__added__) -* AWS::AuditManager::Assessment.Scope AwsServices (__added__) -* AWS::EC2::LaunchTemplate.Ebs Throughput (__added__) -* AWS::ElasticLoadBalancingV2::ListenerRule.Action AuthenticateCognitoConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.Action AuthenticateOidcConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.Action FixedResponseConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.Action ForwardConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.Action Order.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-order - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-order -* AWS::ElasticLoadBalancingV2::ListenerRule.Action RedirectConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.Action TargetGroupArn.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-targetgrouparn - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-targetgrouparn -* AWS::ElasticLoadBalancingV2::ListenerRule.Action Type.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-type - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-type -* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateCognitoConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) -* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateCognitoConfig SessionTimeout.PrimitiveType (__changed__) - * Old: Long - * New: Integer -* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateOidcConfig UseExistingClientSecret (__added__) -* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateOidcConfig AuthenticationRequestExtraParams.DuplicatesAllowed (__deleted__) -* AWS::ElasticLoadBalancingV2::ListenerRule.AuthenticateOidcConfig SessionTimeout.PrimitiveType (__changed__) - * Old: Long - * New: Integer -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition Field.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-field - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-field -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition HostHeaderConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition HttpHeaderConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition HttpRequestMethodConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition PathPatternConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition QueryStringConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition SourceIpConfig.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig -* AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition Values.Documentation (__changed__) - * Old: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values - * New: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-values -* AWS::ImageBuilder::DistributionConfiguration.Distribution ContainerDistributionConfiguration (__added__) -* AWS::IoTWireless::WirelessDevice.AbpV10X DevAddr.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.AbpV10X SessionKeys.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.AbpV11 DevAddr.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.AbpV11 SessionKeys.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.OtaaV10X AppEui.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.OtaaV10X AppKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.OtaaV11 AppKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.OtaaV11 JoinEui.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.OtaaV11 NwkKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV10X AppSKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV10X NwkSKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 AppSKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 FNwkSIntKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 NwkSEncKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessDevice.SessionKeysAbpV11 SNwkSIntKey.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessGateway.LoRaWANGateway GatewayEui.Required (__changed__) - * Old: false - * New: true -* AWS::IoTWireless::WirelessGateway.LoRaWANGateway RfRegion.Required (__changed__) - * Old: false - * New: true -* AWS::MediaLive::Channel.ArchiveContainerSettings RawSettings (__added__) -* AWS::MediaLive::Channel.AudioCodecSettings WavSettings (__added__) -* AWS::MediaLive::Channel.AutomaticInputFailoverSettings ErrorClearTimeMsec (__added__) -* AWS::MediaLive::Channel.AutomaticInputFailoverSettings FailoverConditions (__added__) -* AWS::MediaLive::Channel.CaptionSelectorSettings AncillarySourceSettings (__added__) -* AWS::MediaLive::Channel.HlsGroupSettings DiscontinuityTags (__added__) -* AWS::MediaLive::Channel.HlsGroupSettings IncompleteSegmentBehavior (__added__) -* AWS::MediaLive::Channel.RtmpGroupSettings AdMarkers (__added__) -* AWS::MediaLive::Channel.VideoCodecSettings Mpeg2Settings (__added__) - -# Serverless Application Model (SAM) Resource Specification v2016-10-31 - -## New Resource Types - - -## Attribute Changes - - -## Property Changes - -* AWS::Serverless::LayerVersion ContentUri.PrimitiveType (__deleted__) -* AWS::Serverless::LayerVersion ContentUri.PrimitiveTypes (__added__) -* AWS::Serverless::LayerVersion ContentUri.Types (__added__) - -## Property Type Changes - -* AWS::Serverless::LayerVersion.S3Location (__added__) - # CloudFormation Resource Specification v22.0.0 ## New Resource Types diff --git a/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts b/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts index 73276889da9df..1cf4c4f9cc32e 100644 --- a/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts +++ b/packages/@aws-cdk/cfnspec/build-tools/create-missing-libraries.ts @@ -272,7 +272,7 @@ async function main() { '', '![cfn-resources: Stable](https://img.shields.io/badge/cfn--resources-stable-success.svg?style=for-the-badge)', '', - '> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use.', + '> All classes with the `Cfn` prefix in this module ([CFN Resources]) are always stable and safe to use.' + '>', '> [CFN Resources]: https://docs.aws.amazon.com/cdk/latest/guide/constructs.html#constructs_lib', '', diff --git a/packages/@aws-cdk/cfnspec/cfn.version b/packages/@aws-cdk/cfnspec/cfn.version index 84b76f4d1c529..1d975bef24600 100644 --- a/packages/@aws-cdk/cfnspec/cfn.version +++ b/packages/@aws-cdk/cfnspec/cfn.version @@ -1 +1 @@ -23.0.0 +22.0.0 diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json index 861e9f77698ac..ca6f3aa09b55b 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json @@ -17,40 +17,6 @@ } } }, - "AWS::ACMPCA::CertificateAuthority.AccessDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessdescription.html", - "Properties": { - "AccessLocation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessdescription.html#cfn-acmpca-certificateauthority-accessdescription-accesslocation", - "Required": true, - "Type": "GeneralName", - "UpdateType": "Immutable" - }, - "AccessMethod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessdescription.html#cfn-acmpca-certificateauthority-accessdescription-accessmethod", - "Required": true, - "Type": "AccessMethod", - "UpdateType": "Immutable" - } - } - }, - "AWS::ACMPCA::CertificateAuthority.AccessMethod": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessmethod.html", - "Properties": { - "AccessMethodType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessmethod.html#cfn-acmpca-certificateauthority-accessmethod-accessmethodtype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "CustomObjectIdentifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-accessmethod.html#cfn-acmpca-certificateauthority-accessmethod-customobjectidentifier", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::ACMPCA::CertificateAuthority.CrlConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-crlconfiguration.html", "Properties": { @@ -80,169 +46,6 @@ } } }, - "AWS::ACMPCA::CertificateAuthority.CsrExtensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-csrextensions.html", - "Properties": { - "KeyUsage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-csrextensions.html#cfn-acmpca-certificateauthority-csrextensions-keyusage", - "Required": false, - "Type": "KeyUsage", - "UpdateType": "Immutable" - }, - "SubjectInformationAccess": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-csrextensions.html#cfn-acmpca-certificateauthority-csrextensions-subjectinformationaccess", - "Required": false, - "Type": "SubjectInformationAccess", - "UpdateType": "Immutable" - } - } - }, - "AWS::ACMPCA::CertificateAuthority.EdiPartyName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-edipartyname.html", - "Properties": { - "NameAssigner": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-edipartyname.html#cfn-acmpca-certificateauthority-edipartyname-nameassigner", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "PartyName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-edipartyname.html#cfn-acmpca-certificateauthority-edipartyname-partyname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::ACMPCA::CertificateAuthority.GeneralName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html", - "Properties": { - "DirectoryName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-directoryname", - "Required": false, - "Type": "Subject", - "UpdateType": "Immutable" - }, - "DnsName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-dnsname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "EdiPartyName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-edipartyname", - "Required": false, - "Type": "EdiPartyName", - "UpdateType": "Immutable" - }, - "IpAddress": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-ipaddress", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "OtherName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-othername", - "Required": false, - "Type": "OtherName", - "UpdateType": "Immutable" - }, - "RegisteredId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-registeredid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Rfc822Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-rfc822name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "UniformResourceIdentifier": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-generalname.html#cfn-acmpca-certificateauthority-generalname-uniformresourceidentifier", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::ACMPCA::CertificateAuthority.KeyUsage": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html", - "Properties": { - "CRLSign": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-crlsign", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "DataEncipherment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-dataencipherment", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "DecipherOnly": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-decipheronly", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "DigitalSignature": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-digitalsignature", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "EncipherOnly": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-encipheronly", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "KeyAgreement": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-keyagreement", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "KeyCertSign": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-keycertsign", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "KeyEncipherment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-keyencipherment", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - }, - "NonRepudiation": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-keyusage.html#cfn-acmpca-certificateauthority-keyusage-nonrepudiation", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::ACMPCA::CertificateAuthority.OtherName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-othername.html", - "Properties": { - "TypeId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-othername.html#cfn-acmpca-certificateauthority-othername-typeid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-othername.html#cfn-acmpca-certificateauthority-othername-value", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, "AWS::ACMPCA::CertificateAuthority.RevocationConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-revocationconfiguration.html", "Properties": { @@ -343,18 +146,6 @@ } } }, - "AWS::ACMPCA::CertificateAuthority.SubjectInformationAccess": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subjectinformationaccess.html", - "Properties": { - "SubjectInformationAccess": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-acmpca-certificateauthority-subjectinformationaccess.html#cfn-acmpca-certificateauthority-subjectinformationaccess-subjectinformationaccess", - "ItemType": "AccessDescription", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, "AWS::AccessAnalyzer::Analyzer.ArchiveRule": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-accessanalyzer-analyzer-archiverule.html", "Properties": { @@ -1856,35 +1647,6 @@ } } }, - "AWS::ApiGatewayV2::Integration.ResponseParameter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html", - "Properties": { - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html#cfn-apigatewayv2-integration-responseparameter-destination", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameter.html#cfn-apigatewayv2-integration-responseparameter-source", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::ApiGatewayV2::Integration.ResponseParameterList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameterlist.html", - "Properties": { - "ResponseParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-responseparameterlist.html#cfn-apigatewayv2-integration-responseparameterlist-responseparameters", - "ItemType": "ResponseParameter", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::ApiGatewayV2::Integration.TlsConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigatewayv2-integration-tlsconfig.html", "Properties": { @@ -6480,6 +6242,18 @@ } } }, + "AWS::Athena::DataCatalog.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-datacatalog-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-datacatalog-tags.html#cfn-athena-datacatalog-tags-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Athena::WorkGroup.EncryptionConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html", "Properties": { @@ -6543,6 +6317,18 @@ } } }, + "AWS::Athena::WorkGroup.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-tags.html#cfn-athena-workgroup-tags-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Athena::WorkGroup.WorkGroupConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html", "Properties": { @@ -6622,19 +6408,19 @@ "AWS::AuditManager::Assessment.AWSAccount": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html", "Properties": { - "EmailAddress": { + "emailAddress": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html#cfn-auditmanager-assessment-awsaccount-emailaddress", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, - "Id": { + "id": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html#cfn-auditmanager-assessment-awsaccount-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, - "Name": { + "name": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccount.html#cfn-auditmanager-assessment-awsaccount-name", "PrimitiveType": "String", "Required": false, @@ -6642,10 +6428,22 @@ } } }, + "AWS::AuditManager::Assessment.AWSAccounts": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccounts.html", + "Properties": { + "AWSAccounts": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsaccounts.html#cfn-auditmanager-assessment-awsaccounts-awsaccounts", + "ItemType": "AWSAccount", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::AuditManager::Assessment.AWSService": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservice.html", "Properties": { - "ServiceName": { + "serviceName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservice.html#cfn-auditmanager-assessment-awsservice-servicename", "PrimitiveType": "String", "Required": false, @@ -6653,16 +6451,28 @@ } } }, + "AWS::AuditManager::Assessment.AWSServices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservices.html", + "Properties": { + "AWSServices": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-awsservices.html#cfn-auditmanager-assessment-awsservices-awsservices", + "ItemType": "AWSService", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::AuditManager::Assessment.AssessmentReportsDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-assessmentreportsdestination.html", "Properties": { - "Destination": { + "destination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-assessmentreportsdestination.html#cfn-auditmanager-assessment-assessmentreportsdestination-destination", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "DestinationType": { + "destinationType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-assessmentreportsdestination.html#cfn-auditmanager-assessment-assessmentreportsdestination-destinationtype", "PrimitiveType": "String", "Required": false, @@ -6673,67 +6483,67 @@ "AWS::AuditManager::Assessment.Delegation": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html", "Properties": { - "AssessmentId": { + "assessmentId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-assessmentid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "AssessmentName": { + "assessmentName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-assessmentname", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Comment": { + "comment": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-comment", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "ControlSetId": { + "controlSetId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-controlsetid", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CreatedBy": { + "createdBy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-createdby", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "CreationTime": { + "creationTime": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-creationtime", "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "Id": { + "id": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-id", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "LastUpdated": { + "lastUpdated": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-lastupdated", "PrimitiveType": "Double", "Required": false, "UpdateType": "Mutable" }, - "RoleArn": { + "roleArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-rolearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RoleType": { + "roleType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-roletype", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Status": { + "status": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegation.html#cfn-auditmanager-assessment-delegation-status", "PrimitiveType": "String", "Required": false, @@ -6741,16 +6551,28 @@ } } }, + "AWS::AuditManager::Assessment.Delegations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegations.html", + "Properties": { + "Delegations": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-delegations.html#cfn-auditmanager-assessment-delegations-delegations", + "ItemType": "Delegation", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::AuditManager::Assessment.Role": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-role.html", "Properties": { - "RoleArn": { + "roleArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-role.html#cfn-auditmanager-assessment-role-rolearn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "RoleType": { + "roleType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-role.html#cfn-auditmanager-assessment-role-roletype", "PrimitiveType": "String", "Required": false, @@ -6758,19 +6580,41 @@ } } }, + "AWS::AuditManager::Assessment.Roles": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-roles.html", + "Properties": { + "Roles": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-roles.html#cfn-auditmanager-assessment-roles-roles", + "ItemType": "Role", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::AuditManager::Assessment.Scope": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-scope.html", "Properties": { - "AwsAccounts": { + "awsAccounts": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-scope.html#cfn-auditmanager-assessment-scope-awsaccounts", - "ItemType": "AWSAccount", "Required": false, - "Type": "List", + "Type": "AWSAccounts", "UpdateType": "Mutable" }, - "AwsServices": { + "awsServices": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-scope.html#cfn-auditmanager-assessment-scope-awsservices", - "ItemType": "AWSService", + "Required": false, + "Type": "AWSServices", + "UpdateType": "Mutable" + } + } + }, + "AWS::AuditManager::Assessment.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-auditmanager-assessment-tags.html#cfn-auditmanager-assessment-tags-tags", + "ItemType": "Tag", "Required": false, "Type": "List", "UpdateType": "Mutable" @@ -14483,180 +14327,6 @@ } } }, - "AWS::DataSync::LocationEFS.Ec2Config": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationefs-ec2config.html", - "Properties": { - "SecurityGroupArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationefs-ec2config.html#cfn-datasync-locationefs-ec2config-securitygrouparns", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Immutable" - }, - "SubnetArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationefs-ec2config.html#cfn-datasync-locationefs-ec2config-subnetarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::LocationNFS.MountOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-mountoptions.html", - "Properties": { - "Version": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-mountoptions.html#cfn-datasync-locationnfs-mountoptions-version", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::LocationNFS.OnPremConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-onpremconfig.html", - "Properties": { - "AgentArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationnfs-onpremconfig.html#cfn-datasync-locationnfs-onpremconfig-agentarns", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::LocationS3.S3Config": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locations3-s3config.html", - "Properties": { - "BucketAccessRoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locations3-s3config.html#cfn-datasync-locations3-s3config-bucketaccessrolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::LocationSMB.MountOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationsmb-mountoptions.html", - "Properties": { - "Version": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-locationsmb-mountoptions.html#cfn-datasync-locationsmb-mountoptions-version", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::Task.FilterRule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-filterrule.html", - "Properties": { - "FilterType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-filterrule.html#cfn-datasync-task-filterrule-filtertype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-filterrule.html#cfn-datasync-task-filterrule-value", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::DataSync::Task.Options": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html", - "Properties": { - "Atime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-atime", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "BytesPerSecond": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-bytespersecond", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Gid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-gid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "LogLevel": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-loglevel", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Mtime": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-mtime", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "OverwriteMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-overwritemode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PosixPermissions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-posixpermissions", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PreserveDeletedFiles": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-preservedeletedfiles", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "PreserveDevices": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-preservedevices", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "TaskQueueing": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-taskqueueing", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "TransferMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-transfermode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Uid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-uid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "VerifyMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-options.html#cfn-datasync-task-options-verifymode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::DataSync::Task.TaskSchedule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-taskschedule.html", - "Properties": { - "ScheduleExpression": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-datasync-task-taskschedule.html#cfn-datasync-task-taskschedule-scheduleexpression", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::DevOpsGuru::NotificationChannel.NotificationChannelConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-devopsguru-notificationchannel-notificationchannelconfig.html", "Properties": { @@ -14946,6 +14616,19 @@ } } }, + "AWS::EC2::CarrierGateway.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-carriergateway-tags.html#cfn-ec2-carriergateway-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::EC2::ClientVpnEndpoint.CertificateAuthenticationRequest": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-clientvpnendpoint-certificateauthenticationrequest.html", "Properties": { @@ -15841,12 +15524,6 @@ "Required": false, "UpdateType": "Mutable" }, - "Throughput": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping-ebs.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs-throughput", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, "VolumeSize": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-blockdevicemapping-ebs.html#cfn-ec2-launchtemplate-blockdevicemapping-ebs-volumesize", "PrimitiveType": "Integer", @@ -16397,6 +16074,19 @@ } } }, + "AWS::EC2::LocalGatewayRouteTableVPCAssociation.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-localgatewayroutetablevpcassociation-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-localgatewayroutetablevpcassociation-tags.html#cfn-ec2-localgatewayroutetablevpcassociation-tags-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::EC2::NetworkAclEntry.Icmp": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-networkaclentry-icmp.html", "Properties": { @@ -20874,6 +20564,43 @@ } } }, + "AWS::ElastiCache::User.PasswordList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-passwordlist.html", + "Properties": { + "PasswordList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-passwordlist.html#cfn-elasticache-user-passwordlist-passwordlist", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::ElastiCache::User.UserGroupIdList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-usergroupidlist.html", + "Properties": { + "UserGroupIdList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-user-usergroupidlist.html#cfn-elasticache-user-usergroupidlist-usergroupidlist", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::ElastiCache::UserGroup.ReplicationGroupIdList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-replicationgroupidlist.html", + "Properties": { + "ReplicationGroupIdList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-replicationgroupidlist.html#cfn-elasticache-usergroup-replicationgroupidlist-replicationgroupidlist", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::ElastiCache::UserGroup.UserGroupPendingChanges": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-usergrouppendingchanges.html", "Properties": { @@ -20895,6 +20622,19 @@ } } }, + "AWS::ElastiCache::UserGroup.UserIdList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-useridlist.html", + "Properties": { + "UserIdList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-usergroup-useridlist.html#cfn-elasticache-usergroup-useridlist-useridlist", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::ElasticBeanstalk::Application.ApplicationResourceLifecycleConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticbeanstalk-application-applicationresourcelifecycleconfig.html", "Properties": { @@ -21619,52 +21359,52 @@ } }, "AWS::ElasticLoadBalancingV2::ListenerRule.Action": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html", "Properties": { "AuthenticateCognitoConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticatecognitoconfig", "Required": false, "Type": "AuthenticateCognitoConfig", "UpdateType": "Mutable" }, "AuthenticateOidcConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-authenticateoidcconfig", "Required": false, "Type": "AuthenticateOidcConfig", "UpdateType": "Mutable" }, "FixedResponseConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-fixedresponseconfig", "Required": false, "Type": "FixedResponseConfig", "UpdateType": "Mutable" }, "ForwardConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-forwardconfig", "Required": false, "Type": "ForwardConfig", "UpdateType": "Mutable" }, "Order": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-order", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-order", "PrimitiveType": "Integer", "Required": false, "UpdateType": "Mutable" }, "RedirectConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listenerrule-action-redirectconfig", "Required": false, "Type": "RedirectConfig", "UpdateType": "Mutable" }, "TargetGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-targetgrouparn", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-targetgrouparn", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "Type": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-action.html#cfn-elasticloadbalancingv2-listenerrule-action-type", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-actions.html#cfn-elasticloadbalancingv2-listener-actions-type", "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" @@ -21676,6 +21416,7 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-authenticationrequestextraparams", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -21701,7 +21442,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticatecognitoconfig-sessiontimeout", - "PrimitiveType": "Integer", + "PrimitiveType": "Long", "Required": false, "UpdateType": "Mutable" }, @@ -21730,6 +21471,7 @@ "Properties": { "AuthenticationRequestExtraParams": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-authenticationrequestextraparams", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "Map", @@ -21779,7 +21521,7 @@ }, "SessionTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-sessiontimeout", - "PrimitiveType": "Integer", + "PrimitiveType": "Long", "Required": false, "UpdateType": "Mutable" }, @@ -21789,12 +21531,6 @@ "Required": true, "UpdateType": "Mutable" }, - "UseExistingClientSecret": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-useexistingclientsecret", - "PrimitiveType": "Boolean", - "Required": false, - "UpdateType": "Mutable" - }, "UserInfoEndpoint": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-authenticateoidcconfig.html#cfn-elasticloadbalancingv2-listenerrule-authenticateoidcconfig-userinfoendpoint", "PrimitiveType": "String", @@ -21975,52 +21711,52 @@ } }, "AWS::ElasticLoadBalancingV2::ListenerRule.RuleCondition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html", "Properties": { "Field": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-field", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-field", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, "HostHeaderConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-hostheaderconfig", "Required": false, "Type": "HostHeaderConfig", "UpdateType": "Mutable" }, "HttpHeaderConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httpheaderconfig", "Required": false, "Type": "HttpHeaderConfig", "UpdateType": "Mutable" }, "HttpRequestMethodConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-httprequestmethodconfig", "Required": false, "Type": "HttpRequestMethodConfig", "UpdateType": "Mutable" }, "PathPatternConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-pathpatternconfig", "Required": false, "Type": "PathPatternConfig", "UpdateType": "Mutable" }, "QueryStringConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-querystringconfig", "Required": false, "Type": "QueryStringConfig", "UpdateType": "Mutable" }, "SourceIpConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-sourceipconfig", "Required": false, "Type": "SourceIpConfig", "UpdateType": "Mutable" }, "Values": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-rulecondition.html#cfn-elasticloadbalancingv2-listenerrule-rulecondition-values", + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticloadbalancingv2-listenerrule-conditions.html#cfn-elasticloadbalancingv2-listenerrule-conditions-values", "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, @@ -23351,6 +23087,18 @@ } } }, + "AWS::GameLift::GameServerGroup.InstanceDefinitions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinitions.html", + "Properties": { + "InstanceDefinitions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-instancedefinitions.html#cfn-gamelift-gameservergroup-instancedefinitions-instancedefinitions", + "ItemType": "InstanceDefinition", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::GameLift::GameServerGroup.LaunchTemplate": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-launchtemplate.html", "Properties": { @@ -23374,6 +23122,18 @@ } } }, + "AWS::GameLift::GameServerGroup.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-tags.html#cfn-gamelift-gameservergroup-tags-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::GameLift::GameServerGroup.TargetTrackingConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-targettrackingconfiguration.html", "Properties": { @@ -23385,6 +23145,18 @@ } } }, + "AWS::GameLift::GameServerGroup.VpcSubnets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-vpcsubnets.html", + "Properties": { + "VpcSubnets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gameservergroup-vpcsubnets.html#cfn-gamelift-gameservergroup-vpcsubnets-vpcsubnets", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::GameLift::GameSessionQueue.Destination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-gamelift-gamesessionqueue-destination.html", "Properties": { @@ -26485,12 +26257,6 @@ "Required": false, "UpdateType": "Mutable" }, - "ContainerDistributionConfiguration": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-distribution.html#cfn-imagebuilder-distributionconfiguration-distribution-containerdistributionconfiguration", - "PrimitiveType": "Json", - "Required": false, - "UpdateType": "Mutable" - }, "LicenseConfigurationArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-distribution.html#cfn-imagebuilder-distributionconfiguration-distribution-licenseconfigurationarns", "PrimitiveItemType": "String", @@ -26706,6 +26472,21 @@ } } }, + "AWS::IoT::Authorizer.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-authorizer-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-authorizer-tags.html#cfn-iot-authorizer-tags-tags", + "ItemType": "Json", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::IoT::Authorizer.TokenSigningPublicKeys": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-authorizer-tokensigningpublickeys.html" + }, "AWS::IoT::DomainConfiguration.AuthorizerConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-authorizerconfig.html", "Properties": { @@ -26746,6 +26527,18 @@ } } }, + "AWS::IoT::DomainConfiguration.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-domainconfiguration-tags.html#cfn-iot-domainconfiguration-tags-tags", + "ItemType": "Json", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::IoT::ProvisioningTemplate.ProvisioningHook": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-provisioninghook.html", "Properties": { @@ -26763,6 +26556,18 @@ } } }, + "AWS::IoT::ProvisioningTemplate.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-provisioningtemplate-tags.html#cfn-iot-provisioningtemplate-tags-tags", + "ItemType": "Json", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::IoT::Thing.AttributePayload": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iot-thing-attributepayload.html", "Properties": { @@ -29614,12 +29419,12 @@ "DevAddr": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv10x.html#cfn-iotwireless-wirelessdevice-abpv10x-devaddr", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "SessionKeys": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv10x.html#cfn-iotwireless-wirelessdevice-abpv10x-sessionkeys", - "Required": true, + "Required": false, "Type": "SessionKeysAbpV10X", "UpdateType": "Mutable" } @@ -29631,12 +29436,12 @@ "DevAddr": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv11.html#cfn-iotwireless-wirelessdevice-abpv11-devaddr", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "SessionKeys": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-abpv11.html#cfn-iotwireless-wirelessdevice-abpv11-sessionkeys", - "Required": true, + "Required": false, "Type": "SessionKeysAbpV11", "UpdateType": "Mutable" } @@ -29695,13 +29500,13 @@ "AppEui": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav10x.html#cfn-iotwireless-wirelessdevice-otaav10x-appeui", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "AppKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav10x.html#cfn-iotwireless-wirelessdevice-otaav10x-appkey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } @@ -29712,19 +29517,19 @@ "AppKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav11.html#cfn-iotwireless-wirelessdevice-otaav11-appkey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "JoinEui": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav11.html#cfn-iotwireless-wirelessdevice-otaav11-joineui", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "NwkKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-otaav11.html#cfn-iotwireless-wirelessdevice-otaav11-nwkkey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } @@ -29735,13 +29540,13 @@ "AppSKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv10x.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv10x-appskey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "NwkSKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv10x.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv10x-nwkskey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } @@ -29752,25 +29557,25 @@ "AppSKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-appskey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "FNwkSIntKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-fnwksintkey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "NwkSEncKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-nwksenckey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "SNwkSIntKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessdevice-sessionkeysabpv11.html#cfn-iotwireless-wirelessdevice-sessionkeysabpv11-snwksintkey", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } @@ -29781,13 +29586,13 @@ "GatewayEui": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessgateway-lorawangateway.html#cfn-iotwireless-wirelessgateway-lorawangateway-gatewayeui", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "RfRegion": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iotwireless-wirelessgateway-lorawangateway.html#cfn-iotwireless-wirelessgateway-lorawangateway-rfregion", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" } } @@ -30943,6 +30748,18 @@ } } }, + "AWS::Kendra::DataSource.TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-datasource-taglist.html", + "Properties": { + "TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-datasource-taglist.html#cfn-kendra-datasource-taglist-taglist", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Kendra::Faq.S3Path": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-faq-s3path.html", "Properties": { @@ -30960,6 +30777,18 @@ } } }, + "AWS::Kendra::Faq.TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-faq-taglist.html", + "Properties": { + "TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-faq-taglist.html#cfn-kendra-faq-taglist-taglist", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Kendra::Index.CapacityUnitsConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-capacityunitsconfiguration.html", "Properties": { @@ -31006,6 +30835,18 @@ } } }, + "AWS::Kendra::Index.DocumentMetadataConfigurationList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-documentmetadataconfigurationlist.html", + "Properties": { + "DocumentMetadataConfigurationList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-documentmetadataconfigurationlist.html#cfn-kendra-index-documentmetadataconfigurationlist-documentmetadataconfigurationlist", + "ItemType": "DocumentMetadataConfiguration", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Kendra::Index.JsonTokenTypeConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-jsontokentypeconfiguration.html", "Properties": { @@ -31145,6 +30986,18 @@ } } }, + "AWS::Kendra::Index.TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-taglist.html", + "Properties": { + "TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-taglist.html#cfn-kendra-index-taglist-taglist", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Kendra::Index.UserTokenConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-usertokenconfiguration.html", "Properties": { @@ -31162,6 +31015,18 @@ } } }, + "AWS::Kendra::Index.UserTokenConfigurationList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-usertokenconfigurationlist.html", + "Properties": { + "UserTokenConfigurationList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-usertokenconfigurationlist.html#cfn-kendra-index-usertokenconfigurationlist-usertokenconfigurationlist", + "ItemType": "UserTokenConfiguration", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Kendra::Index.ValueImportanceItem": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-valueimportanceitem.html", "Properties": { @@ -33889,6 +33754,32 @@ } } }, + "AWS::LicenseManager::Grant.AllowedOperationList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-allowedoperationlist.html", + "Properties": { + "AllowedOperationList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-allowedoperationlist.html#cfn-licensemanager-grant-allowedoperationlist-allowedoperationlist", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::LicenseManager::Grant.ArnList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-arnlist.html", + "Properties": { + "ArnList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-arnlist.html#cfn-licensemanager-grant-arnlist-arnlist", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::Grant.Filter": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-filter.html", "Properties": { @@ -33906,6 +33797,19 @@ } } }, + "AWS::LicenseManager::Grant.FilterList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-filterlist.html", + "Properties": { + "FilterList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-filterlist.html#cfn-licensemanager-grant-filterlist-filterlist", + "DuplicatesAllowed": false, + "ItemType": "Filter", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::Grant.StringList": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-stringlist.html", "Properties": { @@ -33919,6 +33823,32 @@ } } }, + "AWS::LicenseManager::Grant.TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-taglist.html", + "Properties": { + "TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-grant-taglist.html#cfn-licensemanager-grant-taglist-taglist", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::LicenseManager::License.ArnList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-arnlist.html", + "Properties": { + "ArnList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-arnlist.html#cfn-licensemanager-license-arnlist-arnlist", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::License.BorrowConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-borrowconfiguration.html", "Properties": { @@ -34006,6 +33936,19 @@ } } }, + "AWS::LicenseManager::License.EntitlementList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-entitlementlist.html", + "Properties": { + "EntitlementList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-entitlementlist.html#cfn-licensemanager-license-entitlementlist-entitlementlist", + "DuplicatesAllowed": false, + "ItemType": "Entitlement", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::License.Filter": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-filter.html", "Properties": { @@ -34023,6 +33966,19 @@ } } }, + "AWS::LicenseManager::License.FilterList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-filterlist.html", + "Properties": { + "FilterList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-filterlist.html#cfn-licensemanager-license-filterlist-filterlist", + "DuplicatesAllowed": false, + "ItemType": "Filter", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::License.IssuerData": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-issuerdata.html", "Properties": { @@ -34057,6 +34013,19 @@ } } }, + "AWS::LicenseManager::License.MetadataList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-metadatalist.html", + "Properties": { + "MetadataList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-metadatalist.html#cfn-licensemanager-license-metadatalist-metadatalist", + "DuplicatesAllowed": false, + "ItemType": "Metadata", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::License.ProvisionalConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-provisionalconfiguration.html", "Properties": { @@ -34117,6 +34086,19 @@ } } }, + "AWS::LicenseManager::License.TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-taglist.html", + "Properties": { + "TagList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-taglist.html#cfn-licensemanager-license-taglist-taglist", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::LicenseManager::License.ValidityDateFormat": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-licensemanager-license-validitydateformat.html", "Properties": { @@ -34817,323 +34799,6 @@ } } }, - "AWS::MediaConnect::Flow.Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html", - "Properties": { - "Algorithm": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-algorithm", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-constantinitializationvector", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DeviceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-deviceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "KeyType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-keytype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Region": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-region", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ResourceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-resourceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SecretArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-secretarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-encryption.html#cfn-mediaconnect-flow-encryption-url", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::Flow.FailoverConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-failoverconfig.html", - "Properties": { - "RecoveryWindow": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-failoverconfig.html#cfn-mediaconnect-flow-failoverconfig-recoverywindow", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "State": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-failoverconfig.html#cfn-mediaconnect-flow-failoverconfig-state", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::Flow.Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html", - "Properties": { - "Decryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-decryption", - "Required": false, - "Type": "Encryption", - "UpdateType": "Mutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "EntitlementArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-entitlementarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "IngestIp": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-ingestip", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "IngestPort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-ingestport", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-maxbitrate", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxLatency": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-maxlatency", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Protocol": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-protocol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SourceArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-sourcearn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "StreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-streamid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "VpcInterfaceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-vpcinterfacename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "WhitelistCidr": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flow-source.html#cfn-mediaconnect-flow-source-whitelistcidr", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowEntitlement.Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html", - "Properties": { - "Algorithm": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-algorithm", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-constantinitializationvector", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DeviceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-deviceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "KeyType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-keytype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Region": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-region", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ResourceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-resourceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SecretArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-secretarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowentitlement-encryption.html#cfn-mediaconnect-flowentitlement-encryption-url", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowOutput.Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html", - "Properties": { - "Algorithm": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-algorithm", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "KeyType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-keytype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SecretArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-encryption.html#cfn-mediaconnect-flowoutput-encryption-secretarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowOutput.VpcInterfaceAttachment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-vpcinterfaceattachment.html", - "Properties": { - "VpcInterfaceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowoutput-vpcinterfaceattachment.html#cfn-mediaconnect-flowoutput-vpcinterfaceattachment-vpcinterfacename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowSource.Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html", - "Properties": { - "Algorithm": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-algorithm", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "ConstantInitializationVector": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-constantinitializationvector", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DeviceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-deviceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "KeyType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-keytype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Region": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-region", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ResourceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-resourceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SecretArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-secretarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Url": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconnect-flowsource-encryption.html#cfn-mediaconnect-flowsource-encryption-url", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaConvert::JobTemplate.AccelerationSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-mediaconvert-jobtemplate-accelerationsettings.html", "Properties": { @@ -35274,17 +34939,6 @@ } } }, - "AWS::MediaLive::Channel.AncillarySourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ancillarysourcesettings.html", - "Properties": { - "SourceAncillaryChannelNumber": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-ancillarysourcesettings.html#cfn-medialive-channel-ancillarysourcesettings-sourceancillarychannelnumber", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.ArchiveContainerSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-archivecontainersettings.html", "Properties": { @@ -35293,12 +34947,6 @@ "Required": false, "Type": "M2tsSettings", "UpdateType": "Mutable" - }, - "RawSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-archivecontainersettings.html#cfn-medialive-channel-archivecontainersettings-rawsettings", - "Required": false, - "Type": "RawSettings", - "UpdateType": "Mutable" } } }, @@ -35400,12 +35048,6 @@ "Required": false, "Type": "PassThroughSettings", "UpdateType": "Mutable" - }, - "WavSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiocodecsettings.html#cfn-medialive-channel-audiocodecsettings-wavsettings", - "Required": false, - "Type": "WavSettings", - "UpdateType": "Mutable" } } }, @@ -35594,23 +35236,6 @@ } } }, - "AWS::MediaLive::Channel.AudioSilenceFailoverSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiosilencefailoversettings.html", - "Properties": { - "AudioSelectorName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiosilencefailoversettings.html#cfn-medialive-channel-audiosilencefailoversettings-audioselectorname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "AudioSilenceThresholdMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiosilencefailoversettings.html#cfn-medialive-channel-audiosilencefailoversettings-audiosilencethresholdmsec", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.AudioTrack": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-audiotrack.html", "Properties": { @@ -35637,19 +35262,6 @@ "AWS::MediaLive::Channel.AutomaticInputFailoverSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html", "Properties": { - "ErrorClearTimeMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html#cfn-medialive-channel-automaticinputfailoversettings-errorcleartimemsec", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FailoverConditions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html#cfn-medialive-channel-automaticinputfailoversettings-failoverconditions", - "ItemType": "FailoverCondition", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "InputPreference": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-automaticinputfailoversettings.html#cfn-medialive-channel-automaticinputfailoversettings-inputpreference", "PrimitiveType": "String", @@ -36018,12 +35630,6 @@ "AWS::MediaLive::Channel.CaptionSelectorSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html", "Properties": { - "AncillarySourceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-ancillarysourcesettings", - "Required": false, - "Type": "AncillarySourceSettings", - "UpdateType": "Mutable" - }, "AribSourceSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-captionselectorsettings.html#cfn-medialive-channel-captionselectorsettings-aribsourcesettings", "Required": false, @@ -36062,17 +35668,6 @@ } } }, - "AWS::MediaLive::Channel.CdiInputSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-cdiinputspecification.html", - "Properties": { - "Resolution": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-cdiinputspecification.html#cfn-medialive-channel-cdiinputspecification-resolution", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.ColorSpacePassthroughSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-colorspacepassthroughsettings.html", "Properties": {} @@ -36518,40 +36113,6 @@ } } }, - "AWS::MediaLive::Channel.FailoverCondition": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failovercondition.html", - "Properties": { - "FailoverConditionSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failovercondition.html#cfn-medialive-channel-failovercondition-failoverconditionsettings", - "Required": false, - "Type": "FailoverConditionSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.FailoverConditionSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html", - "Properties": { - "AudioSilenceSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html#cfn-medialive-channel-failoverconditionsettings-audiosilencesettings", - "Required": false, - "Type": "AudioSilenceFailoverSettings", - "UpdateType": "Mutable" - }, - "InputLossSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html#cfn-medialive-channel-failoverconditionsettings-inputlosssettings", - "Required": false, - "Type": "InputLossFailoverSettings", - "UpdateType": "Mutable" - }, - "VideoBlackSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-failoverconditionsettings.html#cfn-medialive-channel-failoverconditionsettings-videoblacksettings", - "Required": false, - "Type": "VideoBlackFailoverSettings", - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.FeatureActivations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-featureactivations.html", "Properties": { @@ -37392,12 +36953,6 @@ "Required": false, "UpdateType": "Mutable" }, - "DiscontinuityTags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-discontinuitytags", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "EncryptionType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-encryptiontype", "PrimitiveType": "String", @@ -37422,12 +36977,6 @@ "Required": false, "UpdateType": "Mutable" }, - "IncompleteSegmentBehavior": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-incompletesegmentbehavior", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, "IndexNSegments": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-hlsgroupsettings.html#cfn-medialive-channel-hlsgroupsettings-indexnsegments", "PrimitiveType": "Integer", @@ -37829,17 +37378,6 @@ } } }, - "AWS::MediaLive::Channel.InputLossFailoverSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossfailoversettings.html", - "Properties": { - "InputLossThresholdMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputlossfailoversettings.html#cfn-medialive-channel-inputlossfailoversettings-inputlossthresholdmsec", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.InputSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-inputsettings.html", "Properties": { @@ -38384,118 +37922,6 @@ } } }, - "AWS::MediaLive::Channel.Mpeg2FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2filtersettings.html", - "Properties": { - "TemporalFilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2filtersettings.html#cfn-medialive-channel-mpeg2filtersettings-temporalfiltersettings", - "Required": false, - "Type": "TemporalFilterSettings", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaLive::Channel.Mpeg2Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html", - "Properties": { - "AdaptiveQuantization": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-adaptivequantization", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "AfdSignaling": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-afdsignaling", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ColorMetadata": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-colormetadata", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ColorSpace": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-colorspace", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DisplayAspectRatio": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-displayaspectratio", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FilterSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-filtersettings", - "Required": false, - "Type": "Mpeg2FilterSettings", - "UpdateType": "Mutable" - }, - "FixedAfd": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-fixedafd", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FramerateDenominator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-frameratedenominator", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "FramerateNumerator": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-frameratenumerator", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "GopClosedCadence": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopclosedcadence", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "GopNumBFrames": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopnumbframes", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "GopSize": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopsize", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "GopSizeUnits": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-gopsizeunits", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "ScanType": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-scantype", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SubgopLength": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-subgoplength", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "TimecodeInsertion": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mpeg2settings.html#cfn-medialive-channel-mpeg2settings-timecodeinsertion", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.MsSmoothGroupSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-mssmoothgroupsettings.html", "Properties": { @@ -38940,10 +38366,6 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-passthroughsettings.html", "Properties": {} }, - "AWS::MediaLive::Channel.RawSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rawsettings.html", - "Properties": {} - }, "AWS::MediaLive::Channel.Rec601Settings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rec601settings.html", "Properties": {} @@ -38983,13 +38405,6 @@ "AWS::MediaLive::Channel.RtmpGroupSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html", "Properties": { - "AdMarkers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-admarkers", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "AuthenticationScheme": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-rtmpgroupsettings.html#cfn-medialive-channel-rtmpgroupsettings-authenticationscheme", "PrimitiveType": "String", @@ -39300,23 +38715,6 @@ } } }, - "AWS::MediaLive::Channel.VideoBlackFailoverSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoblackfailoversettings.html", - "Properties": { - "BlackDetectThreshold": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoblackfailoversettings.html#cfn-medialive-channel-videoblackfailoversettings-blackdetectthreshold", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "VideoBlackThresholdMsec": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videoblackfailoversettings.html#cfn-medialive-channel-videoblackfailoversettings-videoblackthresholdmsec", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.VideoCodecSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html", "Properties": { @@ -39337,12 +38735,6 @@ "Required": false, "Type": "H265Settings", "UpdateType": "Mutable" - }, - "Mpeg2Settings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-videocodecsettings.html#cfn-medialive-channel-videocodecsettings-mpeg2settings", - "Required": false, - "Type": "Mpeg2Settings", - "UpdateType": "Mutable" } } }, @@ -39455,29 +38847,6 @@ } } }, - "AWS::MediaLive::Channel.WavSettings": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html", - "Properties": { - "BitDepth": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html#cfn-medialive-channel-wavsettings-bitdepth", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - }, - "CodingMode": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html#cfn-medialive-channel-wavsettings-codingmode", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SampleRate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-wavsettings.html#cfn-medialive-channel-wavsettings-samplerate", - "PrimitiveType": "Double", - "Required": false, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaLive::Channel.WebvttDestinationSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-medialive-channel-webvttdestinationsettings.html", "Properties": {} @@ -46113,46 +45482,6 @@ } } }, - "AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttribute": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute.html", - "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute-key", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattribute-value", - "Required": true, - "Type": "AccessControlAttributeValue", - "UpdateType": "Mutable" - } - } - }, - "AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValue": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevalue.html", - "Properties": { - "Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevalue.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevalue-source", - "Required": true, - "Type": "AccessControlAttributeValueSourceList", - "UpdateType": "Mutable" - } - } - }, - "AWS::SSO::InstanceAccessControlAttributeConfiguration.AccessControlAttributeValueSourceList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevaluesourcelist.html", - "Properties": { - "AccessControlAttributeValueSourceList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevaluesourcelist.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributevaluesourcelist-accesscontrolattributevaluesourcelist", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::SageMaker::CodeRepository.GitConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-coderepository-gitconfig.html", "Properties": { @@ -48498,6 +47827,9 @@ } } }, + "AWS::StepFunctions::StateMachine.DefinitionSubstitutions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-definitionsubstitutions.html" + }, "AWS::StepFunctions::StateMachine.LogDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-stepfunctions-statemachine-logdestination.html", "Properties": { @@ -48766,30 +48098,6 @@ } } }, - "AWS::Transfer::User.PosixProfile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html", - "Properties": { - "Gid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html#cfn-transfer-user-posixprofile-gid", - "PrimitiveType": "Double", - "Required": true, - "UpdateType": "Mutable" - }, - "SecondaryGids": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html#cfn-transfer-user-posixprofile-secondarygids", - "PrimitiveItemType": "Double", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Uid": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-transfer-user-posixprofile.html#cfn-transfer-user-posixprofile-uid", - "PrimitiveType": "Double", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::Transfer::User.SshPublicKey": { "PrimitiveType": "String" }, @@ -50919,7 +50227,7 @@ } } }, - "ResourceSpecificationVersion": "23.0.0", + "ResourceSpecificationVersion": "22.0.0", "ResourceTypes": { "AWS::ACMPCA::Certificate": { "Attributes": { @@ -50975,12 +50283,6 @@ }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html", "Properties": { - "CsrExtensions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-csrextensions", - "Required": false, - "Type": "CsrExtensions", - "UpdateType": "Immutable" - }, "KeyAlgorithm": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-acmpca-certificateauthority.html#cfn-acmpca-certificateauthority-keyalgorithm", "PrimitiveType": "String", @@ -51741,11 +51043,6 @@ } }, "AWS::ApiGateway::ClientCertificate": { - "Attributes": { - "ClientCertificateId": { - "PrimitiveType": "String" - } - }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-clientcertificate.html", "Properties": { "Description": { @@ -52795,12 +52092,6 @@ "Required": false, "UpdateType": "Mutable" }, - "ResponseParameters": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-responseparameters", - "PrimitiveType": "Json", - "Required": false, - "UpdateType": "Mutable" - }, "TemplateSelectionExpression": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigatewayv2-integration.html#cfn-apigatewayv2-integration-templateselectionexpression", "PrimitiveType": "String", @@ -54873,9 +54164,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "Type": { @@ -54960,9 +54250,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html#cfn-athena-workgroup-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "WorkGroupConfiguration": { @@ -54981,79 +54270,76 @@ }, "AWS::AuditManager::Assessment": { "Attributes": { - "Arn": { + "arn": { "PrimitiveType": "String" }, - "AssessmentId": { + "assessmentId": { "PrimitiveType": "String" }, - "CreationTime": { + "creationTime": { "PrimitiveType": "Double" }, - "Delegations": { - "ItemType": "Delegation", - "Type": "List" + "delegations": { + "Type": "Delegations" }, - "FrameworkId": { + "frameworkId": { "PrimitiveType": "String" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html", "Properties": { - "AssessmentReportsDestination": { + "assessmentReportsDestination": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-assessmentreportsdestination", "Required": false, "Type": "AssessmentReportsDestination", "UpdateType": "Mutable" }, - "AwsAccount": { + "awsAccount": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-awsaccount", "Required": false, "Type": "AWSAccount", "UpdateType": "Immutable" }, - "Description": { + "description": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-description", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "FrameworkId": { + "frameworkId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-frameworkid", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, - "Name": { + "name": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-name", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Roles": { + "roles": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-roles", - "ItemType": "Role", "Required": false, - "Type": "List", + "Type": "Roles", "UpdateType": "Mutable" }, - "Scope": { + "scope": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-scope", "Required": false, "Type": "Scope", "UpdateType": "Mutable" }, - "Status": { + "status": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-status", "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, - "Tags": { + "tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-auditmanager-assessment.html#cfn-auditmanager-assessment-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" } } @@ -58917,45 +58203,6 @@ } } }, - "AWS::Config::StoredQuery": { - "Attributes": { - "QueryArn": { - "PrimitiveType": "String" - }, - "QueryId": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html", - "Properties": { - "QueryDescription": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-querydescription", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "QueryExpression": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-queryexpression", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "QueryName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-queryname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-storedquery.html#cfn-config-storedquery-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::DAX::Cluster": { "Attributes": { "Arn": { @@ -59843,458 +59090,6 @@ } } }, - "AWS::DataSync::Agent": { - "Attributes": { - "AgentArn": { - "PrimitiveType": "String" - }, - "EndpointType": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html", - "Properties": { - "ActivationKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-activationkey", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "AgentName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-agentname", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SecurityGroupArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-securitygrouparns", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - }, - "SubnetArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-subnetarns", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "VpcEndpointId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-agent.html#cfn-datasync-agent-vpcendpointid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::LocationEFS": { - "Attributes": { - "LocationArn": { - "PrimitiveType": "String" - }, - "LocationUri": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html", - "Properties": { - "Ec2Config": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-ec2config", - "Required": true, - "Type": "Ec2Config", - "UpdateType": "Immutable" - }, - "EfsFilesystemArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-efsfilesystemarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Subdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-subdirectory", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationefs.html#cfn-datasync-locationefs-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::DataSync::LocationFSxWindows": { - "Attributes": { - "LocationArn": { - "PrimitiveType": "String" - }, - "LocationUri": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html", - "Properties": { - "Domain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-domain", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "FsxFilesystemArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-fsxfilesystemarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Password": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-password", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "SecurityGroupArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-securitygrouparns", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Immutable" - }, - "Subdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-subdirectory", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "User": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationfsxwindows.html#cfn-datasync-locationfsxwindows-user", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::LocationNFS": { - "Attributes": { - "LocationArn": { - "PrimitiveType": "String" - }, - "LocationUri": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html", - "Properties": { - "MountOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-mountoptions", - "Required": false, - "Type": "MountOptions", - "UpdateType": "Immutable" - }, - "OnPremConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-onpremconfig", - "Required": true, - "Type": "OnPremConfig", - "UpdateType": "Immutable" - }, - "ServerHostname": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-serverhostname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Subdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-subdirectory", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationnfs.html#cfn-datasync-locationnfs-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::DataSync::LocationObjectStorage": { - "Attributes": { - "LocationArn": { - "PrimitiveType": "String" - }, - "LocationUri": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html", - "Properties": { - "AccessKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-accesskey", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "AgentArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-agentarns", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Immutable" - }, - "BucketName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-bucketname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "SecretKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-secretkey", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "ServerHostname": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-serverhostname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "ServerPort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-serverport", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "ServerProtocol": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-serverprotocol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Subdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-subdirectory", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationobjectstorage.html#cfn-datasync-locationobjectstorage-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::DataSync::LocationS3": { - "Attributes": { - "LocationArn": { - "PrimitiveType": "String" - }, - "LocationUri": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html", - "Properties": { - "S3BucketArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-s3bucketarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "S3Config": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-s3config", - "Required": true, - "Type": "S3Config", - "UpdateType": "Immutable" - }, - "S3StorageClass": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-s3storageclass", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Subdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-subdirectory", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locations3.html#cfn-datasync-locations3-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::DataSync::LocationSMB": { - "Attributes": { - "LocationArn": { - "PrimitiveType": "String" - }, - "LocationUri": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html", - "Properties": { - "AgentArns": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-agentarns", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Immutable" - }, - "Domain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-domain", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "MountOptions": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-mountoptions", - "Required": false, - "Type": "MountOptions", - "UpdateType": "Immutable" - }, - "Password": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-password", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "ServerHostname": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-serverhostname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Subdirectory": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-subdirectory", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "User": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-locationsmb.html#cfn-datasync-locationsmb-user", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, - "AWS::DataSync::Task": { - "Attributes": { - "DestinationNetworkInterfaceArns": { - "PrimitiveItemType": "String", - "Type": "List" - }, - "ErrorCode": { - "PrimitiveType": "String" - }, - "ErrorDetail": { - "PrimitiveType": "String" - }, - "SourceNetworkInterfaceArns": { - "PrimitiveItemType": "String", - "Type": "List" - }, - "Status": { - "PrimitiveType": "String" - }, - "TaskArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html", - "Properties": { - "CloudWatchLogGroupArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-cloudwatchloggrouparn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "DestinationLocationArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-destinationlocationarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Excludes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-excludes", - "ItemType": "FilterRule", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Options": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-options", - "Required": false, - "Type": "Options", - "UpdateType": "Mutable" - }, - "Schedule": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-schedule", - "Required": false, - "Type": "TaskSchedule", - "UpdateType": "Mutable" - }, - "SourceLocationArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-sourcelocationarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Tags": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-datasync-task.html#cfn-datasync-task-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, "AWS::Detective::Graph": { "Attributes": { "Arn": { @@ -60937,10 +59732,8 @@ "Properties": { "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-carriergateway.html#cfn-ec2-carriergateway-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "VpcId": { @@ -61846,10 +60639,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-localgatewayroutetablevpcassociation.html#cfn-ec2-localgatewayroutetablevpcassociation-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "VpcId": { @@ -61995,9 +60786,6 @@ }, "Status": { "PrimitiveType": "String" - }, - "StatusMessage": { - "PrimitiveType": "String" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html", @@ -62015,6 +60803,12 @@ "Required": true, "UpdateType": "Immutable" }, + "StatusMessage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-statusmessage", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-networkinsightsanalysis.html#cfn-ec2-networkinsightsanalysis-tags", "ItemType": "Tag", @@ -63607,7 +62401,6 @@ }, "RepositoryPolicyText": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-publicrepository.html#cfn-ecr-publicrepository-repositorypolicytext", - "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" } @@ -63647,7 +62440,6 @@ }, "RepositoryPolicyText": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html#cfn-ecr-repository-repositorypolicytext", - "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" }, @@ -65261,8 +64053,14 @@ "Arn": { "PrimitiveType": "String" }, + "Authentication": { + "Type": "Authentication" + }, "Status": { "PrimitiveType": "String" + }, + "UserGroupIds": { + "Type": "UserGroupIdList" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html", @@ -65273,12 +64071,6 @@ "Required": false, "UpdateType": "Mutable" }, - "Authentication": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-authentication", - "Required": false, - "Type": "Authentication", - "UpdateType": "Mutable" - }, "Engine": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-engine", "PrimitiveType": "String", @@ -65293,18 +64085,8 @@ }, "Passwords": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-passwords", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "UserGroupIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-user.html#cfn-elasticache-user-usergroupids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "PasswordList", "UpdateType": "Mutable" }, "UserId": { @@ -65326,6 +64108,12 @@ "Arn": { "PrimitiveType": "String" }, + "PendingChanges": { + "Type": "UserGroupPendingChanges" + }, + "ReplicationGroupIds": { + "Type": "ReplicationGroupIdList" + }, "Status": { "PrimitiveType": "String" } @@ -65338,20 +64126,6 @@ "Required": true, "UpdateType": "Immutable" }, - "PendingChanges": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-pendingchanges", - "Required": false, - "Type": "UserGroupPendingChanges", - "UpdateType": "Mutable" - }, - "ReplicationGroupIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-replicationgroupids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "UserGroupId": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-usergroupid", "PrimitiveType": "String", @@ -65360,10 +64134,8 @@ }, "UserIds": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-usergroup.html#cfn-elasticache-usergroup-userids", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "UserIdList", "UpdateType": "Mutable" } } @@ -65756,14 +64528,6 @@ } }, "AWS::ElasticLoadBalancingV2::ListenerRule": { - "Attributes": { - "IsDefault": { - "PrimitiveType": "Boolean" - }, - "RuleArn": { - "PrimitiveType": "String" - } - }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listenerrule.html", "Properties": { "Actions": { @@ -66846,9 +65610,8 @@ }, "InstanceDefinitions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-instancedefinitions", - "ItemType": "InstanceDefinition", "Required": true, - "Type": "List", + "Type": "InstanceDefinitions", "UpdateType": "Mutable" }, "LaunchTemplate": { @@ -66877,16 +65640,14 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "VpcSubnets": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-gamelift-gameservergroup.html#cfn-gamelift-gameservergroup-vpcsubnets", - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "VpcSubnets", "UpdateType": "Mutable" } } @@ -69784,9 +68545,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-authorizer.html#cfn-iot-authorizer-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "TokenKeyName": { @@ -69797,9 +68557,8 @@ }, "TokenSigningPublicKeys": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-authorizer.html#cfn-iot-authorizer-tokensigningpublickeys", - "PrimitiveItemType": "String", "Required": false, - "Type": "Map", + "Type": "TokenSigningPublicKeys", "UpdateType": "Mutable" } } @@ -69901,9 +68660,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-domainconfiguration.html#cfn-iot-domainconfiguration-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "ValidationCertificateArn": { @@ -69987,9 +68745,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iot-provisioningtemplate.html#cfn-iot-provisioningtemplate-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "Tags", "UpdateType": "Mutable" }, "TemplateBody": { @@ -70927,7 +69684,6 @@ }, "KeyPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kms-key.html#cfn-kms-key-keypolicy", - "PrimitiveType": "Json", "Required": true, "UpdateType": "Mutable" }, @@ -71008,9 +69764,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-datasource.html#cfn-kendra-datasource-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "TagList", "UpdateType": "Mutable" }, "Type": { @@ -71070,9 +69825,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-faq.html#cfn-kendra-faq-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "TagList", "UpdateType": "Mutable" } } @@ -71102,9 +69856,8 @@ }, "DocumentMetadataConfigurations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html#cfn-kendra-index-documentmetadataconfigurations", - "ItemType": "DocumentMetadataConfiguration", "Required": false, - "Type": "List", + "Type": "DocumentMetadataConfigurationList", "UpdateType": "Mutable" }, "Edition": { @@ -71133,9 +69886,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html#cfn-kendra-index-tags", - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "TagList", "UpdateType": "Mutable" }, "UserContextPolicy": { @@ -71146,9 +69898,8 @@ }, "UserTokenConfigurations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html#cfn-kendra-index-usertokenconfigurations", - "ItemType": "UserTokenConfiguration", "Required": false, - "Type": "List", + "Type": "UserTokenConfigurationList", "UpdateType": "Mutable" } } @@ -72054,10 +70805,8 @@ "Properties": { "AllowedOperations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-allowedoperations", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "AllowedOperationList", "UpdateType": "Mutable" }, "ClientToken": { @@ -72068,18 +70817,14 @@ }, "Filters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-filters", - "DuplicatesAllowed": false, - "ItemType": "Filter", "Required": false, - "Type": "List", + "Type": "FilterList", "UpdateType": "Mutable" }, "GrantArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-grantarns", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "ArnList", "UpdateType": "Mutable" }, "GrantName": { @@ -72096,10 +70841,8 @@ }, "GrantedOperations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-grantedoperations", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "AllowedOperationList", "UpdateType": "Mutable" }, "GranteePrincipalArn": { @@ -72140,10 +70883,8 @@ }, "Principals": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-principals", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "ArnList", "UpdateType": "Mutable" }, "SourceVersion": { @@ -72166,10 +70907,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-grant.html#cfn-licensemanager-grant-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "TagList", "UpdateType": "Mutable" }, "Version": { @@ -72208,18 +70947,14 @@ }, "Entitlements": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-entitlements", - "DuplicatesAllowed": false, - "ItemType": "Entitlement", "Required": true, - "Type": "List", + "Type": "EntitlementList", "UpdateType": "Mutable" }, "Filters": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-filters", - "DuplicatesAllowed": false, - "ItemType": "Filter", "Required": false, - "Type": "List", + "Type": "FilterList", "UpdateType": "Mutable" }, "HomeRegion": { @@ -72236,18 +70971,14 @@ }, "LicenseArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-licensearns", - "DuplicatesAllowed": false, - "PrimitiveItemType": "String", "Required": false, - "Type": "List", + "Type": "ArnList", "UpdateType": "Mutable" }, "LicenseMetadata": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-licensemetadata", - "DuplicatesAllowed": false, - "ItemType": "Metadata", "Required": false, - "Type": "List", + "Type": "MetadataList", "UpdateType": "Mutable" }, "LicenseName": { @@ -72294,10 +71025,8 @@ }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-licensemanager-license.html#cfn-licensemanager-license-tags", - "DuplicatesAllowed": false, - "ItemType": "Tag", "Required": false, - "Type": "List", + "Type": "TagList", "UpdateType": "Mutable" }, "Validity": { @@ -72854,312 +71583,6 @@ } } }, - "AWS::MediaConnect::Flow": { - "Attributes": { - "FlowArn": { - "PrimitiveType": "String" - }, - "FlowAvailabilityZone": { - "PrimitiveType": "String" - }, - "IngestIp": { - "PrimitiveType": "String" - }, - "SourceArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html", - "Properties": { - "AvailabilityZone": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-availabilityzone", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Source": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-source", - "Required": true, - "Type": "Source", - "UpdateType": "Mutable" - }, - "SourceFailoverConfig": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flow.html#cfn-mediaconnect-flow-sourcefailoverconfig", - "Required": false, - "Type": "FailoverConfig", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowEntitlement": { - "Attributes": { - "EntitlementArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html", - "Properties": { - "DataTransferSubscriberFeePercent": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-datatransfersubscriberfeepercent", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-description", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-encryption", - "Required": false, - "Type": "Encryption", - "UpdateType": "Mutable" - }, - "EntitlementStatus": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-entitlementstatus", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FlowArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-flowarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Subscribers": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowentitlement.html#cfn-mediaconnect-flowentitlement-subscribers", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowOutput": { - "Attributes": { - "OutputArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html", - "Properties": { - "CidrAllowList": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-cidrallowlist", - "PrimitiveItemType": "String", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-description", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Destination": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-destination", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "Encryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-encryption", - "Required": false, - "Type": "Encryption", - "UpdateType": "Mutable" - }, - "FlowArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-flowarn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "MaxLatency": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-maxlatency", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-name", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, - "Port": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-port", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Protocol": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-protocol", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "RemoteId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-remoteid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "SmoothingLatency": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-smoothinglatency", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "StreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-streamid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "VpcInterfaceAttachment": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowoutput.html#cfn-mediaconnect-flowoutput-vpcinterfaceattachment", - "Required": false, - "Type": "VpcInterfaceAttachment", - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowSource": { - "Attributes": { - "IngestIp": { - "PrimitiveType": "String" - }, - "SourceArn": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html", - "Properties": { - "Decryption": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-decryption", - "Required": false, - "Type": "Encryption", - "UpdateType": "Mutable" - }, - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-description", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "EntitlementArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-entitlementarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "FlowArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-flowarn", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "IngestPort": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-ingestport", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxBitrate": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-maxbitrate", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "MaxLatency": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-maxlatency", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Mutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Protocol": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-protocol", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "StreamId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-streamid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "VpcInterfaceName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-vpcinterfacename", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - }, - "WhitelistCidr": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowsource.html#cfn-mediaconnect-flowsource-whitelistcidr", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::MediaConnect::FlowVpcInterface": { - "Attributes": { - "FlowArn": { - "PrimitiveType": "String" - }, - "Name": { - "PrimitiveType": "String" - }, - "NetworkInterfaceIds": { - "PrimitiveItemType": "String", - "Type": "List" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html", - "Properties": { - "RoleArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html#cfn-mediaconnect-flowvpcinterface-rolearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - }, - "SecurityGroupIds": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html#cfn-mediaconnect-flowvpcinterface-securitygroupids", - "PrimitiveItemType": "String", - "Required": true, - "Type": "List", - "UpdateType": "Mutable" - }, - "SubnetId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-mediaconnect-flowvpcinterface.html#cfn-mediaconnect-flowvpcinterface-subnetid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::MediaConvert::JobTemplate": { "Attributes": { "Arn": { @@ -73332,12 +71755,6 @@ }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html", "Properties": { - "CdiInputSpecification": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html#cfn-medialive-channel-cdiinputspecification", - "Required": false, - "Type": "CdiInputSpecification", - "UpdateType": "Mutable" - }, "ChannelClass": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-medialive-channel.html#cfn-medialive-channel-channelclass", "PrimitiveType": "String", @@ -77926,17 +76343,6 @@ } } }, - "AWS::Route53::DNSSEC": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-dnssec.html", - "Properties": { - "HostedZoneId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-dnssec.html#cfn-route53-dnssec-hostedzoneid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - } - } - }, "AWS::Route53::HealthCheck": { "Attributes": { "HealthCheckId": { @@ -78010,35 +76416,6 @@ } } }, - "AWS::Route53::KeySigningKey": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html", - "Properties": { - "HostedZoneId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-hostedzoneid", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "KeyManagementServiceArn": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-keymanagementservicearn", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-name", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Status": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html#cfn-route53-keysigningkey-status", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Mutable" - } - } - }, "AWS::Route53::RecordSet": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html", "Properties": { @@ -78167,28 +76544,6 @@ } } }, - "AWS::Route53Resolver::ResolverDNSSECConfig": { - "Attributes": { - "Id": { - "PrimitiveType": "String" - }, - "OwnerId": { - "PrimitiveType": "String" - }, - "ValidationStatus": { - "PrimitiveType": "String" - } - }, - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverdnssecconfig.html", - "Properties": { - "ResourceId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53resolver-resolverdnssecconfig.html#cfn-route53resolver-resolverdnssecconfig-resourceid", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::Route53Resolver::ResolverEndpoint": { "Attributes": { "Arn": { @@ -79594,24 +77949,17 @@ "AWS::SSO::InstanceAccessControlAttributeConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html", "Properties": { - "AccessControlAttributes": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html#cfn-sso-instanceaccesscontrolattributeconfiguration-accesscontrolattributes", - "ItemType": "AccessControlAttribute", - "Required": false, - "Type": "List", - "UpdateType": "Mutable" - }, "InstanceAccessControlAttributeConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html#cfn-sso-instanceaccesscontrolattributeconfiguration-instanceaccesscontrolattributeconfiguration", "PrimitiveType": "Json", - "Required": false, + "Required": true, "UpdateType": "Mutable" }, "InstanceArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-instanceaccesscontrolattributeconfiguration.html#cfn-sso-instanceaccesscontrolattributeconfiguration-instancearn", "PrimitiveType": "String", "Required": true, - "UpdateType": "Immutable" + "UpdateType": "Mutable" } } }, @@ -79631,7 +77979,7 @@ }, "InlinePolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sso-permissionset.html#cfn-sso-permissionset-inlinepolicy", - "PrimitiveType": "Json", + "PrimitiveType": "String", "Required": false, "UpdateType": "Mutable" }, @@ -79772,6 +78120,11 @@ } }, "AWS::SageMaker::Device": { + "Attributes": { + "DeviceFleetName": { + "PrimitiveType": "String" + } + }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html", "Properties": { "Device": { @@ -79781,12 +78134,6 @@ "Type": "Device", "UpdateType": "Mutable" }, - "DeviceFleetName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html#cfn-sagemaker-device-devicefleetname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html#cfn-sagemaker-device-tags", "ItemType": "Json", @@ -79797,6 +78144,11 @@ } }, "AWS::SageMaker::DeviceFleet": { + "Attributes": { + "DeviceFleetName": { + "PrimitiveType": "String" + } + }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html", "Properties": { "Description": { @@ -79805,12 +78157,6 @@ "Required": false, "UpdateType": "Mutable" }, - "DeviceFleetName": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html#cfn-sagemaker-devicefleet-devicefleetname", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, "OutputConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html#cfn-sagemaker-devicefleet-outputconfig", "Required": true, @@ -80152,7 +78498,6 @@ }, "ModelPackageGroupPolicy": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelpackagegroup.html#cfn-sagemaker-modelpackagegroup-modelpackagegrouppolicy", - "PrimitiveType": "Json", "Required": false, "UpdateType": "Mutable" }, @@ -81558,9 +79903,8 @@ }, "DefinitionSubstitutions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-stepfunctions-statemachine.html#cfn-stepfunctions-statemachine-definitionsubstitutions", - "PrimitiveItemType": "String", "Required": false, - "Type": "Map", + "Type": "DefinitionSubstitutions", "UpdateType": "Mutable" }, "LoggingConfiguration": { @@ -81771,12 +80115,6 @@ "Required": false, "UpdateType": "Mutable" }, - "Domain": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-server.html#cfn-transfer-server-domain", - "PrimitiveType": "String", - "Required": false, - "UpdateType": "Immutable" - }, "EndpointDetails": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-server.html#cfn-transfer-server-endpointdetails", "Required": false, @@ -81868,12 +80206,6 @@ "Required": false, "UpdateType": "Mutable" }, - "PosixProfile": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-posixprofile", - "Required": false, - "Type": "PosixProfile", - "UpdateType": "Mutable" - }, "Role": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-transfer-user.html#cfn-transfer-user-role", "PrimitiveType": "String", diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json b/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json index 41065e7109a19..9c032b1062520 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json @@ -955,29 +955,6 @@ } } }, - "AWS::Serverless::LayerVersion.S3Location": { - "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#s3-location-object", - "Properties": { - "Bucket": { - "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Key": { - "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction", - "PrimitiveType": "String", - "Required": true, - "UpdateType": "Immutable" - }, - "Version": { - "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction", - "PrimitiveType": "Integer", - "Required": false, - "UpdateType": "Immutable" - } - } - }, "AWS::Serverless::SimpleTable.PrimaryKey": { "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#primary-key-object", "Properties": { @@ -1591,13 +1568,8 @@ }, "ContentUri": { "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlesslayerversion", - "PrimitiveTypes": [ - "String" - ], + "PrimitiveType": "String", "Required": false, - "Types": [ - "S3Location" - ], "UpdateType": "Immutable" }, "Description": { diff --git a/packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json b/packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json new file mode 100644 index 0000000000000..4282477502f05 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/500_IoT_ProvisioningTemplate_Tags_CorrectItemType_patch.json @@ -0,0 +1,21 @@ +{ + "PropertyTypes": { + "AWS::IoT::ProvisioningTemplate.Tags": { + "patch": { + "description": "AWS::IoT::ProvisioningTemplate.Tag.ItemType should have been PrimitiveItemType", + "operations": [ + { + "op": "remove", + "path": "/Properties/Tags/ItemType", + "value": "Json" + }, + { + "op": "add", + "path": "/Properties/Tags/PrimitiveItemType", + "value": "Json" + } + ] + } + } + } +} diff --git a/packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json b/packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json new file mode 100644 index 0000000000000..6f9224d738886 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/570_Athena_Workgroup_Tags_patch.json @@ -0,0 +1,36 @@ +{ + "PropertyTypes": { + "AWS::Athena::WorkGroup.Tags": { + "patch": { + "description": "Corrects tag specification for AWS::Athena::WorkGroup.Tags", + "operations": [ + { + "op": "remove", + "path": "/Properties" + }, + { + "op": "add", + "path": "/ItemType", + "value": "Tag" + }, + { + "op": "add", + "path": "/Required", + "value": false + }, + { + "op": "add", + "path": "/Type", + "value": "List" + }, + { + "op": "add", + "path": "/UpdateType", + "value": "Mutable" + } + ] + } + } + } +} + diff --git a/packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json b/packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json new file mode 100644 index 0000000000000..45e189299b113 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/610_IoT_Authorizer_Tags_patch.json @@ -0,0 +1,16 @@ +{ + "PropertyTypes": { + "AWS::IoT::Authorizer.Tags": { + "patch": { + "description": "Tags is defined as a List whereas it should he List", + "operations": [ + { + "path": "/Properties/Tags/ItemType", + "op": "replace", + "value": "Tag" + } + ] + } + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json b/packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json new file mode 100644 index 0000000000000..5ffa659a47b46 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/690_IoT_DomainConfiguration_Tags_CorrectItemType_patch.json @@ -0,0 +1,21 @@ +{ + "PropertyTypes": { + "AWS::IoT::DomainConfiguration.Tags": { + "patch": { + "description": "AWS::IoT::DomainConfiguration.Tag.ItemType should have been PrimitiveItemType", + "operations": [ + { + "op": "remove", + "path": "/Properties/Tags/ItemType", + "value": "Json" + }, + { + "op": "add", + "path": "/Properties/Tags/PrimitiveItemType", + "value": "Json" + } + ] + } + } + } +} diff --git a/packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json b/packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json new file mode 100644 index 0000000000000..17c14a9db8bf6 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/711_AuditMgr_Assesment_patch.json @@ -0,0 +1,13 @@ +{ + "ResourceTypes": { + "patch": { + "description": "Remove the AWS::AuditManager::Assessment resource type", + "operations": [ + { + "op": "remove", + "path": "/AWS::AuditManager::Assessment" + } + ] + } + } +} diff --git a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts index 654e1aa032926..ebec6ab166fbb 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/docker-image-asset.ts @@ -23,24 +23,12 @@ export interface DockerImageSource { * The directory containing the Docker image build instructions. * * This path is relative to the asset manifest location. - * - * @default - Exactly one of `directory` and `executable` is required - */ - readonly directory?: string; - - /** - * A command-line executable that returns the name of a local - * Docker image on stdout after being run. - * - * @default - Exactly one of `directory` and `executable` is required */ - readonly executable?: string[]; + readonly directory: string; /** * The name of the file with build instructions * - * Only allowed when `directory` is set. - * * @default "Dockerfile" */ readonly dockerFile?: string; @@ -48,8 +36,6 @@ export interface DockerImageSource { /** * Target build stage in a Dockerfile with multiple build stages * - * Only allowed when `directory` is set. - * * @default - The last stage in the Dockerfile */ readonly dockerBuildTarget?: string; @@ -57,8 +43,6 @@ export interface DockerImageSource { /** * Additional build arguments * - * Only allowed when `directory` is set. - * * @default - No additional build arguments */ readonly dockerBuildArgs?: { [name: string]: string }; diff --git a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts index 58c7e0cc93ebc..efa6cd4384bbe 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/lib/assets/file-asset.ts @@ -34,27 +34,16 @@ export enum FileAssetPackaging { * Describe the source of a file asset */ export interface FileSource { - /** - * External command which will produce the file asset to upload. - * - * @default - Exactly one of `executable` and `path` is required. - */ - readonly executable?: string[]; - /** * The filesystem object to upload * * This path is relative to the asset manifest location. - * - * @default - Exactly one of `executable` and `path` is required. */ - readonly path?: string; + readonly path: string; /** * Packaging method * - * Only allowed when `path` is specified. - * * @default FILE */ readonly packaging?: FileAssetPackaging; @@ -73,4 +62,4 @@ export interface FileDestination extends AwsDestination { * The destination object key */ readonly objectKey: string; -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index e24e4cab83995..f14d8ad679b71 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -66,7 +66,7 @@ "jest": "^26.6.3", "mock-fs": "^4.13.0", "pkglint": "0.0.0", - "typescript-json-schema": "^0.47.0" + "typescript-json-schema": "^0.46.0" }, "repository": { "url": "https://github.com/aws/aws-cdk.git", @@ -83,7 +83,7 @@ "semver" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json b/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json index 995a895ad824d..bbd61aae66813 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json +++ b/packages/@aws-cdk/cloud-assembly-schema/schema/assets.schema.json @@ -53,26 +53,22 @@ "description": "Describe the source of a file asset", "type": "object", "properties": { - "executable": { - "description": "External command which will produce the file asset to upload. (Default - Exactly one of `executable` and `path` is required.)", - "type": "array", - "items": { - "type": "string" - } - }, "path": { - "description": "The filesystem object to upload\n\nThis path is relative to the asset manifest location. (Default - Exactly one of `executable` and `path` is required.)", + "description": "The filesystem object to upload\n\nThis path is relative to the asset manifest location.", "type": "string" }, "packaging": { - "description": "Packaging method\n\nOnly allowed when `path` is specified. (Default FILE)", + "description": "Packaging method (Default FILE)", "enum": [ "file", "zip" ], "type": "string" } - } + }, + "required": [ + "path" + ] }, "FileDestination": { "description": "Where in S3 a file asset needs to be published", @@ -130,32 +126,28 @@ "type": "object", "properties": { "directory": { - "description": "The directory containing the Docker image build instructions.\n\nThis path is relative to the asset manifest location. (Default - Exactly one of `directory` and `executable` is required)", + "description": "The directory containing the Docker image build instructions.\n\nThis path is relative to the asset manifest location.", "type": "string" }, - "executable": { - "description": "A command-line executable that returns the name of a local\nDocker image on stdout after being run. (Default - Exactly one of `directory` and `executable` is required)", - "type": "array", - "items": { - "type": "string" - } - }, "dockerFile": { - "description": "The name of the file with build instructions\n\nOnly allowed when `directory` is set. (Default Dockerfile)", + "description": "The name of the file with build instructions (Default Dockerfile)", "type": "string" }, "dockerBuildTarget": { - "description": "Target build stage in a Dockerfile with multiple build stages\n\nOnly allowed when `directory` is set. (Default - The last stage in the Dockerfile)", + "description": "Target build stage in a Dockerfile with multiple build stages (Default - The last stage in the Dockerfile)", "type": "string" }, "dockerBuildArgs": { - "description": "Additional build arguments\n\nOnly allowed when `directory` is set. (Default - No additional build arguments)", + "description": "Additional build arguments (Default - No additional build arguments)", "type": "object", "additionalProperties": { "type": "string" } } - } + }, + "required": [ + "directory" + ] }, "DockerImageDestination": { "description": "Where to publish docker images", diff --git a/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json b/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json index e6bb766b23585..bdc5a9f306dec 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json +++ b/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.version.json @@ -1 +1 @@ -{"version":"8.0.0"} +{"version":"7.0.0"} \ No newline at end of file diff --git a/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts b/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts index 24ddd465484b7..62aebfa26e6ee 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/test/assets.test.ts @@ -21,18 +21,6 @@ describe('Docker image asset', () => { }, }, }, - externalAsset: { - source: { - executable: ['sometool'], - }, - destinations: { - dest: { - region: 'us-north-20', - repositoryName: 'REPO', - imageTag: 'TAG', - }, - }, - }, }, }); }).not.toThrow(); @@ -44,18 +32,12 @@ describe('Docker image asset', () => { version: Manifest.version(), dockerImages: { asset: { - source: { - directory: true, - }, - destinations: {}, - }, - externalAsset: { source: {}, destinations: {}, }, }, }); - }).toThrow(/instance\.dockerImages\.asset\.source\.directory is not of a type\(s\) string/); + }).toThrow(/instance\.dockerImages\.asset\.source requires property \"directory\"/); }); }); @@ -78,18 +60,6 @@ describe('File asset', () => { }, }, }, - externalAsset: { - source: { - executable: ['sometool'], - }, - destinations: { - dest: { - region: 'us-north-20', - bucketName: 'Bouquet', - objectKey: 'key', - }, - }, - }, }, }); }).not.toThrow(); @@ -139,18 +109,6 @@ describe('File asset', () => { }, }, }, - externalAsset: { - source: { - executable: ['sometool'], - }, - destinations: { - dest: { - region: 'us-north-20', - bucketName: 'Bouquet', - objectKey: 'key', - }, - }, - }, }, }); }).toThrow(/instance\.files\.asset\.source\.path is not of a type\(s\) string/); @@ -191,4 +149,4 @@ function validate(manifest: any) { fs.unlinkSync(filePath); fs.rmdirSync(dir); } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index c317644bef177..7179ae4210672 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -49,7 +49,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index 6241f01c2e4b7..a697d0d80b041 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -83,7 +83,6 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", - "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscalingplans": "0.0.0", "@aws-cdk/aws-backup": "0.0.0", @@ -111,7 +110,6 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", - "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -163,7 +161,6 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", - "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -227,7 +224,6 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", - "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscalingplans": "0.0.0", "@aws-cdk/aws-backup": "0.0.0", @@ -255,7 +251,6 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", - "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -307,7 +302,6 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", - "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -377,7 +371,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/core/README.md b/packages/@aws-cdk/core/README.md index 8c5ce270d8dc1..3b013f3ff990e 100644 --- a/packages/@aws-cdk/core/README.md +++ b/packages/@aws-cdk/core/README.md @@ -843,11 +843,3 @@ IAM operator, we need it in the *key* of a `StringEquals` condition. JSON keys *must be* strings, so to circumvent this limitation, we use `CfnJson` to "delay" the rendition of this template section to deploy-time. This means that the value of `StringEquals` in the template will be `{ "Fn::GetAtt": [ "ConditionJson", "Value" ] }`, and will only "expand" to the operator we synthesized during deployment. - -### Stack Resource Limit - -When deploying to AWS CloudFormation, it needs to keep in check the amount of resources being added inside a Stack. Currently it's possible to check the limits in the [AWS CloudFormation quotas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-limits.html) page. - -It's possible to synthesize the project with more Resources than the allowed (or even reduce the number of Resources). - -Set the context key `@aws-cdk/core:stackResourceLimit` with the proper value, being 0 for disable the limit of resources. diff --git a/packages/@aws-cdk/core/lib/assets.ts b/packages/@aws-cdk/core/lib/assets.ts index d992546dbfdb3..17d3b9d93e53f 100644 --- a/packages/@aws-cdk/core/lib/assets.ts +++ b/packages/@aws-cdk/core/lib/assets.ts @@ -106,30 +106,17 @@ export interface FileAssetSource { */ readonly sourceHash: string; - /** - * An external command that will produce the packaged asset. - * - * The command should produce the location of a ZIP file on `stdout`. - * - * @default - Exactly one of `directory` and `executable` is required - */ - readonly executable?: string[]; - /** * The path, relative to the root of the cloud assembly, in which this asset * source resides. This can be a path to a file or a directory, dependning on the * packaging type. - * - * @default - Exactly one of `directory` and `executable` is required */ - readonly fileName?: string; + readonly fileName: string; /** * Which type of packaging to perform. - * - * @default - Required if `fileName` is specified. */ - readonly packaging?: FileAssetPackaging; + readonly packaging: FileAssetPackaging; } export interface DockerImageAssetSource { @@ -143,22 +130,11 @@ export interface DockerImageAssetSource { */ readonly sourceHash: string; - /** - * An external command that will produce the packaged asset. - * - * The command should produce the name of a local Docker image on `stdout`. - * - * @default - Exactly one of `directoryName` and `executable` is required - */ - readonly executable?: string[]; - /** * The directory where the Dockerfile is stored, must be relative * to the cloud assembly root. - * - * @default - Exactly one of `directoryName` and `executable` is required */ - readonly directoryName?: string; + readonly directoryName: string; /** * Build args to pass to the `docker build` command. @@ -167,8 +143,6 @@ export interface DockerImageAssetSource { * values cannot refer to unresolved tokens (such as `lambda.functionArn` or * `queue.queueUrl`). * - * Only allowed when `directoryName` is specified. - * * @default - no build args are passed */ readonly dockerBuildArgs?: { [key: string]: string }; @@ -176,8 +150,6 @@ export interface DockerImageAssetSource { /** * Docker target to build to * - * Only allowed when `directoryName` is specified. - * * @default - no target */ readonly dockerBuildTarget?: string; @@ -185,8 +157,6 @@ export interface DockerImageAssetSource { /** * Path to the Dockerfile (relative to the directory). * - * Only allowed when `directoryName` is specified. - * * @default - no file */ readonly dockerFile?: string; diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts index ff38c78f3597b..6c66166513c42 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/default-synthesizer.ts @@ -1,16 +1,16 @@ -import * as fs from 'fs'; -import * as path from 'path'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; +import * as fs from 'fs'; +import * as path from 'path'; import { DockerImageAssetLocation, DockerImageAssetSource, FileAssetLocation, FileAssetPackaging, FileAssetSource } from '../assets'; import { Fn } from '../cfn-fn'; import { CfnParameter } from '../cfn-parameter'; import { CfnRule } from '../cfn-rule'; import { Stack } from '../stack'; import { Token } from '../token'; -import { assertBound, contentHash } from './_shared'; import { StackSynthesizer } from './stack-synthesizer'; import { ISynthesisSession } from './types'; +import { assertBound, contentHash } from './_shared'; export const BOOTSTRAP_QUALIFIER_CONTEXT = '@aws-cdk/core:bootstrapQualifier'; @@ -289,15 +289,12 @@ export class DefaultStackSynthesizer extends StackSynthesizer { public addFileAsset(asset: FileAssetSource): FileAssetLocation { assertBound(this.stack); assertBound(this.bucketName); - validateFileAssetSource(asset); - const objectKey = this.bucketPrefix + asset.sourceHash + (asset.packaging === FileAssetPackaging.ZIP_DIRECTORY ? '.zip' : ''); // Add to manifest this.files[asset.sourceHash] = { source: { path: asset.fileName, - executable: asset.executable, packaging: asset.packaging, }, destinations: { @@ -328,14 +325,12 @@ export class DefaultStackSynthesizer extends StackSynthesizer { public addDockerImageAsset(asset: DockerImageAssetSource): DockerImageAssetLocation { assertBound(this.stack); assertBound(this.repositoryName); - validateDockerImageAssetSource(asset); const imageTag = asset.sourceHash; // Add to manifest this.dockerImages[asset.sourceHash] = { source: { - executable: asset.executable, directory: asset.directoryName, dockerBuildArgs: asset.dockerBuildArgs, dockerBuildTarget: asset.dockerBuildTarget, @@ -571,29 +566,3 @@ function range(startIncl: number, endExcl: number) { } return ret; } - -function validateFileAssetSource(asset: FileAssetSource) { - if (!!asset.executable === !!asset.fileName) { - throw new Error(`Exactly one of 'fileName' or 'executable' is required, got: ${JSON.stringify(asset)}`); - } - - if (!!asset.packaging !== !!asset.fileName) { - throw new Error(`'packaging' is expected in combination with 'fileName', got: ${JSON.stringify(asset)}`); - } -} - -function validateDockerImageAssetSource(asset: DockerImageAssetSource) { - if (!!asset.executable === !!asset.directoryName) { - throw new Error(`Exactly one of 'directoryName' or 'executable' is required, got: ${JSON.stringify(asset)}`); - } - - check('dockerBuildArgs'); - check('dockerBuildTarget'); - check('dockerFile'); - - function check(key: K) { - if (asset[key] && !asset.directoryName) { - throw new Error(`'${key}' is only allowed in combination with 'directoryName', got: ${JSON.stringify(asset)}`); - } - } -} diff --git a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts index 6044edef0a9ba..9575089e0adf5 100644 --- a/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts +++ b/packages/@aws-cdk/core/lib/stack-synthesizers/legacy.ts @@ -121,10 +121,6 @@ export class LegacyStackSynthesizer extends StackSynthesizer { // only add every image (identified by source hash) once for each stack that uses it. if (!this.addedImageAssets.has(assetId)) { - if (!asset.directoryName) { - throw new Error(`LegacyStackSynthesizer does not support this type of file asset: ${JSON.stringify(asset)}`); - } - const metadata: cxschema.ContainerImageAssetMetadataEntry = { repositoryName, imageTag, @@ -154,10 +150,6 @@ export class LegacyStackSynthesizer extends StackSynthesizer { if (!params) { params = new FileAssetParameters(this.assetParameters, asset.sourceHash); - if (!asset.fileName || !asset.packaging) { - throw new Error(`LegacyStackSynthesizer does not support this type of file asset: ${JSON.stringify(asset)}`); - } - const metadata: cxschema.FileAssetMetadataEntry = { path: asset.fileName, id: asset.sourceHash, diff --git a/packages/@aws-cdk/core/lib/stack.ts b/packages/@aws-cdk/core/lib/stack.ts index 7a9819679c1d3..38fe5f99af808 100644 --- a/packages/@aws-cdk/core/lib/stack.ts +++ b/packages/@aws-cdk/core/lib/stack.ts @@ -22,12 +22,8 @@ import { makeUniqueId } from './private/uniqueid'; const STACK_SYMBOL = Symbol.for('@aws-cdk/core.Stack'); const MY_STACK_CACHE = Symbol.for('@aws-cdk/core.Stack.myStack'); -export const STACK_RESOURCE_LIMIT_CONTEXT = '@aws-cdk/core:stackResourceLimit'; - const VALID_STACK_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-]*$/; -const MAX_RESOURCES = 500; - export interface StackProps { /** * A description of the stack. @@ -752,17 +748,6 @@ export class Stack extends Construct implements ITaggable { // write the CloudFormation template as a JSON file const outPath = path.join(builder.outdir, this.templateFile); - - if (this.maxResources > 0) { - const resources = template.Resources || {}; - const numberOfResources = Object.keys(resources).length; - - if (numberOfResources > this.maxResources) { - throw new Error(`Number of resources: ${numberOfResources} is greater than allowed maximum of ${this.maxResources}`); - } else if (numberOfResources >= (this.maxResources * 0.8)) { - Annotations.of(this).addInfo(`Number of resources: ${numberOfResources} is approaching allowed maximum of ${this.maxResources}`); - } - } fs.writeFileSync(outPath, JSON.stringify(template, undefined, 2)); for (const ctx of this._missingContext) { @@ -917,16 +902,6 @@ export class Stack extends Construct implements ITaggable { }; } - /** - * Maximum number of resources in the stack - * - * Set to 0 to mean "unlimited". - */ - private get maxResources(): number { - const contextLimit = this.node.tryGetContext(STACK_RESOURCE_LIMIT_CONTEXT); - return contextLimit !== undefined ? parseInt(contextLimit, 10) : MAX_RESOURCES; - } - /** * Check whether this stack has a (transitive) dependency on another stack * diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index c7162a5e3f31a..b24326e58d238 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -214,7 +214,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index dfd701961a2e0..ee6fe6de474b0 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -46,68 +46,6 @@ nodeunitShim({ test.done(); }, - 'when stackResourceLimit is default, should give error'(test: Test) { - // GIVEN - const app = new App({}); - - const stack = new Stack(app, 'MyStack'); - - // WHEN - for (let index = 0; index < 1000; index++) { - new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); - } - - test.throws(() => { - app.synth(); - }, 'Number of resources: 1000 is greater than allowed maximum of 500'); - - test.done(); - }, - - 'when stackResourceLimit is defined, should give the proper error'(test: Test) { - // GIVEN - const app = new App({ - context: { - '@aws-cdk/core:stackResourceLimit': 100, - }, - }); - - const stack = new Stack(app, 'MyStack'); - - // WHEN - for (let index = 0; index < 200; index++) { - new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); - } - - test.throws(() => { - app.synth(); - }, 'Number of resources: 200 is greater than allowed maximum of 100'); - - test.done(); - }, - - 'when stackResourceLimit is 0, should not give error'(test: Test) { - // GIVEN - const app = new App({ - context: { - '@aws-cdk/core:stackResourceLimit': 0, - }, - }); - - const stack = new Stack(app, 'MyStack'); - - // WHEN - for (let index = 0; index < 1000; index++) { - new CfnResource(stack, `MyResource-${index}`, { type: 'MyResourceType' }); - } - - test.doesNotThrow(() => { - app.synth(); - }); - - test.done(); - }, - 'stack.templateOptions can be used to set template-level options'(test: Test) { const stack = new Stack(); diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index 71e4ed01390f8..85ec98a49236d 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -81,7 +81,7 @@ "@types/aws-lambda": "^8.10.64", "@types/fs-extra": "^8.1.1", "@types/sinon": "^9.0.9", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "aws-sdk-mock": "^5.1.0", "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", @@ -113,7 +113,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/cx-api/lib/features.ts b/packages/@aws-cdk/cx-api/lib/features.ts index c91607b587eb0..499c8e3438fe8 100644 --- a/packages/@aws-cdk/cx-api/lib/features.ts +++ b/packages/@aws-cdk/cx-api/lib/features.ts @@ -80,15 +80,6 @@ export const SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME = '@aws-cdk/aws-secretsmana */ export const KMS_DEFAULT_KEY_POLICIES = '@aws-cdk/aws-kms:defaultKeyPolicies'; -/** - * Change the old 's3:PutObject*' permission to 's3:PutObject' on Bucket, - * as the former includes 's3:PutObjectAcl', - * which allows changing the visibility of an object written to the Bucket. - * Use a feature flag to make sure existing customers who might be relying - * on the overly-broad permissions are not broken. - */ -export const S3_GRANT_WRITE_WITHOUT_ACL = '@aws-cdk/aws-s3:grantWriteWithoutAcl'; - /** * This map includes context keys and values for feature flags that enable * capabilities "from the future", which we could not introduce as the default @@ -109,7 +100,6 @@ export const FUTURE_FLAGS = { [DOCKER_IGNORE_SUPPORT]: true, [SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME]: true, [KMS_DEFAULT_KEY_POLICIES]: true, - [S3_GRANT_WRITE_WITHOUT_ACL]: true, // We will advertise this flag when the feature is complete // [NEW_STYLE_STACK_SYNTHESIS_CONTEXT]: 'true', @@ -127,7 +117,6 @@ const FUTURE_FLAGS_DEFAULTS: { [key: string]: boolean } = { [DOCKER_IGNORE_SUPPORT]: false, [SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME]: false, [KMS_DEFAULT_KEY_POLICIES]: false, - [S3_GRANT_WRITE_WITHOUT_ACL]: false, }; export function futureFlagDefault(flag: string): boolean { diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index 248d5118d7f53..e21884db8398c 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -88,7 +88,7 @@ "semver" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/example-construct-library/package.json b/packages/@aws-cdk/example-construct-library/package.json index 4299e4b45bca1..826d9b02e1b8b 100644 --- a/packages/@aws-cdk/example-construct-library/package.json +++ b/packages/@aws-cdk/example-construct-library/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 8b9cb0ffdb65e..44e7ed826958f 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -83,7 +83,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index a1a5a7d7b6e63..3b7c09f51e0af 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/pipelines/package.json b/packages/@aws-cdk/pipelines/package.json index 507a60267d194..59af9ff1fe5cf 100644 --- a/packages/@aws-cdk/pipelines/package.json +++ b/packages/@aws-cdk/pipelines/package.json @@ -79,7 +79,7 @@ "delivery" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "license": "Apache-2.0", "stability": "experimental", diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index d0a1744c7cfee..9db12073061e5 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -72,7 +72,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index 34b5c0f72363c..873f32ac59a96 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -82,7 +82,7 @@ "jest": true }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@monocdk-experiment/rewrite-imports/package.json b/packages/@monocdk-experiment/rewrite-imports/package.json index 8da599c16cc53..874cb01ecc201 100644 --- a/packages/@monocdk-experiment/rewrite-imports/package.json +++ b/packages/@monocdk-experiment/rewrite-imports/package.json @@ -52,6 +52,6 @@ "stability": "experimental", "maturity": "developer-preview", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" } } diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index d9e1b2e2d6aec..61826d7af01c7 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -116,7 +116,6 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", - "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscaling-common": "0.0.0", "@aws-cdk/aws-autoscaling-hooktargets": "0.0.0", @@ -150,7 +149,6 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", - "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -213,7 +211,6 @@ "@aws-cdk/aws-logs-destinations": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", - "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -290,7 +287,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "keywords": [ "aws", diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index d17a38e62f923..64b542ed4b2fd 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -115,9 +115,6 @@ $ cdk synth $ # Synthesize cloud assembly for StackName, but don't include dependencies $ cdk synth MyStackName --exclusively - -$ # Synthesize cloud assembly for StackName, but don't cloudFormation template output to STDOUT -$ cdk synth MyStackName --quiet ``` See the [AWS Documentation](https://docs.aws.amazon.com/cdk/latest/guide/apps.html#apps_cloud_assembly) to learn more about cloud assemblies. diff --git a/packages/aws-cdk/bin/cdk.ts b/packages/aws-cdk/bin/cdk.ts index d14e53892354a..e305da55164e5 100644 --- a/packages/aws-cdk/bin/cdk.ts +++ b/packages/aws-cdk/bin/cdk.ts @@ -68,8 +68,7 @@ async function parseCommandLineArguments() { .option('long', { type: 'boolean', default: false, alias: 'l', desc: 'Display environment information for each stack' }), ) .command(['synthesize [STACKS..]', 'synth [STACKS..]'], 'Synthesizes and prints the CloudFormation template for this stack', yargs => yargs - .option('exclusively', { type: 'boolean', alias: 'e', desc: 'Only synthesize requested stacks, don\'t include dependencies' }) - .option('quiet', { type: 'boolean', alias: 'q', desc: 'Do not output CloudFormation Template to stdout', default: false })) + .option('exclusively', { type: 'boolean', alias: 'e', desc: 'Only synthesize requested stacks, don\'t include dependencies' })) .command('bootstrap [ENVIRONMENTS..]', 'Deploys the CDK toolkit stack into an AWS environment', yargs => yargs .option('bootstrap-bucket-name', { type: 'string', alias: ['b', 'toolkit-bucket-name'], desc: 'The name of the CDK toolkit bucket; bucket will be created and must not exist', default: undefined }) .option('bootstrap-kms-key-id', { type: 'string', desc: 'AWS KMS master key ID used for the SSE-KMS encryption', default: undefined, conflicts: 'bootstrap-customer-key' }) @@ -329,7 +328,7 @@ async function initCommandLine() { case 'synthesize': case 'synth': - return cli.synth(args.STACKS, args.exclusively, args.quiet); + return cli.synth(args.STACKS, args.exclusively); case 'metadata': return cli.metadata(args.STACK); diff --git a/packages/aws-cdk/lib/cdk-toolkit.ts b/packages/aws-cdk/lib/cdk-toolkit.ts index c3e8c649eaa7b..c0ae230879a80 100644 --- a/packages/aws-cdk/lib/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cdk-toolkit.ts @@ -295,15 +295,12 @@ export class CdkToolkit { * OUTPUT: If more than one stack ends up being selected, an output directory * should be supplied, where the templates will be written. */ - public async synth(stackNames: string[], exclusively: boolean, quiet: boolean): Promise { + public async synth(stackNames: string[], exclusively: boolean): Promise { const stacks = await this.selectStacksForDiff(stackNames, exclusively); // if we have a single stack, print it to STDOUT if (stacks.stackCount === 1) { - if (!quiet) { - return stacks.firstStack.template; - } - return undefined; + return stacks.firstStack.template; } // This is a slight hack; in integ mode we allow multiple stacks to be synthesized to stdout sequentially. diff --git a/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore b/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore index 58505a0211c74..383cdd5040f7e 100644 --- a/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore +++ b/packages/aws-cdk/lib/init-templates/v1/app/python/.template.gitignore @@ -3,7 +3,6 @@ package-lock.json __pycache__ .pytest_cache .env -.venv *.egg-info # CDK asset staging directory diff --git a/packages/aws-cdk/lib/settings.ts b/packages/aws-cdk/lib/settings.ts index f61d2ebd270da..0663d021f63d3 100644 --- a/packages/aws-cdk/lib/settings.ts +++ b/packages/aws-cdk/lib/settings.ts @@ -98,8 +98,7 @@ export class Configuration { this.context = new Context( this.commandLineContext, this.projectConfig.subSettings([CONTEXT_KEY]).makeReadOnly(), - this.projectContext, - userConfig.subSettings([CONTEXT_KEY]).makeReadOnly()); + this.projectContext); // Build settings from what's left this.settings = this.defaultConfig diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index eb1351446e05e..aea264fdb46b3 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -74,11 +74,11 @@ "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", "archiver": "^5.2.0", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "camelcase": "^6.2.0", "cdk-assets": "0.0.0", "colors": "^1.4.0", - "decamelize": "^5.0.0", + "decamelize": "^4.0.0", "fs-extra": "^9.0.1", "glob": "^7.1.6", "json-diff": "^0.5.4", @@ -103,7 +103,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable" diff --git a/packages/aws-cdk/test/cdk-toolkit.test.ts b/packages/aws-cdk/test/cdk-toolkit.test.ts index 9266d9bc10646..caf3e6cc83257 100644 --- a/packages/aws-cdk/test/cdk-toolkit.test.ts +++ b/packages/aws-cdk/test/cdk-toolkit.test.ts @@ -138,16 +138,6 @@ describe('deploy', () => { }); }); -describe('synth', () => { - test('with no stdout option', async () => { - // GIVE - const toolkit = defaultToolkitSetup(); - - // THEN - await expect(toolkit.synth(['Test-Stack-A'], false, true)).resolves.toBeUndefined(); - }); -}); - class MockStack { public static readonly MOCK_STACK_A: TestStackArtifact = { stackName: 'Test-Stack-A', diff --git a/packages/aws-cdk/test/usersettings.test.ts b/packages/aws-cdk/test/usersettings.test.ts deleted file mode 100644 index 948b3b3f907bc..0000000000000 --- a/packages/aws-cdk/test/usersettings.test.ts +++ /dev/null @@ -1,72 +0,0 @@ -import * as os from 'os'; -import * as fs_path from 'path'; -import * as fs from 'fs-extra'; -import { mocked } from 'ts-jest/utils'; -import { Configuration, PROJECT_CONFIG, PROJECT_CONTEXT } from '../lib/settings'; - -// mock fs deeply -jest.mock('fs-extra'); -const mockedFs = mocked(fs, true); - -const USER_CONFIG = fs_path.join(os.homedir(), '.cdk.json'); - -test('load settings from both files if available', async () => { - // GIVEN - const GIVEN_CONFIG: Map = new Map([ - [PROJECT_CONFIG, { - project: 'foobar', - }], - [USER_CONFIG, { - project: 'foo', - test: 'bar', - }], - ]); - - // WHEN - mockedFs.pathExists.mockImplementation(path => { - return GIVEN_CONFIG.has(path); - }); - mockedFs.readJSON.mockImplementation(path => { - return GIVEN_CONFIG.get(path); - }); - - const config = await new Configuration().load(); - - // THEN - expect(config.settings.get(['project'])).toBe('foobar'); - expect(config.settings.get(['test'])).toBe('bar'); -}); - -test('load context from all 3 files if available', async () => { - // GIVEN - const GIVEN_CONFIG: Map = new Map([ - [PROJECT_CONFIG, { - context: { - project: 'foobar', - }, - }], - [PROJECT_CONTEXT, { - foo: 'bar', - }], - [USER_CONFIG, { - context: { - test: 'bar', - }, - }], - ]); - - // WHEN - mockedFs.pathExists.mockImplementation(path => { - return GIVEN_CONFIG.has(path); - }); - mockedFs.readJSON.mockImplementation(path => { - return GIVEN_CONFIG.get(path); - }); - - const config = await new Configuration().load(); - - // THEN - expect(config.context.get('project')).toBe('foobar'); - expect(config.context.get('foo')).toBe('bar'); - expect(config.context.get('test')).toBe('bar'); -}); \ No newline at end of file diff --git a/packages/awslint/package.json b/packages/awslint/package.json index 14b68795adfba..7e9ed60a7b4b3 100644 --- a/packages/awslint/package.json +++ b/packages/awslint/package.json @@ -48,6 +48,6 @@ "maturity": "developer-preview", "stability": "experimental", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" } } diff --git a/packages/cdk-assets/README.md b/packages/cdk-assets/README.md index c40afcd00c42d..2eb10ae621947 100644 --- a/packages/cdk-assets/README.md +++ b/packages/cdk-assets/README.md @@ -28,7 +28,6 @@ Currently the following asset types are supported: * Files and archives, uploaded to S3 * Docker Images, uploaded to ECR -* Files, archives, and Docker images built by external utilities S3 buckets and ECR repositories to upload to are expected to exist already. @@ -42,13 +41,6 @@ itself in the following behaviors: image in the local Docker cache) already exists named after the asset's ID, it will not be packaged, but will be uploaded directly to the destination location. - -For assets build by external utilities, the contract is such that cdk-assets -expects the utility to manage dedupe detection as well as path/image tag generation. -This means that cdk-assets will call the external utility every time generation -is warranted, and it is up to the utility to a) determine whether to do a -full rebuild; and b) to return only one thing on stdout: the path to the file/archive -asset, or the name of the local Docker image. ## Usage @@ -90,19 +82,6 @@ An asset manifest looks like this: } } }, - "3dfe2b80b050e7e4e168f84feff678d4": { - "source": { - "executable": ["myzip"] - }, - "destinations": { - "us-east-1": { - "region": "us-east-1", - "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account", - "bucketName": "MySpecialBucket", - "objectKey": "3dfe2b80b050e7e4e168f84feff678d4.zip" - } - } - }, }, "dockerImages": { "b48783c58a86f7b8c68a4591c4f9be31": { @@ -118,20 +97,6 @@ An asset manifest looks like this: "imageUri": "123456789012.dkr.ecr.us-east-1.amazonaws.com/MyRepository:1234567891b48783c58a86f7b8c68a4591c4f9be31", } } - }, - "d92753c58a86f7b8c68a4591c4f9cf28": { - "source": { - "executable": ["mytool", "package", "dockerdir"], - }, - "destinations": { - "us-east-1": { - "region": "us-east-1", - "assumeRoleArn": "arn:aws:iam::12345789012:role/my-account", - "repositoryName": "MyRepository2", - "imageTag": "d92753c58a86f7b8c68a4591c4f9cf28", - "imageUri": "123456789987.dkr.ecr.us-east-1.amazonaws.com/MyRepository2:1234567891b48783c58a86f7b8c68a4591c4f9be31", - } - } } } } diff --git a/packages/cdk-assets/lib/private/handlers/container-images.ts b/packages/cdk-assets/lib/private/handlers/container-images.ts index a3b6756ecb18d..bd755a52f139b 100644 --- a/packages/cdk-assets/lib/private/handlers/container-images.ts +++ b/packages/cdk-assets/lib/private/handlers/container-images.ts @@ -1,128 +1,73 @@ import * as path from 'path'; -import { DockerImageDestination } from '@aws-cdk/cloud-assembly-schema'; import { DockerImageManifestEntry } from '../../asset-manifest'; import { EventType } from '../../progress'; import { IAssetHandler, IHandlerHost } from '../asset-handler'; import { Docker } from '../docker'; import { replaceAwsPlaceholders } from '../placeholders'; -import { shell } from '../shell'; export class ContainerImageAssetHandler implements IAssetHandler { + private readonly localTagName: string; private readonly docker = new Docker(m => this.host.emitMessage(EventType.DEBUG, m)); constructor( private readonly workDir: string, private readonly asset: DockerImageManifestEntry, private readonly host: IHandlerHost) { + + this.localTagName = `cdkasset-${this.asset.id.assetId.toLowerCase()}`; } public async publish(): Promise { const destination = await replaceAwsPlaceholders(this.asset.destination, this.host.aws); + const ecr = await this.host.aws.ecrClient(destination); + const account = (await this.host.aws.discoverCurrentAccount()).accountId; - const repoUri = await repositoryUri(ecr, destination.repositoryName); + const repoUri = await repositoryUri(ecr, destination.repositoryName); if (!repoUri) { throw new Error(`No ECR repository named '${destination.repositoryName}' in account ${account}. Is this account bootstrapped?`); } const imageUri = `${repoUri}:${destination.imageTag}`; - if (await this.destinationAlreadyExists(ecr, destination, imageUri)) { return; } + this.host.emitMessage(EventType.CHECK, `Check ${imageUri}`); + if (await imageExists(ecr, destination.repositoryName, destination.imageTag)) { + this.host.emitMessage(EventType.FOUND, `Found ${imageUri}`); + return; + } + if (this.host.aborted) { return; } // Login before build so that the Dockerfile can reference images in the ECR repo await this.docker.login(ecr); - - const localTagName = this.asset.source.executable - ? await this.buildExternalAsset(this.asset.source.executable) - : await this.buildDirectoryAsset(); - - if (localTagName === undefined || this.host.aborted) { - return; - } + await this.buildImage(); this.host.emitMessage(EventType.UPLOAD, `Push ${imageUri}`); if (this.host.aborted) { return; } - await this.docker.tag(localTagName, imageUri); + await this.docker.tag(this.localTagName, imageUri); await this.docker.push(imageUri); } - /** - * Build a (local) Docker asset from a directory with a Dockerfile - * - * Tags under a deterministic, unique, local identifier wich will skip - * the build if it already exists. - */ - private async buildDirectoryAsset(): Promise { - const localTagName = `cdkasset-${this.asset.id.assetId.toLowerCase()}`; - - if (!(await this.isImageCached(localTagName))) { - if (this.host.aborted) { return undefined; } - - await this.buildImage(localTagName); - } - - return localTagName; - } - - /** - * Build a (local) Docker asset by running an external command - * - * External command is responsible for deduplicating the build if possible, - * and is expected to return the generated image identifier on stdout. - */ - private async buildExternalAsset(executable: string[]): Promise { - this.host.emitMessage(EventType.BUILD, `Building Docker image using command '${executable}'`); - if (this.host.aborted) { return undefined; } - - return (await shell(executable, { quiet: true })).trim(); - } - - - /** - * Check whether the image already exists in the ECR repo - * - * Use the fields from the destination to do the actual check. The imageUri - * should correspond to that, but is only used to print Docker image location - * for user benefit (the format is slightly different). - */ - private async destinationAlreadyExists(ecr: AWS.ECR, destination: DockerImageDestination, imageUri: string): Promise { - this.host.emitMessage(EventType.CHECK, `Check ${imageUri}`); - if (await imageExists(ecr, destination.repositoryName, destination.imageTag)) { - this.host.emitMessage(EventType.FOUND, `Found ${imageUri}`); - return true; + private async buildImage(): Promise { + if (await this.docker.exists(this.localTagName)) { + this.host.emitMessage(EventType.CACHED, `Cached ${this.localTagName}`); + return; } - return false; - } - - private async buildImage(localTagName: string): Promise { const source = this.asset.source; - if (!source.directory) { - throw new Error(`'directory' is expected in the DockerImage asset source, got: ${JSON.stringify(source)}`); - } const fullPath = path.resolve(this.workDir, source.directory); this.host.emitMessage(EventType.BUILD, `Building Docker image at ${fullPath}`); await this.docker.build({ directory: fullPath, - tag: localTagName, + tag: this.localTagName, buildArgs: source.dockerBuildArgs, target: source.dockerBuildTarget, file: source.dockerFile, }); } - - private async isImageCached(localTagName: string): Promise { - if (await this.docker.exists(localTagName)) { - this.host.emitMessage(EventType.CACHED, `Cached ${localTagName}`); - return true; - } - - return false; - } } async function imageExists(ecr: AWS.ECR, repositoryName: string, imageTag: string) { @@ -148,4 +93,4 @@ async function repositoryUri(ecr: AWS.ECR, repositoryName: string): Promise { - if (!source.path) { - throw new Error(`'path' is expected in the File asset source, got: ${JSON.stringify(source)}`); - } - - const fullPath = path.resolve(this.workDir, source.path); + private async packageFile(): Promise { + const source = this.asset.source; + const fullPath = path.resolve(this.workDir, this.asset.source.path); if (source.packaging === FileAssetPackaging.ZIP_DIRECTORY) { - const contentType = 'application/zip'; - await fs.mkdir(this.fileCacheRoot, { recursive: true }); - const packagedPath = path.join(this.fileCacheRoot, `${this.asset.id.assetId}.zip`); + const ret = path.join(this.fileCacheRoot, `${this.asset.id.assetId}.zip`); - if (await pathExists(packagedPath)) { - this.host.emitMessage(EventType.CACHED, `From cache ${path}`); - return { packagedPath, contentType }; + if (await pathExists(ret)) { + this.host.emitMessage(EventType.CACHED, `From cache ${ret}`); + return ret; } - this.host.emitMessage(EventType.BUILD, `Zip ${fullPath} -> ${path}`); - await zipDirectory(fullPath, packagedPath); - return { packagedPath, contentType }; + this.host.emitMessage(EventType.BUILD, `Zip ${fullPath} -> ${ret}`); + await zipDirectory(fullPath, ret); + return ret; } else { - return { packagedPath: fullPath }; + return fullPath; } } - - private async externalPackageFile(executable: string[]): Promise { - this.host.emitMessage(EventType.BUILD, `Building asset source using command: '${executable}'`); - - return { - packagedPath: (await shell(executable, { quiet: true })).trim(), - contentType: 'application/zip', - }; - } } enum BucketOwnership { @@ -124,21 +109,3 @@ async function objectExists(s3: AWS.S3, bucket: string, key: string) { const response = await s3.listObjectsV2({ Bucket: bucket, Prefix: key, MaxKeys: 1 }).promise(); return response.Contents != null && response.Contents.some(object => object.Key === key); } - - -/** - * A packaged asset which can be uploaded (either a single file or directory) - */ -interface PackagedFileAsset { - /** - * Path of the file or directory - */ - readonly packagedPath: string; - - /** - * Content type to be added in the S3 upload action - * - * @default - No content type - */ - readonly contentType?: string; -} diff --git a/packages/cdk-assets/lib/private/handlers/index.ts b/packages/cdk-assets/lib/private/handlers/index.ts index 97ec7354279df..2e4d406ce5b0b 100644 --- a/packages/cdk-assets/lib/private/handlers/index.ts +++ b/packages/cdk-assets/lib/private/handlers/index.ts @@ -12,4 +12,4 @@ export function makeAssetHandler(manifest: AssetManifest, asset: IManifestEntry, } throw new Error(`Unrecognized asset type: '${asset}'`); -} +} \ No newline at end of file diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 6968bb005fd02..f5f6f12a4bf09 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -47,7 +47,7 @@ "@aws-cdk/cloud-assembly-schema": "0.0.0", "@aws-cdk/cx-api": "0.0.0", "archiver": "^5.2.0", - "aws-sdk": "^2.828.0", + "aws-sdk": "^2.824.0", "glob": "^7.1.6", "yargs": "^16.2.0" }, @@ -62,7 +62,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "cdk-package": { "shrinkWrap": true diff --git a/packages/cdk-assets/test/docker-images.test.ts b/packages/cdk-assets/test/docker-images.test.ts index 3b608a1e63ffe..3f0aeaabf474c 100644 --- a/packages/cdk-assets/test/docker-images.test.ts +++ b/packages/cdk-assets/test/docker-images.test.ts @@ -9,8 +9,6 @@ import { mockSpawn } from './mock-child_process'; let aws: ReturnType; const absoluteDockerPath = '/simple/cdk.out/dockerdir'; beforeEach(() => { - jest.resetAllMocks(); - mockfs({ '/simple/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), @@ -30,24 +28,6 @@ beforeEach(() => { }, }, }), - '/external/cdk.out/assets.json': JSON.stringify({ - version: Manifest.version(), - dockerImages: { - theExternalAsset: { - source: { - executable: ['sometool'], - }, - destinations: { - theDestination: { - region: 'us-north-50', - assumeRoleArn: 'arn:aws:role', - repositoryName: 'repo', - imageTag: 'ghijkl', - }, - }, - }, - }, - }), '/simple/cdk.out/dockerdir/Dockerfile': 'FROM scratch', '/abs/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), @@ -112,7 +92,7 @@ describe('with a complete manifest', () => { ], }); - const expectAllSpawns = mockSpawn( + mockSpawn( { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, { commandLine: ['docker', 'inspect', 'cdkasset-theasset'] }, { commandLine: ['docker', 'tag', 'cdkasset-theasset', '12345.amazonaws.com/repo:abcdef'] }, @@ -120,9 +100,6 @@ describe('with a complete manifest', () => { ); await pub.publish(); - - expectAllSpawns(); - expect(true).toBeTruthy(); // Expect no exception, satisfy linter }); test('build and upload docker image if not exists anywhere', async () => { @@ -133,7 +110,7 @@ describe('with a complete manifest', () => { ], }); - const expectAllSpawns = mockSpawn( + mockSpawn( { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, { commandLine: ['docker', 'inspect', 'cdkasset-theasset'], exitCode: 1 }, { commandLine: ['docker', 'build', '--tag', 'cdkasset-theasset', '.'], cwd: absoluteDockerPath }, @@ -142,41 +119,6 @@ describe('with a complete manifest', () => { ); await pub.publish(); - - expectAllSpawns(); - expect(true).toBeTruthy(); // Expect no exception, satisfy linter - }); -}); - -describe('external assets', () => { - let pub: AssetPublishing; - const externalTag = 'external:tag'; - beforeEach(() => { - pub = new AssetPublishing(AssetManifest.fromPath('/external/cdk.out'), { aws }); - }); - - test('upload externally generated Docker image', async () => { - aws.mockEcr.describeImages = mockedApiFailure('ImageNotFoundException', 'File does not exist'); - aws.mockEcr.getAuthorizationToken = mockedApiResult({ - authorizationData: [ - { authorizationToken: 'dXNlcjpwYXNz', proxyEndpoint: 'https://proxy.com/' }, - ], - }); - - const expectAllSpawns = mockSpawn( - { commandLine: ['docker', 'login', '--username', 'user', '--password-stdin', 'https://proxy.com/'] }, - { commandLine: ['sometool'], stdout: externalTag }, - { commandLine: ['docker', 'tag', externalTag, '12345.amazonaws.com/repo:ghijkl'] }, - { commandLine: ['docker', 'push', '12345.amazonaws.com/repo:ghijkl'] }, - ); - - await pub.publish(); - - expect(aws.ecrClient).toHaveBeenCalledWith(expect.objectContaining({ - region: 'us-north-50', - assumeRoleArn: 'arn:aws:role', - })); - expectAllSpawns(); }); }); @@ -190,7 +132,7 @@ test('correctly identify Docker directory if path is absolute', async () => { ], }); - const expectAllSpawns = mockSpawn( + mockSpawn( // Only care about the 'build' command line { commandLine: ['docker', 'login'], prefix: true }, { commandLine: ['docker', 'inspect'], exitCode: 1, prefix: true }, @@ -200,7 +142,4 @@ test('correctly identify Docker directory if path is absolute', async () => { ); await pub.publish(); - - expect(true).toBeTruthy(); // Expect no exception, satisfy linter - expectAllSpawns(); }); diff --git a/packages/cdk-assets/test/files.test.ts b/packages/cdk-assets/test/files.test.ts index 42cb8a71c05ad..e8c7247ef7f42 100644 --- a/packages/cdk-assets/test/files.test.ts +++ b/packages/cdk-assets/test/files.test.ts @@ -1,17 +1,10 @@ -jest.mock('child_process'); - import { Manifest } from '@aws-cdk/cloud-assembly-schema'; import * as mockfs from 'mock-fs'; import { AssetManifest, AssetPublishing } from '../lib'; import { mockAws, mockedApiResult, mockUpload } from './mock-aws'; -import { mockSpawn } from './mock-child_process'; - -const ABS_PATH = '/simple/cdk.out/some_external_file'; let aws: ReturnType; beforeEach(() => { - jest.resetAllMocks(); - mockfs({ '/simple/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), @@ -32,7 +25,6 @@ beforeEach(() => { }, }), '/simple/cdk.out/some_file': 'FILE_CONTENTS', - [ABS_PATH]: 'FILE_CONTENTS', '/abs/cdk.out/assets.json': JSON.stringify({ version: Manifest.version(), files: { @@ -44,25 +36,7 @@ beforeEach(() => { theDestination: { region: 'us-north-50', assumeRoleArn: 'arn:aws:role', - bucketName: 'some_other_bucket', - objectKey: 'some_key', - }, - }, - }, - }, - }), - '/external/cdk.out/assets.json': JSON.stringify({ - version: Manifest.version(), - files: { - externalAsset: { - source: { - executable: ['sometool'], - }, - destinations: { - theDestination: { - region: 'us-north-50', - assumeRoleArn: 'arn:aws:role', - bucketName: 'some_external_bucket', + bucketName: 'some_bucket', objectKey: 'some_key', }, }, @@ -153,40 +127,4 @@ test('correctly identify asset path if path is absolute', async () => { aws.mockS3.upload = mockUpload('FILE_CONTENTS'); await pub.publish(); - - expect(true).toBeTruthy(); // No exception, satisfy linter -}); - -describe('external assets', () => { - let pub: AssetPublishing; - beforeEach(() => { - pub = new AssetPublishing(AssetManifest.fromPath('/external/cdk.out'), { aws }); - }); - - test('do nothing if file exists already', async () => { - aws.mockS3.listObjectsV2 = mockedApiResult({ Contents: [{ Key: 'some_key' }] }); - - await pub.publish(); - - expect(aws.mockS3.listObjectsV2).toHaveBeenCalledWith(expect.objectContaining({ - Bucket: 'some_external_bucket', - Prefix: 'some_key', - MaxKeys: 1, - })); - }); - - test('upload external asset correctly', async () => { - aws.mockS3.listObjectsV2 = mockedApiResult({ Contents: undefined }); - aws.mockS3.upload = mockUpload('FILE_CONTENTS'); - const expectAllSpawns = mockSpawn({ commandLine: ['sometool'], stdout: ABS_PATH }); - - await pub.publish(); - - expect(aws.s3Client).toHaveBeenCalledWith(expect.objectContaining({ - region: 'us-north-50', - assumeRoleArn: 'arn:aws:role', - })); - - expectAllSpawns(); - }); }); diff --git a/packages/cdk-assets/test/mock-child_process.ts b/packages/cdk-assets/test/mock-child_process.ts index 2cb513e24fff7..da0fd27d08fe6 100644 --- a/packages/cdk-assets/test/mock-child_process.ts +++ b/packages/cdk-assets/test/mock-child_process.ts @@ -17,7 +17,7 @@ export interface Invocation { prefix?: boolean; } -export function mockSpawn(...invocations: Invocation[]): () => void { +export function mockSpawn(...invocations: Invocation[]) { let mock = (child_process.spawn as any); for (const _invocation of invocations) { const invocation = _invocation; // Mirror into variable for closure @@ -42,7 +42,7 @@ export function mockSpawn(...invocations: Invocation[]): () => void { child.stderr = new events.EventEmitter(); if (invocation.stdout) { - mockEmit(child.stdout, 'data', Buffer.from(invocation.stdout)); + mockEmit(child.stdout, 'data', invocation.stdout); } mockEmit(child, 'close', invocation.exitCode ?? 0); @@ -53,10 +53,6 @@ export function mockSpawn(...invocations: Invocation[]): () => void { mock.mockImplementation((binary: string, args: string[], _options: any) => { throw new Error(`Did not expect call of ${JSON.stringify([binary, ...args])}`); }); - - return () => { - expect(mock).toHaveBeenCalledTimes(invocations.length); - }; } /** diff --git a/packages/decdk/package.json b/packages/decdk/package.json index 27ba890f8f0a9..a22066a22e5e4 100644 --- a/packages/decdk/package.json +++ b/packages/decdk/package.json @@ -46,7 +46,6 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", - "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscaling-common": "0.0.0", "@aws-cdk/aws-autoscaling-hooktargets": "0.0.0", @@ -80,7 +79,6 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", - "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -143,7 +141,6 @@ "@aws-cdk/aws-logs-destinations": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", - "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index 27803e34806af..b0efee31b2f60 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -119,7 +119,6 @@ "@aws-cdk/aws-appstream": "0.0.0", "@aws-cdk/aws-appsync": "0.0.0", "@aws-cdk/aws-athena": "0.0.0", - "@aws-cdk/aws-auditmanager": "0.0.0", "@aws-cdk/aws-autoscaling": "0.0.0", "@aws-cdk/aws-autoscaling-common": "0.0.0", "@aws-cdk/aws-autoscaling-hooktargets": "0.0.0", @@ -153,7 +152,6 @@ "@aws-cdk/aws-config": "0.0.0", "@aws-cdk/aws-databrew": "0.0.0", "@aws-cdk/aws-datapipeline": "0.0.0", - "@aws-cdk/aws-datasync": "0.0.0", "@aws-cdk/aws-dax": "0.0.0", "@aws-cdk/aws-detective": "0.0.0", "@aws-cdk/aws-devopsguru": "0.0.0", @@ -216,7 +214,6 @@ "@aws-cdk/aws-logs-destinations": "0.0.0", "@aws-cdk/aws-macie": "0.0.0", "@aws-cdk/aws-managedblockchain": "0.0.0", - "@aws-cdk/aws-mediaconnect": "0.0.0", "@aws-cdk/aws-mediaconvert": "0.0.0", "@aws-cdk/aws-medialive": "0.0.0", "@aws-cdk/aws-mediapackage": "0.0.0", @@ -293,7 +290,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "keywords": [ "aws", diff --git a/scripts/check-api-compatibility.sh b/scripts/check-api-compatibility.sh index 8c260d248f02e..e49d684e8b98c 100755 --- a/scripts/check-api-compatibility.sh +++ b/scripts/check-api-compatibility.sh @@ -55,22 +55,15 @@ if ! ${SKIP_DOWNLOAD:-false}; then existing_names=$(echo "$jsii_package_dirs" | xargs -n1 -P4 -I {} bash -c 'dirs_to_existing_names "$@"' _ {}) echo " Done." >&2 - version=$(node -p 'require("./scripts/resolve-version.js").version') - echo "Current version is $version." - - if ! package_exists_on_npm aws-cdk $version; then - # occurs within a release PR where the version is bumped but is not yet published to npm. - if [ -z ${NPM_DISTTAG:-} ]; then - echo "env variable NPM_DISTTAG is not set. Failing." - exit 1 - fi - echo "Current version not published. Setting version to NPM_DISTTAG (${NPM_DISTTAG})." - version=$NPM_DISTTAG + current_version=$(node -p 'require("./lerna.json").version') + echo "Current version in lerna.json is $current_version" + if ! ${DOWNLOAD_LATEST:-false} && package_exists_on_npm aws-cdk $current_version; then + echo "Using package version ${current_version} as baseline" + existing_names=$(echo "$existing_names" | sed -e "s/$/@$current_version/") + else + echo "However, using the latest version from NPM as the baseline" fi - echo "Using version '$version' as the baseline..." - existing_names=$(echo "$existing_names" | sed -e "s/$/@$version/") - rm -rf $tmpdir mkdir -p $tmpdir diff --git a/tools/cdk-build-tools/bin/cdk-build.ts b/tools/cdk-build-tools/bin/cdk-build.ts index b4a5b38542292..d745de50aa2be 100644 --- a/tools/cdk-build-tools/bin/cdk-build.ts +++ b/tools/cdk-build-tools/bin/cdk-build.ts @@ -26,14 +26,9 @@ async function main() { }) .option('gen', { type: 'boolean', - desc: 'Execute gen script', + desc: 'execute gen script', default: true, }) - .option('fix', { - type: 'boolean', - desc: 'Fix linter errors', - default: false, - }) .argv; const options = cdkBuildOptions(); @@ -51,7 +46,7 @@ async function main() { const overrides: CompilerOverrides = { eslint: args.eslint, jsii: args.jsii, tsc: args.tsc }; await compileCurrentPackage(options, timers, overrides); - await lintCurrentPackage(options, { ...overrides, fix: args.fix }); + await lintCurrentPackage(options, overrides); if (options.post) { await shell(options.post, { timers, env }); diff --git a/tools/cdk-build-tools/config/eslintrc.js b/tools/cdk-build-tools/config/eslintrc.js index 446af2c2e2ff4..63608e69161a3 100644 --- a/tools/cdk-build-tools/config/eslintrc.js +++ b/tools/cdk-build-tools/config/eslintrc.js @@ -42,7 +42,6 @@ module.exports = { ignorePatterns: ['*.js', '*.d.ts', 'node_modules/', '*.generated.ts'], rules: { 'cdk/no-core-construct': [ 'error' ], - 'cdk/no-qualified-construct': [ 'error' ], // Require use of the `import { foo } from 'bar';` form instead of `import foo = require('bar');` '@typescript-eslint/no-require-imports': ['error'], '@typescript-eslint/indent': ['error', 2], diff --git a/tools/cdk-build-tools/package.json b/tools/cdk-build-tools/package.json index e43def68cf890..226ba63a75b81 100644 --- a/tools/cdk-build-tools/package.json +++ b/tools/cdk-build-tools/package.json @@ -67,7 +67,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/cdk-integ-tools/package.json b/tools/cdk-integ-tools/package.json index f5ce70a844cf5..8685d8435f8dc 100644 --- a/tools/cdk-integ-tools/package.json +++ b/tools/cdk-integ-tools/package.json @@ -48,7 +48,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "peerDependencies": { "@aws-cdk/assert": "0.0.0" diff --git a/tools/cfn2ts/package.json b/tools/cfn2ts/package.json index f808cfaabe092..785d1a52c18b0 100644 --- a/tools/cfn2ts/package.json +++ b/tools/cfn2ts/package.json @@ -49,7 +49,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/eslint-plugin-cdk/lib/index.ts b/tools/eslint-plugin-cdk/lib/index.ts index 94eef4dd8f57f..aae510df35d54 100644 --- a/tools/eslint-plugin-cdk/lib/index.ts +++ b/tools/eslint-plugin-cdk/lib/index.ts @@ -1,4 +1,3 @@ export const rules = { 'no-core-construct': require('./rules/no-core-construct'), - 'no-qualified-construct': require('./rules/no-qualified-construct'), }; diff --git a/tools/eslint-plugin-cdk/lib/private/import-cache.ts b/tools/eslint-plugin-cdk/lib/private/import-cache.ts index 04325645fdb5d..7d78b2a421e93 100644 --- a/tools/eslint-plugin-cdk/lib/private/import-cache.ts +++ b/tools/eslint-plugin-cdk/lib/private/import-cache.ts @@ -29,10 +29,6 @@ export class ImportCache { public find(key: ImportCacheKey): ImportCacheRecord | undefined { return this.records[hashed(key)]; } - - public get imports(): ImportCacheRecord[] { - return Object.values(this.records); - } } function hashed(key: {}): string { diff --git a/tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts b/tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts deleted file mode 100644 index eb8a418cab58e..0000000000000 --- a/tools/eslint-plugin-cdk/lib/rules/no-qualified-construct.ts +++ /dev/null @@ -1,134 +0,0 @@ -// -// This rule ensures that the `@aws-cdk/core.Construct` class is always -// referenced without a namespace qualifier (`Construct` instead of -// `xxx.Construct`). The fixer will automatically add an `import` statement -// separated from the main import group to reduce the chance for merge conflicts -// with v2-main. -// -// If there is already an import of `constructs.Construct` under the name -// `Construct`, we will import `core.Construct` as the alias `CoreConstruct` -// instead. -// - -import { AST, Rule } from 'eslint'; -import { ImportCache } from '../private/import-cache'; - -const importCache = new ImportCache(); - -export function create(context: Rule.RuleContext): Rule.NodeListener { - // skip core - if (context.getFilename().includes('@aws-cdk/core')) { - return {}; - } - - return { - // collect all "import" statements. we will later use them to determine - // exactly how to import `core.Construct`. - ImportDeclaration: node => { - for (const s of node.specifiers) { - const typeName = () => { - switch (s.type) { - case 'ImportSpecifier': return s.imported.name; - case 'ImportDefaultSpecifier': return s.local.name; - case 'ImportNamespaceSpecifier': return s.local.name; - } - }; - - importCache.record({ - fileName: context.getFilename(), - typeName: typeName(), - importNode: node, - localName: `${node.source.value}.${s.local.name}` - }); - } - }, - - // this captures `class X extends xxx.Construct` - ClassDeclaration: node => { - if (node.superClass?.type === 'MemberExpression') { - const sc = node.superClass; - // const qualifier = sc.object.type === 'Identifier' ? sc.object.name : undefined; - const baseClass = sc.property.type === 'Identifier' ? sc.property.name : undefined; - if (baseClass === 'Construct' && sc.range) { - report(context, node, sc.range); - } - } - }, - - // this captures using `xxx.Construct` as an identifier - Identifier: node => { - const typeAnnotation = (node as any).typeAnnotation?.typeAnnotation; - const type = typeAnnotation?.typeName; - if (type?.type === 'TSQualifiedName' && type?.right.name === 'Construct' && type?.left.name !== 'constructs') { - report(context, node, typeAnnotation.range); - } - }, - } -} - -/** - * Reports an error indicating that we found `xxx.Construct` usage, and apply - * the appropriate fix. - * @param context Rule context - * @param node Rule node (for the report) - * @param replaceRange Text range to replace - */ -function report(context: Rule.RuleContext, node: Rule.Node, replaceRange: AST.Range) { - context.report({ - message: 'To avoid merge conflicts with the v2-main branch, the "Construct" type must be referenced without a qualifier (e.g. "Construct" instead of "CoreConstruct")', - node, - fix: fixer => { - const imports = importCache.imports.filter(x => x.fileName === context.getFilename()); - const findImport = (x: string) => imports.find(i => i.localName === x); - - const coreConstruct = findImport('@aws-cdk/core.Construct') - const coreCoreConstruct = findImport('@aws-cdk/core.CoreConstruct'); - const constructsConstruct = findImport('constructs.Construct'); - - // determines whether we will replace with `Construct` or `CoreConstruct` - // based on whether this file already imported `constructs.Construct`. - let replaceBy: string | undefined; - - // determines whether an "import" statement should be added and it's - // contents. - let addImport: string | undefined; - - if (coreConstruct) { - // we already import `core.Construct` as `Construct` - replaceBy = 'Construct'; - } else if (coreCoreConstruct) { - // we already import `core.Construct` as `CoreConstruct` - replaceBy = 'CoreConstruct' - } else if (constructsConstruct) { - // we import `constructs.Construct`, so import and replace - // `core.Construct` with `CoreConstruct` - replaceBy = 'CoreConstruct'; - addImport = `import { Construct as ${replaceBy} } from '@aws-cdk/core';`; - } else { - // import `core.Construct` as `Construct` and replace - replaceBy = 'Construct'; - addImport = `import { ${replaceBy} } from '@aws-cdk/core';`; - } - - const fixes: Rule.Fix[] = [ - fixer.replaceTextRange(replaceRange, replaceBy) - ]; - - if (addImport) { - // find the last import statement in the file and add our import immediately after - const lastImport = imports[imports.length - 1]; - if (lastImport) { - fixes.push(fixer.insertTextAfter(lastImport.importNode, [ - "", - "", - "// keep this import separate from other imports to reduce chance for merge conflicts with v2-main", - "// eslint-disable-next-line no-duplicate-imports, import/order", - addImport, - ].join('\n'))); - } - } - - return fixes; - }, - }); -} \ No newline at end of file diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 87300515e617d..0bded88c313ef 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -284,32 +284,8 @@ export class MaturitySetting extends ValidationRule { maturity = 'deprecated'; } - const packageLevels = this.determinePackageLevels(pkg); - - const hasL1s = packageLevels.some(level => level === 'l1'); - const hasL2s = packageLevels.some(level => level === 'l2'); - if (hasL2s) { - // validate that a package that contains L2s does not declare a 'cfn-only' maturity - if (maturity === 'cfn-only') { - pkg.report({ - ruleName: this.name, - message: "Package that contains any L2s cannot declare a 'cfn-only' maturity", - fix: () => pkg.json.maturity = 'experimental', - }); - } - } else if (hasL1s) { - // validate that a package that contains only L1s declares a 'cfn-only' maturity - if (maturity !== 'cfn-only') { - pkg.report({ - ruleName: this.name, - message: "Package that contains only L1s cannot declare a maturity other than 'cfn-only'", - fix: () => pkg.json.maturity = 'cfn-only', - }); - } - } - if (maturity) { - this.validateReadmeHasBanner(pkg, maturity, packageLevels); + this.validateReadmeHasBanner(pkg, maturity, this.determinePackageLevels(pkg)); } } @@ -366,9 +342,7 @@ export class MaturitySetting extends ValidationRule { // to see if this package has L1s. const hasL1 = !!pkg.json['cdk-build']?.cloudformation; - const libFiles = glob.sync('lib/**/*.ts', { - ignore: 'lib/**/*.d.ts', // ignore the generated TS declaration files - }); + const libFiles = glob.sync('lib/*.ts'); const hasL2 = libFiles.some(f => !f.endsWith('.generated.ts') && !f.endsWith('index.ts')); return [ @@ -1105,11 +1079,7 @@ export class MustHaveNodeEnginesDeclaration extends ValidationRule { public readonly name = 'package-info/engines'; public validate(pkg: PackageJson): void { - if (cdkMajorVersion() === 2) { - expectJSON(this.name, pkg, 'engines.node', '>= 14.15.0'); - } else { - expectJSON(this.name, pkg, 'engines.node', '>= 10.13.0 <13 || >=13.7.0'); - } + expectJSON(this.name, pkg, 'engines.node', '>= 10.13.0 <13 || >=13.7.0'); } } @@ -1541,7 +1511,9 @@ export class UbergenPackageVisibility extends ValidationRule { ]; public validate(pkg: PackageJson): void { - if (cdkMajorVersion() === 2) { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const releaseJson = require(`${__dirname}/../../../release.json`); + if (releaseJson.majorVersion === 2) { // Only packages in the publicPackages list should be "public". Everything else should be private. if (this.publicPackages.includes(pkg.json.name) && pkg.json.private === true) { pkg.report({ @@ -1644,9 +1616,3 @@ function toRegExp(str: string): RegExp { function readBannerFile(file: string): string { return fs.readFileSync(path.join(__dirname, 'banners', file), { encoding: 'utf-8' }).trim(); } - -function cdkMajorVersion() { - // eslint-disable-next-line @typescript-eslint/no-require-imports - const releaseJson = require(`${__dirname}/../../../release.json`); - return releaseJson.majorVersion as number; -} diff --git a/tools/pkgtools/package.json b/tools/pkgtools/package.json index f9130019bdc41..d5255e81d465d 100644 --- a/tools/pkgtools/package.json +++ b/tools/pkgtools/package.json @@ -44,7 +44,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/ubergen/package.json b/tools/ubergen/package.json index 77bb68c7a3d0b..483d7ecfa4dfa 100644 --- a/tools/ubergen/package.json +++ b/tools/ubergen/package.json @@ -41,7 +41,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/yarn-cling/package.json b/tools/yarn-cling/package.json index 02516633ef5f5..aefba13ff8ee0 100644 --- a/tools/yarn-cling/package.json +++ b/tools/yarn-cling/package.json @@ -54,7 +54,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/version.v1.json b/version.v1.json index e9e06b8086b92..5d4e6a68aecb5 100644 --- a/version.v1.json +++ b/version.v1.json @@ -1,3 +1,3 @@ { - "version": "1.85.0" + "version": "1.83.0" } diff --git a/yarn.lock b/yarn.lock index 374de3ff6b642..285e77f7f0705 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2309,10 +2309,10 @@ aws-sdk-mock@^5.1.0: sinon "^9.0.1" traverse "^0.6.6" -aws-sdk@^2.637.0, aws-sdk@^2.828.0: - version "2.828.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.828.0.tgz#6aa599c3582f219568f41fb287eb65753e4a9234" - integrity sha512-JoDujGdncSIF9ka+XFZjop/7G+fNGucwPwYj7OHYMmFIOV5p7YmqomdbVmH/vIzd988YZz8oLOinWc4jM6vvhg== +aws-sdk@^2.637.0, aws-sdk@^2.824.0: + version "2.824.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.824.0.tgz#a67747d4d0b53d09c6c121e93f44d8f6e76fc44b" + integrity sha512-9KNRQBkIMPn+6DWb4gR+RzqTMNyGLEwOgXbE4dDehOIAflfLnv3IFwLnzrhxJnleB4guYrILIsBroJFBzjiekg== dependencies: buffer "4.9.2" events "1.1.1" @@ -3518,11 +3518,6 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -decamelize@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-5.0.0.tgz#88358157b010ef133febfd27c18994bd80c6215b" - integrity sha512-U75DcT5hrio3KNtvdULAWnLiAPbFUC4191ldxMmj4FA/mRuBnmDwU0boNfPyFRhnan+Jm+haLeSn3P0afcBn4w== - decimal.js@^10.2.0: version "10.2.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" @@ -3948,10 +3943,10 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -esbuild@^0.8.32: - version "0.8.32" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.32.tgz#d3d679ea417925f7afaab37555e52070df317355" - integrity sha512-5IzQapMW/wFy5oxziHCJzawk26K3xeyrIAQPnPN3c0Q84hqRw6IfGDGfGWOdJNw5tAx77yvwqZ4r1QMpo6emJA== +esbuild@^0.8.31: + version "0.8.31" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.31.tgz#c21e7adb3ad283c951a53de7ad64a5ae2df2ed34" + integrity sha512-7EIU0VdUxltwivjVezX3HgeNzeIVR1snkrAo57WdUnuBMykdzin5rTrxwCDM6xQqj0RL/HjOEm3wFr2ijHKeaA== escalade@^3.1.1: version "3.1.1" @@ -9928,10 +9923,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript-json-schema@^0.47.0: - version "0.47.0" - resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.47.0.tgz#84dde5460b127c6774da81bf70b23c7e04857b13" - integrity sha512-A6NVwSOTSsNDHfaqDcDeKwwyXEeKqBHoAr20jcetnYj4e8C6zVFofAVhAuwsBXCRYiWEE/lyHrcxpsSpbIk0Mg== +typescript-json-schema@^0.46.0: + version "0.46.0" + resolved "https://registry.yarnpkg.com/typescript-json-schema/-/typescript-json-schema-0.46.0.tgz#45204ba80915db3608d01de5b839c470c053e716" + integrity sha512-9ktZr69Yh6iGTWVa3Ln0J+H6RyAoED9e68tz8k+0lIiCR+UZLvpvs9PqsSsE7aZ7Olvg0p161ls7JHldlA0Ocg== dependencies: "@types/json-schema" "^7.0.6" glob "^7.1.6" From 23b841254a258f58d652666dbcc52e4aec53d735 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Wed, 20 Jan 2021 16:35:16 +0000 Subject: [PATCH 033/304] chore: npm dist tag "next" for v2 releases (#12630) --- release.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/release.json b/release.json index d70a512507195..c422754f8238f 100644 --- a/release.json +++ b/release.json @@ -1,4 +1,5 @@ { "majorVersion": 2, - "releaseType": "alpha" + "releaseType": "alpha", + "distTag": "next" } From d17147873428efdc9a7c229178c39c61bc077870 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Thu, 21 Jan 2021 10:51:30 +0000 Subject: [PATCH 034/304] Fixing imports and removing v1-specific test --- packages/@aws-cdk/core/test/stack.test.ts | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index 6a54b682108ad..bf603fe6499ce 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -1,7 +1,8 @@ import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; import { App, CfnCondition, CfnInclude, CfnOutput, CfnParameter, - CfnResource, Construct, Lazy, ScopedAws, Stack, validateString, ISynthesisSession, Tags, LegacyStackSynthesizer, DefaultStackSynthesizer, + CfnResource, Lazy, ScopedAws, Stack, validateString, Tags, LegacyStackSynthesizer, DefaultStackSynthesizer, } from '../lib'; import { Intrinsic } from '../lib/private/intrinsic'; import { resolveReferences } from '../lib/private/refs'; @@ -1044,25 +1045,6 @@ describe('stack', () => { }); - test('users can (still) override "synthesize()" in stack', () => { - let called = false; - - class MyStack extends Stack { - synthesize(session: ISynthesisSession) { - called = true; - expect(session.outdir).toBeDefined(); - expect(session.assembly.outdir).toEqual(session.outdir); - } - } - - const app = new App(); - new MyStack(app, 'my-stack'); - - app.synth(); - expect(called).toEqual(true); - - }); - test('context can be set on a stack using a LegacySynthesizer', () => { // WHEN const stack = new Stack(undefined, undefined, { From 66e97b7cbcc3391689bdc42a1e93baa400f85b41 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Thu, 21 Jan 2021 12:23:30 +0000 Subject: [PATCH 035/304] automatic pkglint fixes --- packages/@aws-cdk/aws-emrcontainers/package.json | 11 +++++++---- packages/@aws-cdk/aws-quicksight/package.json | 11 +++++++---- .../aws-servicecatalogappregistry/package.json | 11 +++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/@aws-cdk/aws-emrcontainers/package.json b/packages/@aws-cdk/aws-emrcontainers/package.json index ecd7363f54aad..5bf3817324da5 100644 --- a/packages/@aws-cdk/aws-emrcontainers/package.json +++ b/packages/@aws-cdk/aws-emrcontainers/package.json @@ -81,17 +81,20 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-quicksight/package.json b/packages/@aws-cdk/aws-quicksight/package.json index f0bccf72e3de3..a7feba1902483 100644 --- a/packages/@aws-cdk/aws-quicksight/package.json +++ b/packages/@aws-cdk/aws-quicksight/package.json @@ -81,17 +81,20 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } diff --git a/packages/@aws-cdk/aws-servicecatalogappregistry/package.json b/packages/@aws-cdk/aws-servicecatalogappregistry/package.json index 5e889cf4373ea..5f8c0db2bd46a 100644 --- a/packages/@aws-cdk/aws-servicecatalogappregistry/package.json +++ b/packages/@aws-cdk/aws-servicecatalogappregistry/package.json @@ -81,17 +81,20 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 10.13.0 <13 || >=13.7.0" + "node": ">= 14.15.0" }, "stability": "experimental", "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } From 346109d4014ca84d790f32e49b2b6790f9f2ce9e Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Thu, 21 Jan 2021 17:25:30 +0200 Subject: [PATCH 036/304] chore(release): 2.0.0-alpha.1 (#12639) See CHANGELOG --- CHANGELOG.v2.md | 21 +++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index f1312c7a4c98d..ba5d5bb9c8e25 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,27 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.1](https://github.com/aws/aws-cdk/compare/v1.85.0...v2.0.0-alpha.1) (2021-01-21) + + +### Features + +* remove the construct compatibility layer ([#12054](https://github.com/aws/aws-cdk/issues/12054)) ([8d3c02c](https://github.com/aws/aws-cdk/commit/8d3c02c117072433bf649003af0c4fee4a1f8c4b)) +* **elasticsearch:** UltraWarm nodes ([#12265](https://github.com/aws/aws-cdk/issues/12265)) ([3a9056d](https://github.com/aws/aws-cdk/commit/3a9056d87b0c739247013fc74678ab54fd3eb382)), closes [#6462](https://github.com/aws/aws-cdk/issues/6462) + + +### Bug Fixes + +* **ec2:** Vpc.fromVpcAttributes cannot be used with EKS ([#12569](https://github.com/aws/aws-cdk/issues/12569)) ([1cdc244](https://github.com/aws/aws-cdk/commit/1cdc244e940396c962147d4e3ada4a0722923321)), closes [#12040](https://github.com/aws/aws-cdk/issues/12040) [#12160](https://github.com/aws/aws-cdk/issues/12160) +* **iam:** Groups are erroneously accepted as the Principal of a policy ([#11479](https://github.com/aws/aws-cdk/issues/11479)) ([#12549](https://github.com/aws/aws-cdk/issues/12549)) ([c9b0859](https://github.com/aws/aws-cdk/commit/c9b085996319e8d4d7d2db19184fb2f2148889a3)) + +## [2.0.0-alpha.0](https://github.com/aws/aws-cdk/compare/v1.77.0...v2.0.0-alpha.0) (2020-12-11) + + +### Bug Fixes + +* **scripts:** lerna not found in merge-forward ([#11672](https://github.com/aws/aws-cdk/issues/11672)) ([b1a8e33](https://github.com/aws/aws-cdk/commit/b1a8e336c94f7d2a93a023d6dc853d23934bfa06)) + ## 2.0.0-alpha.0 (2020-12-11) This is the first alpha release of CDK 2.0. 🎉 diff --git a/version.v2.json b/version.v2.json index 4862060501dda..4f378e5ab3afe 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.0" + "version": "2.0.0-alpha.1" } From 66147495288b9fa3b161bd00281419b0aa8f9e3b Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 21 Jan 2021 17:54:21 +0000 Subject: [PATCH 037/304] chore: temporarily switch back to the old npm disttag (#12649) The publishing of version 2.0.0-alpha.1 is failing because the build is looking for the npm dist tag 'next' that doesn't yet exist. This is temporarily switching the tag to use 'preview-v2'. Once the new version is published, this change will be reverted. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- release.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.json b/release.json index c422754f8238f..28e4c1605a7e8 100644 --- a/release.json +++ b/release.json @@ -1,5 +1,5 @@ { "majorVersion": 2, "releaseType": "alpha", - "distTag": "next" + "distTag": "preview-v2" } From 0d5a1ec142179d476e6aa5c0a148f07c20df4c9e Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Fri, 22 Jan 2021 11:31:56 +0000 Subject: [PATCH 038/304] chore: revert "temporarily switch back to the old npm disttag (#12649)" (#12663) This reverts commit 66147495288b9fa3b161bd00281419b0aa8f9e3b. Now that we've published the next version '2.0.0-alpha.1' with the 'next' disttag, revert back to this instead of 'preview-v2'. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- release.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release.json b/release.json index 28e4c1605a7e8..c422754f8238f 100644 --- a/release.json +++ b/release.json @@ -1,5 +1,5 @@ { "majorVersion": 2, "releaseType": "alpha", - "distTag": "preview-v2" + "distTag": "next" } From d2f229e28b4c13f17fede86ca80009be478bd777 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Tue, 26 Jan 2021 18:45:33 +0000 Subject: [PATCH 039/304] automatic pkglint fixes --- .../@aws-cdk-containers/ecs-service-extensions/package.json | 2 +- packages/@aws-cdk/alexa-ask/package.json | 2 +- packages/@aws-cdk/app-delivery/package.json | 2 +- packages/@aws-cdk/assert/package.json | 2 +- packages/@aws-cdk/assets/package.json | 2 +- packages/@aws-cdk/aws-accessanalyzer/package.json | 2 +- packages/@aws-cdk/aws-acmpca/package.json | 2 +- packages/@aws-cdk/aws-amazonmq/package.json | 2 +- packages/@aws-cdk/aws-amplify/package.json | 2 +- packages/@aws-cdk/aws-apigateway/package.json | 2 +- packages/@aws-cdk/aws-apigatewayv2-integrations/package.json | 2 +- packages/@aws-cdk/aws-apigatewayv2/package.json | 2 +- packages/@aws-cdk/aws-appconfig/package.json | 2 +- packages/@aws-cdk/aws-appflow/package.json | 2 +- packages/@aws-cdk/aws-applicationautoscaling/package.json | 2 +- packages/@aws-cdk/aws-applicationinsights/package.json | 2 +- packages/@aws-cdk/aws-appmesh/package.json | 2 +- packages/@aws-cdk/aws-appstream/package.json | 2 +- packages/@aws-cdk/aws-appsync/package.json | 2 +- packages/@aws-cdk/aws-athena/package.json | 2 +- packages/@aws-cdk/aws-auditmanager/package.json | 2 +- packages/@aws-cdk/aws-autoscaling-common/package.json | 2 +- packages/@aws-cdk/aws-autoscaling-hooktargets/package.json | 2 +- packages/@aws-cdk/aws-autoscaling/package.json | 2 +- packages/@aws-cdk/aws-autoscalingplans/package.json | 2 +- packages/@aws-cdk/aws-backup/package.json | 2 +- packages/@aws-cdk/aws-batch/package.json | 2 +- packages/@aws-cdk/aws-budgets/package.json | 2 +- packages/@aws-cdk/aws-cassandra/package.json | 2 +- packages/@aws-cdk/aws-ce/package.json | 2 +- packages/@aws-cdk/aws-certificatemanager/package.json | 2 +- packages/@aws-cdk/aws-chatbot/package.json | 2 +- packages/@aws-cdk/aws-cloud9/package.json | 2 +- packages/@aws-cdk/aws-cloudformation/package.json | 2 +- packages/@aws-cdk/aws-cloudfront-origins/package.json | 2 +- packages/@aws-cdk/aws-cloudfront/package.json | 2 +- packages/@aws-cdk/aws-cloudtrail/package.json | 2 +- packages/@aws-cdk/aws-cloudwatch-actions/package.json | 2 +- packages/@aws-cdk/aws-cloudwatch/package.json | 2 +- packages/@aws-cdk/aws-codeartifact/package.json | 2 +- packages/@aws-cdk/aws-codebuild/package.json | 2 +- packages/@aws-cdk/aws-codecommit/package.json | 2 +- packages/@aws-cdk/aws-codedeploy/package.json | 2 +- packages/@aws-cdk/aws-codeguruprofiler/package.json | 2 +- packages/@aws-cdk/aws-codegurureviewer/package.json | 2 +- packages/@aws-cdk/aws-codepipeline-actions/package.json | 2 +- packages/@aws-cdk/aws-codepipeline/package.json | 2 +- packages/@aws-cdk/aws-codestar/package.json | 2 +- packages/@aws-cdk/aws-codestarconnections/package.json | 2 +- packages/@aws-cdk/aws-codestarnotifications/package.json | 2 +- packages/@aws-cdk/aws-cognito/package.json | 2 +- packages/@aws-cdk/aws-config/package.json | 2 +- packages/@aws-cdk/aws-databrew/package.json | 2 +- packages/@aws-cdk/aws-datapipeline/package.json | 2 +- packages/@aws-cdk/aws-datasync/package.json | 2 +- packages/@aws-cdk/aws-dax/package.json | 2 +- packages/@aws-cdk/aws-detective/package.json | 2 +- packages/@aws-cdk/aws-devopsguru/package.json | 2 +- packages/@aws-cdk/aws-directoryservice/package.json | 2 +- packages/@aws-cdk/aws-dlm/package.json | 2 +- packages/@aws-cdk/aws-dms/package.json | 2 +- packages/@aws-cdk/aws-docdb/package.json | 2 +- packages/@aws-cdk/aws-dynamodb-global/package.json | 2 +- packages/@aws-cdk/aws-dynamodb/package.json | 2 +- packages/@aws-cdk/aws-ec2/package.json | 2 +- packages/@aws-cdk/aws-ecr-assets/package.json | 2 +- packages/@aws-cdk/aws-ecr/package.json | 2 +- packages/@aws-cdk/aws-ecs-patterns/package.json | 2 +- packages/@aws-cdk/aws-ecs/package.json | 2 +- packages/@aws-cdk/aws-efs/package.json | 2 +- packages/@aws-cdk/aws-eks-legacy/package.json | 2 +- packages/@aws-cdk/aws-eks/package.json | 2 +- packages/@aws-cdk/aws-elasticache/package.json | 2 +- packages/@aws-cdk/aws-elasticbeanstalk/package.json | 2 +- packages/@aws-cdk/aws-elasticloadbalancing/package.json | 2 +- .../@aws-cdk/aws-elasticloadbalancingv2-actions/package.json | 2 +- .../@aws-cdk/aws-elasticloadbalancingv2-targets/package.json | 2 +- packages/@aws-cdk/aws-elasticloadbalancingv2/package.json | 2 +- packages/@aws-cdk/aws-elasticsearch/package.json | 2 +- packages/@aws-cdk/aws-emr/package.json | 2 +- packages/@aws-cdk/aws-emrcontainers/package.json | 2 +- packages/@aws-cdk/aws-events-targets/package.json | 2 +- packages/@aws-cdk/aws-events/package.json | 2 +- packages/@aws-cdk/aws-eventschemas/package.json | 2 +- packages/@aws-cdk/aws-fms/package.json | 2 +- packages/@aws-cdk/aws-fsx/package.json | 2 +- packages/@aws-cdk/aws-gamelift/package.json | 2 +- packages/@aws-cdk/aws-globalaccelerator/package.json | 2 +- packages/@aws-cdk/aws-glue/package.json | 2 +- packages/@aws-cdk/aws-greengrass/package.json | 2 +- packages/@aws-cdk/aws-greengrassv2/package.json | 2 +- packages/@aws-cdk/aws-guardduty/package.json | 2 +- packages/@aws-cdk/aws-iam/package.json | 2 +- packages/@aws-cdk/aws-imagebuilder/package.json | 2 +- packages/@aws-cdk/aws-inspector/package.json | 2 +- packages/@aws-cdk/aws-iot/package.json | 2 +- packages/@aws-cdk/aws-iot1click/package.json | 2 +- packages/@aws-cdk/aws-iotanalytics/package.json | 2 +- packages/@aws-cdk/aws-iotevents/package.json | 2 +- packages/@aws-cdk/aws-iotsitewise/package.json | 2 +- packages/@aws-cdk/aws-iotthingsgraph/package.json | 2 +- packages/@aws-cdk/aws-iotwireless/package.json | 2 +- packages/@aws-cdk/aws-ivs/package.json | 2 +- packages/@aws-cdk/aws-kendra/package.json | 2 +- packages/@aws-cdk/aws-kinesis/package.json | 2 +- packages/@aws-cdk/aws-kinesisanalytics/package.json | 2 +- packages/@aws-cdk/aws-kinesisfirehose/package.json | 2 +- packages/@aws-cdk/aws-kms/package.json | 2 +- packages/@aws-cdk/aws-lakeformation/package.json | 2 +- packages/@aws-cdk/aws-lambda-destinations/package.json | 2 +- packages/@aws-cdk/aws-lambda-event-sources/package.json | 2 +- packages/@aws-cdk/aws-lambda-nodejs/package.json | 2 +- packages/@aws-cdk/aws-lambda-python/package.json | 2 +- packages/@aws-cdk/aws-lambda/package.json | 2 +- packages/@aws-cdk/aws-licensemanager/package.json | 2 +- packages/@aws-cdk/aws-logs-destinations/package.json | 2 +- packages/@aws-cdk/aws-logs/package.json | 2 +- packages/@aws-cdk/aws-macie/package.json | 2 +- packages/@aws-cdk/aws-managedblockchain/package.json | 2 +- packages/@aws-cdk/aws-mediaconnect/package.json | 2 +- packages/@aws-cdk/aws-mediaconvert/package.json | 2 +- packages/@aws-cdk/aws-medialive/package.json | 2 +- packages/@aws-cdk/aws-mediapackage/package.json | 2 +- packages/@aws-cdk/aws-mediastore/package.json | 2 +- packages/@aws-cdk/aws-msk/package.json | 2 +- packages/@aws-cdk/aws-mwaa/package.json | 2 +- packages/@aws-cdk/aws-neptune/package.json | 2 +- packages/@aws-cdk/aws-networkfirewall/package.json | 2 +- packages/@aws-cdk/aws-networkmanager/package.json | 2 +- packages/@aws-cdk/aws-opsworks/package.json | 2 +- packages/@aws-cdk/aws-opsworkscm/package.json | 2 +- packages/@aws-cdk/aws-pinpoint/package.json | 2 +- packages/@aws-cdk/aws-pinpointemail/package.json | 2 +- packages/@aws-cdk/aws-qldb/package.json | 2 +- packages/@aws-cdk/aws-quicksight/package.json | 2 +- packages/@aws-cdk/aws-ram/package.json | 2 +- packages/@aws-cdk/aws-rds/package.json | 2 +- packages/@aws-cdk/aws-redshift/package.json | 2 +- packages/@aws-cdk/aws-resourcegroups/package.json | 2 +- packages/@aws-cdk/aws-robomaker/package.json | 2 +- packages/@aws-cdk/aws-route53-patterns/package.json | 2 +- packages/@aws-cdk/aws-route53-targets/package.json | 2 +- packages/@aws-cdk/aws-route53/package.json | 2 +- packages/@aws-cdk/aws-route53resolver/package.json | 2 +- packages/@aws-cdk/aws-s3-assets/package.json | 2 +- packages/@aws-cdk/aws-s3-deployment/package.json | 2 +- packages/@aws-cdk/aws-s3-notifications/package.json | 2 +- packages/@aws-cdk/aws-s3/package.json | 2 +- packages/@aws-cdk/aws-sagemaker/package.json | 2 +- packages/@aws-cdk/aws-sam/package.json | 2 +- packages/@aws-cdk/aws-sdb/package.json | 2 +- packages/@aws-cdk/aws-secretsmanager/package.json | 2 +- packages/@aws-cdk/aws-securityhub/package.json | 2 +- packages/@aws-cdk/aws-servicecatalog/package.json | 2 +- packages/@aws-cdk/aws-servicecatalogappregistry/package.json | 2 +- packages/@aws-cdk/aws-servicediscovery/package.json | 2 +- packages/@aws-cdk/aws-ses-actions/package.json | 2 +- packages/@aws-cdk/aws-ses/package.json | 2 +- packages/@aws-cdk/aws-signer/package.json | 2 +- packages/@aws-cdk/aws-sns-subscriptions/package.json | 2 +- packages/@aws-cdk/aws-sns/package.json | 2 +- packages/@aws-cdk/aws-sqs/package.json | 2 +- packages/@aws-cdk/aws-ssm/package.json | 2 +- packages/@aws-cdk/aws-sso/package.json | 2 +- packages/@aws-cdk/aws-stepfunctions-tasks/package.json | 2 +- packages/@aws-cdk/aws-stepfunctions/package.json | 2 +- packages/@aws-cdk/aws-synthetics/package.json | 2 +- packages/@aws-cdk/aws-timestream/package.json | 2 +- packages/@aws-cdk/aws-transfer/package.json | 2 +- packages/@aws-cdk/aws-waf/package.json | 2 +- packages/@aws-cdk/aws-wafregional/package.json | 2 +- packages/@aws-cdk/aws-wafv2/package.json | 2 +- packages/@aws-cdk/aws-workspaces/package.json | 2 +- packages/@aws-cdk/cdk-assets-schema/package.json | 2 +- packages/@aws-cdk/cloud-assembly-schema/package.json | 2 +- packages/@aws-cdk/cloudformation-diff/package.json | 2 +- packages/@aws-cdk/cloudformation-include/package.json | 2 +- packages/@aws-cdk/core/package.json | 2 +- packages/@aws-cdk/custom-resources/package.json | 2 +- packages/@aws-cdk/cx-api/package.json | 2 +- packages/@aws-cdk/example-construct-library/package.json | 2 +- packages/@aws-cdk/lambda-layer-awscli/package.json | 2 +- packages/@aws-cdk/lambda-layer-kubectl/package.json | 2 +- packages/@aws-cdk/pipelines/package.json | 2 +- packages/@aws-cdk/region-info/package.json | 2 +- packages/@aws-cdk/yaml-cfn/package.json | 2 +- packages/@monocdk-experiment/rewrite-imports/package.json | 2 +- packages/aws-cdk-lib/package.json | 2 +- packages/aws-cdk/package.json | 2 +- packages/awslint/package.json | 2 +- packages/cdk-assets/package.json | 2 +- packages/monocdk/package.json | 2 +- tools/cdk-build-tools/package.json | 2 +- tools/cdk-integ-tools/package.json | 2 +- tools/cfn2ts/package.json | 2 +- tools/pkgtools/package.json | 2 +- tools/ubergen/package.json | 2 +- tools/yarn-cling/package.json | 2 +- 198 files changed, 198 insertions(+), 198 deletions(-) diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/package.json b/packages/@aws-cdk-containers/ecs-service-extensions/package.json index 38a65000f0a35..98ffac88c524e 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/package.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awscdkio": { "announce": false diff --git a/packages/@aws-cdk/alexa-ask/package.json b/packages/@aws-cdk/alexa-ask/package.json index d42cd70f209a9..31f54207b7190 100644 --- a/packages/@aws-cdk/alexa-ask/package.json +++ b/packages/@aws-cdk/alexa-ask/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/app-delivery/package.json b/packages/@aws-cdk/app-delivery/package.json index 860158af84dbc..f54686715abdd 100644 --- a/packages/@aws-cdk/app-delivery/package.json +++ b/packages/@aws-cdk/app-delivery/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "deprecated", "maturity": "deprecated", diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index bd4c3c62bf159..3b7be5358b61a 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -51,7 +51,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/assets/package.json b/packages/@aws-cdk/assets/package.json index fd402d5777794..c5f3dc8ef8174 100644 --- a/packages/@aws-cdk/assets/package.json +++ b/packages/@aws-cdk/assets/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "deprecated", "maturity": "deprecated", diff --git a/packages/@aws-cdk/aws-accessanalyzer/package.json b/packages/@aws-cdk/aws-accessanalyzer/package.json index 8a04719ed7c6b..445418a351d97 100644 --- a/packages/@aws-cdk/aws-accessanalyzer/package.json +++ b/packages/@aws-cdk/aws-accessanalyzer/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-acmpca/package.json b/packages/@aws-cdk/aws-acmpca/package.json index 7f68e009092a3..c4d348d4cf196 100644 --- a/packages/@aws-cdk/aws-acmpca/package.json +++ b/packages/@aws-cdk/aws-acmpca/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-amazonmq/package.json b/packages/@aws-cdk/aws-amazonmq/package.json index be6846ac237d1..07ffaacdc351a 100644 --- a/packages/@aws-cdk/aws-amazonmq/package.json +++ b/packages/@aws-cdk/aws-amazonmq/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-amplify/package.json b/packages/@aws-cdk/aws-amplify/package.json index 912e6c7d3bd8c..a494b9f07ded9 100644 --- a/packages/@aws-cdk/aws-amplify/package.json +++ b/packages/@aws-cdk/aws-amplify/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-apigateway/package.json b/packages/@aws-cdk/aws-apigateway/package.json index eecb8d5f754e8..24d79e3bd0091 100644 --- a/packages/@aws-cdk/aws-apigateway/package.json +++ b/packages/@aws-cdk/aws-apigateway/package.json @@ -108,7 +108,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "nyc": { "exclude": [ diff --git a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json index 4f9e8aa0437f0..1fc7aaf9d00b9 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-integrations/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-apigatewayv2/package.json b/packages/@aws-cdk/aws-apigatewayv2/package.json index 74a870b1ddeb1..d7851db7b17b8 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-appconfig/package.json b/packages/@aws-cdk/aws-appconfig/package.json index 4b49b4d3c53ce..2663bcdaa7f53 100644 --- a/packages/@aws-cdk/aws-appconfig/package.json +++ b/packages/@aws-cdk/aws-appconfig/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appflow/package.json b/packages/@aws-cdk/aws-appflow/package.json index 217dfab75673f..19a5b63614043 100644 --- a/packages/@aws-cdk/aws-appflow/package.json +++ b/packages/@aws-cdk/aws-appflow/package.json @@ -85,7 +85,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-applicationautoscaling/package.json b/packages/@aws-cdk/aws-applicationautoscaling/package.json index 3ed253b419b42..bea6732b67462 100644 --- a/packages/@aws-cdk/aws-applicationautoscaling/package.json +++ b/packages/@aws-cdk/aws-applicationautoscaling/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "nyc": { "branches": 65, diff --git a/packages/@aws-cdk/aws-applicationinsights/package.json b/packages/@aws-cdk/aws-applicationinsights/package.json index 2c0f938f2b1e0..3e68b49e201a4 100644 --- a/packages/@aws-cdk/aws-applicationinsights/package.json +++ b/packages/@aws-cdk/aws-applicationinsights/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appmesh/package.json b/packages/@aws-cdk/aws-appmesh/package.json index 750248f8e5a7b..78dfe2e9a8297 100644 --- a/packages/@aws-cdk/aws-appmesh/package.json +++ b/packages/@aws-cdk/aws-appmesh/package.json @@ -103,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-appstream/package.json b/packages/@aws-cdk/aws-appstream/package.json index e914d9d88aa17..1e426a53dea45 100644 --- a/packages/@aws-cdk/aws-appstream/package.json +++ b/packages/@aws-cdk/aws-appstream/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-appsync/package.json b/packages/@aws-cdk/aws-appsync/package.json index 34803131f02ce..4e01454c06fed 100644 --- a/packages/@aws-cdk/aws-appsync/package.json +++ b/packages/@aws-cdk/aws-appsync/package.json @@ -106,7 +106,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-athena/package.json b/packages/@aws-cdk/aws-athena/package.json index c46c0bedb83c4..5febdcc15dd08 100644 --- a/packages/@aws-cdk/aws-athena/package.json +++ b/packages/@aws-cdk/aws-athena/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-auditmanager/package.json b/packages/@aws-cdk/aws-auditmanager/package.json index e78433aa0d347..a78dda988de8a 100644 --- a/packages/@aws-cdk/aws-auditmanager/package.json +++ b/packages/@aws-cdk/aws-auditmanager/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-autoscaling-common/package.json b/packages/@aws-cdk/aws-autoscaling-common/package.json index bd9b9ecc5f733..57d2ad3a89c6d 100644 --- a/packages/@aws-cdk/aws-autoscaling-common/package.json +++ b/packages/@aws-cdk/aws-autoscaling-common/package.json @@ -104,7 +104,7 @@ ] }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json index ae13733266a1b..f0474b06d8f17 100644 --- a/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json +++ b/packages/@aws-cdk/aws-autoscaling-hooktargets/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-autoscaling/package.json b/packages/@aws-cdk/aws-autoscaling/package.json index d10c3bc21491c..8a37384d34a44 100644 --- a/packages/@aws-cdk/aws-autoscaling/package.json +++ b/packages/@aws-cdk/aws-autoscaling/package.json @@ -105,7 +105,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-autoscalingplans/package.json b/packages/@aws-cdk/aws-autoscalingplans/package.json index e7ee2d10d58f8..56f3410127c2b 100644 --- a/packages/@aws-cdk/aws-autoscalingplans/package.json +++ b/packages/@aws-cdk/aws-autoscalingplans/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-backup/package.json b/packages/@aws-cdk/aws-backup/package.json index c1e5a836bf8fd..34b053812d990 100644 --- a/packages/@aws-cdk/aws-backup/package.json +++ b/packages/@aws-cdk/aws-backup/package.json @@ -105,7 +105,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-batch/package.json b/packages/@aws-cdk/aws-batch/package.json index a01b9f887045b..6811b09bd2746 100644 --- a/packages/@aws-cdk/aws-batch/package.json +++ b/packages/@aws-cdk/aws-batch/package.json @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-budgets/package.json b/packages/@aws-cdk/aws-budgets/package.json index 8c19bb1e5a323..4b63f6feb57fa 100644 --- a/packages/@aws-cdk/aws-budgets/package.json +++ b/packages/@aws-cdk/aws-budgets/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-cassandra/package.json b/packages/@aws-cdk/aws-cassandra/package.json index 9cb5e5fb86ab9..4f9b040b3f735 100644 --- a/packages/@aws-cdk/aws-cassandra/package.json +++ b/packages/@aws-cdk/aws-cassandra/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ce/package.json b/packages/@aws-cdk/aws-ce/package.json index e8798e6783685..d7c1ec901cd46 100644 --- a/packages/@aws-cdk/aws-ce/package.json +++ b/packages/@aws-cdk/aws-ce/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-certificatemanager/package.json b/packages/@aws-cdk/aws-certificatemanager/package.json index 35f63bb469781..5d8a862c281b9 100644 --- a/packages/@aws-cdk/aws-certificatemanager/package.json +++ b/packages/@aws-cdk/aws-certificatemanager/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-chatbot/package.json b/packages/@aws-cdk/aws-chatbot/package.json index 045cf51023206..8d0ba37a077b3 100644 --- a/packages/@aws-cdk/aws-chatbot/package.json +++ b/packages/@aws-cdk/aws-chatbot/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-cloud9/package.json b/packages/@aws-cdk/aws-cloud9/package.json index ec467e18161fe..7a71b233b84ca 100644 --- a/packages/@aws-cdk/aws-cloud9/package.json +++ b/packages/@aws-cdk/aws-cloud9/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudformation/package.json b/packages/@aws-cdk/aws-cloudformation/package.json index bab62e109fb5c..48f887e546a19 100644 --- a/packages/@aws-cdk/aws-cloudformation/package.json +++ b/packages/@aws-cdk/aws-cloudformation/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-cloudfront-origins/package.json b/packages/@aws-cdk/aws-cloudfront-origins/package.json index ebd1afc9a6669..dafc661414ed3 100644 --- a/packages/@aws-cdk/aws-cloudfront-origins/package.json +++ b/packages/@aws-cdk/aws-cloudfront-origins/package.json @@ -93,7 +93,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudfront/package.json b/packages/@aws-cdk/aws-cloudfront/package.json index 97446ce719cb2..b4673e557489e 100644 --- a/packages/@aws-cdk/aws-cloudfront/package.json +++ b/packages/@aws-cdk/aws-cloudfront/package.json @@ -106,7 +106,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudtrail/package.json b/packages/@aws-cdk/aws-cloudtrail/package.json index a2cde8b2a7f3c..cceb6d1d4e76c 100644 --- a/packages/@aws-cdk/aws-cloudtrail/package.json +++ b/packages/@aws-cdk/aws-cloudtrail/package.json @@ -110,7 +110,7 @@ ] }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/package.json b/packages/@aws-cdk/aws-cloudwatch-actions/package.json index adad1030bae42..a5b06d6d96ce4 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/package.json +++ b/packages/@aws-cdk/aws-cloudwatch-actions/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-cloudwatch/package.json b/packages/@aws-cdk/aws-cloudwatch/package.json index 0ba8806c9d72f..2df5cc81e9830 100644 --- a/packages/@aws-cdk/aws-cloudwatch/package.json +++ b/packages/@aws-cdk/aws-cloudwatch/package.json @@ -113,7 +113,7 @@ ] }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-codeartifact/package.json b/packages/@aws-cdk/aws-codeartifact/package.json index f275a789b734b..b903b41332852 100644 --- a/packages/@aws-cdk/aws-codeartifact/package.json +++ b/packages/@aws-cdk/aws-codeartifact/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codebuild/package.json b/packages/@aws-cdk/aws-codebuild/package.json index 1caf82d1d55ae..526eb2429f87b 100644 --- a/packages/@aws-cdk/aws-codebuild/package.json +++ b/packages/@aws-cdk/aws-codebuild/package.json @@ -122,7 +122,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codecommit/package.json b/packages/@aws-cdk/aws-codecommit/package.json index 13012410998fb..abe691fe8e92c 100644 --- a/packages/@aws-cdk/aws-codecommit/package.json +++ b/packages/@aws-cdk/aws-codecommit/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-codedeploy/package.json b/packages/@aws-cdk/aws-codedeploy/package.json index cbb8c87100d82..0553ffa50bfa0 100644 --- a/packages/@aws-cdk/aws-codedeploy/package.json +++ b/packages/@aws-cdk/aws-codedeploy/package.json @@ -110,7 +110,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codeguruprofiler/package.json b/packages/@aws-cdk/aws-codeguruprofiler/package.json index b5d19e9c49dc5..fd19fbe3797ec 100644 --- a/packages/@aws-cdk/aws-codeguruprofiler/package.json +++ b/packages/@aws-cdk/aws-codeguruprofiler/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-codegurureviewer/package.json b/packages/@aws-cdk/aws-codegurureviewer/package.json index 820de1bd461c8..cc3aac4d5592b 100644 --- a/packages/@aws-cdk/aws-codegurureviewer/package.json +++ b/packages/@aws-cdk/aws-codegurureviewer/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codepipeline-actions/package.json b/packages/@aws-cdk/aws-codepipeline-actions/package.json index 41bfe3c17778f..d91785ae0b80b 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/package.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/package.json @@ -125,7 +125,7 @@ "case" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-codepipeline/package.json b/packages/@aws-cdk/aws-codepipeline/package.json index f855600d43455..6fabccdcbdc73 100644 --- a/packages/@aws-cdk/aws-codepipeline/package.json +++ b/packages/@aws-cdk/aws-codepipeline/package.json @@ -105,7 +105,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codestar/package.json b/packages/@aws-cdk/aws-codestar/package.json index 061ba9c2a084e..f66146e5c76a8 100644 --- a/packages/@aws-cdk/aws-codestar/package.json +++ b/packages/@aws-cdk/aws-codestar/package.json @@ -91,7 +91,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-codestarconnections/package.json b/packages/@aws-cdk/aws-codestarconnections/package.json index 682494a1a9069..58e6b8e6b1a95 100644 --- a/packages/@aws-cdk/aws-codestarconnections/package.json +++ b/packages/@aws-cdk/aws-codestarconnections/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-codestarnotifications/package.json b/packages/@aws-cdk/aws-codestarnotifications/package.json index c484cb2dfe8ae..1148e85e08afc 100644 --- a/packages/@aws-cdk/aws-codestarnotifications/package.json +++ b/packages/@aws-cdk/aws-codestarnotifications/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-cognito/package.json b/packages/@aws-cdk/aws-cognito/package.json index 445925de79fab..344539e498237 100644 --- a/packages/@aws-cdk/aws-cognito/package.json +++ b/packages/@aws-cdk/aws-cognito/package.json @@ -102,7 +102,7 @@ "punycode" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-config/package.json b/packages/@aws-cdk/aws-config/package.json index d5c6241a6a0e8..e591180c9bc4a 100644 --- a/packages/@aws-cdk/aws-config/package.json +++ b/packages/@aws-cdk/aws-config/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-databrew/package.json b/packages/@aws-cdk/aws-databrew/package.json index 6bc1b9ef97185..de54daab4c987 100644 --- a/packages/@aws-cdk/aws-databrew/package.json +++ b/packages/@aws-cdk/aws-databrew/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-datapipeline/package.json b/packages/@aws-cdk/aws-datapipeline/package.json index 7ab31eb7f16d5..f9105925ecd80 100644 --- a/packages/@aws-cdk/aws-datapipeline/package.json +++ b/packages/@aws-cdk/aws-datapipeline/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-datasync/package.json b/packages/@aws-cdk/aws-datasync/package.json index 83153c88d9956..924cd576ac716 100644 --- a/packages/@aws-cdk/aws-datasync/package.json +++ b/packages/@aws-cdk/aws-datasync/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dax/package.json b/packages/@aws-cdk/aws-dax/package.json index 475582ca1a8e1..f7726056fefa7 100644 --- a/packages/@aws-cdk/aws-dax/package.json +++ b/packages/@aws-cdk/aws-dax/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-detective/package.json b/packages/@aws-cdk/aws-detective/package.json index fd12821cf9bbf..4b0ce32878884 100644 --- a/packages/@aws-cdk/aws-detective/package.json +++ b/packages/@aws-cdk/aws-detective/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "awscdkio": { diff --git a/packages/@aws-cdk/aws-devopsguru/package.json b/packages/@aws-cdk/aws-devopsguru/package.json index 18c28389ea329..a870c67bab03d 100644 --- a/packages/@aws-cdk/aws-devopsguru/package.json +++ b/packages/@aws-cdk/aws-devopsguru/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-directoryservice/package.json b/packages/@aws-cdk/aws-directoryservice/package.json index 1975b3f758bf4..75f5aea68704a 100644 --- a/packages/@aws-cdk/aws-directoryservice/package.json +++ b/packages/@aws-cdk/aws-directoryservice/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dlm/package.json b/packages/@aws-cdk/aws-dlm/package.json index 176b13ed48181..6128c2ac51c60 100644 --- a/packages/@aws-cdk/aws-dlm/package.json +++ b/packages/@aws-cdk/aws-dlm/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-dms/package.json b/packages/@aws-cdk/aws-dms/package.json index 9fa28cb518203..f1dfb2549c403 100644 --- a/packages/@aws-cdk/aws-dms/package.json +++ b/packages/@aws-cdk/aws-dms/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-docdb/package.json b/packages/@aws-cdk/aws-docdb/package.json index 0f9f169de563b..de01ca0c4210d 100644 --- a/packages/@aws-cdk/aws-docdb/package.json +++ b/packages/@aws-cdk/aws-docdb/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-dynamodb-global/package.json b/packages/@aws-cdk/aws-dynamodb-global/package.json index 72f47998d511a..59a43c7049e14 100644 --- a/packages/@aws-cdk/aws-dynamodb-global/package.json +++ b/packages/@aws-cdk/aws-dynamodb-global/package.json @@ -86,7 +86,7 @@ "rosetta:extract": "yarn --silent jsii-rosetta extract" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/@aws-cdk/aws-dynamodb/package.json b/packages/@aws-cdk/aws-dynamodb/package.json index ecd6ab4228f71..3f1c7736df002 100644 --- a/packages/@aws-cdk/aws-dynamodb/package.json +++ b/packages/@aws-cdk/aws-dynamodb/package.json @@ -106,7 +106,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-ec2/package.json b/packages/@aws-cdk/aws-ec2/package.json index 7c9236bca537f..126b8601b69ef 100644 --- a/packages/@aws-cdk/aws-ec2/package.json +++ b/packages/@aws-cdk/aws-ec2/package.json @@ -110,7 +110,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecr-assets/package.json b/packages/@aws-cdk/aws-ecr-assets/package.json index db44955bbfced..163c79c8b8686 100644 --- a/packages/@aws-cdk/aws-ecr-assets/package.json +++ b/packages/@aws-cdk/aws-ecr-assets/package.json @@ -98,7 +98,7 @@ "statements": 70 }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "bundledDependencies": [ "minimatch" diff --git a/packages/@aws-cdk/aws-ecr/package.json b/packages/@aws-cdk/aws-ecr/package.json index 37829b9028088..dc0e7a8ab726c 100644 --- a/packages/@aws-cdk/aws-ecr/package.json +++ b/packages/@aws-cdk/aws-ecr/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ecs-patterns/package.json b/packages/@aws-cdk/aws-ecs-patterns/package.json index d405e427dbf66..80cdd2423f2a0 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/package.json +++ b/packages/@aws-cdk/aws-ecs-patterns/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index 955b99708fadb..2a54d6fe12560 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -140,7 +140,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-efs/package.json b/packages/@aws-cdk/aws-efs/package.json index f76dcd0dcdbb1..5a0636452e278 100644 --- a/packages/@aws-cdk/aws-efs/package.json +++ b/packages/@aws-cdk/aws-efs/package.json @@ -96,7 +96,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks-legacy/package.json b/packages/@aws-cdk/aws-eks-legacy/package.json index 6b61d3fbc939b..a86e9e27fc26a 100644 --- a/packages/@aws-cdk/aws-eks-legacy/package.json +++ b/packages/@aws-cdk/aws-eks-legacy/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eks/package.json b/packages/@aws-cdk/aws-eks/package.json index fa153c9a5ca41..af2bc9cd72de3 100644 --- a/packages/@aws-cdk/aws-eks/package.json +++ b/packages/@aws-cdk/aws-eks/package.json @@ -116,7 +116,7 @@ "@aws-cdk/lambda-layer-kubectl": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-elasticache/package.json b/packages/@aws-cdk/aws-elasticache/package.json index 2eab5fbe9e54d..9801b2f50f29e 100644 --- a/packages/@aws-cdk/aws-elasticache/package.json +++ b/packages/@aws-cdk/aws-elasticache/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-elasticbeanstalk/package.json b/packages/@aws-cdk/aws-elasticbeanstalk/package.json index f0d01745947f5..77b820a13f556 100644 --- a/packages/@aws-cdk/aws-elasticbeanstalk/package.json +++ b/packages/@aws-cdk/aws-elasticbeanstalk/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-elasticloadbalancing/package.json b/packages/@aws-cdk/aws-elasticloadbalancing/package.json index cfc21a231f48f..ded95c3017e17 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancing/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancing/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "nyc": { "statements": 75 diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json index f5ed0c88ae213..7818a8ee167fc 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json index b4a00d13da773..1966dd3453634 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-targets/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json index 5bad4c9430949..d51e6fc983b0c 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/package.json @@ -106,7 +106,7 @@ "@aws-cdk/region-info": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-elasticsearch/package.json b/packages/@aws-cdk/aws-elasticsearch/package.json index d6d2242716f6e..d2b2eac0175ba 100644 --- a/packages/@aws-cdk/aws-elasticsearch/package.json +++ b/packages/@aws-cdk/aws-elasticsearch/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-emr/package.json b/packages/@aws-cdk/aws-emr/package.json index 8d4c378e43bae..7143c322f45b9 100644 --- a/packages/@aws-cdk/aws-emr/package.json +++ b/packages/@aws-cdk/aws-emr/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-emrcontainers/package.json b/packages/@aws-cdk/aws-emrcontainers/package.json index 5bf3817324da5..ca6fbd263e800 100644 --- a/packages/@aws-cdk/aws-emrcontainers/package.json +++ b/packages/@aws-cdk/aws-emrcontainers/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-events-targets/package.json b/packages/@aws-cdk/aws-events-targets/package.json index 5d1368c03625f..778ce17f8cfb5 100644 --- a/packages/@aws-cdk/aws-events-targets/package.json +++ b/packages/@aws-cdk/aws-events-targets/package.json @@ -124,7 +124,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-events/package.json b/packages/@aws-cdk/aws-events/package.json index c420b04af8c7d..58d2f6efe1e6c 100644 --- a/packages/@aws-cdk/aws-events/package.json +++ b/packages/@aws-cdk/aws-events/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-eventschemas/package.json b/packages/@aws-cdk/aws-eventschemas/package.json index 3bfa490e66486..c76fbe1989da6 100644 --- a/packages/@aws-cdk/aws-eventschemas/package.json +++ b/packages/@aws-cdk/aws-eventschemas/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-fms/package.json b/packages/@aws-cdk/aws-fms/package.json index e21e1a4a30945..8b42809713070 100644 --- a/packages/@aws-cdk/aws-fms/package.json +++ b/packages/@aws-cdk/aws-fms/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-fsx/package.json b/packages/@aws-cdk/aws-fsx/package.json index ff449e45a8fa4..d4ab5689a4939 100644 --- a/packages/@aws-cdk/aws-fsx/package.json +++ b/packages/@aws-cdk/aws-fsx/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-gamelift/package.json b/packages/@aws-cdk/aws-gamelift/package.json index 96ad07d0d1d93..82cb403901927 100644 --- a/packages/@aws-cdk/aws-gamelift/package.json +++ b/packages/@aws-cdk/aws-gamelift/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-globalaccelerator/package.json b/packages/@aws-cdk/aws-globalaccelerator/package.json index 00796b69ce7e4..71d49974816d0 100644 --- a/packages/@aws-cdk/aws-globalaccelerator/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator/package.json @@ -94,7 +94,7 @@ "@aws-cdk/custom-resources": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-glue/package.json b/packages/@aws-cdk/aws-glue/package.json index 614dae9d2ede0..6b711ce29f8e4 100644 --- a/packages/@aws-cdk/aws-glue/package.json +++ b/packages/@aws-cdk/aws-glue/package.json @@ -96,7 +96,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-greengrass/package.json b/packages/@aws-cdk/aws-greengrass/package.json index aae5944b4f90f..dee8f487d21eb 100644 --- a/packages/@aws-cdk/aws-greengrass/package.json +++ b/packages/@aws-cdk/aws-greengrass/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-greengrassv2/package.json b/packages/@aws-cdk/aws-greengrassv2/package.json index 15c8909821e1d..765723c28bcd0 100644 --- a/packages/@aws-cdk/aws-greengrassv2/package.json +++ b/packages/@aws-cdk/aws-greengrassv2/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-guardduty/package.json b/packages/@aws-cdk/aws-guardduty/package.json index 31db532ae30c0..2b940e93c0391 100644 --- a/packages/@aws-cdk/aws-guardduty/package.json +++ b/packages/@aws-cdk/aws-guardduty/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iam/package.json b/packages/@aws-cdk/aws-iam/package.json index ae7ef9a9c8cd3..226aeec45f47b 100644 --- a/packages/@aws-cdk/aws-iam/package.json +++ b/packages/@aws-cdk/aws-iam/package.json @@ -99,7 +99,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-imagebuilder/package.json b/packages/@aws-cdk/aws-imagebuilder/package.json index 068dc0cd69248..951b0a24fa870 100644 --- a/packages/@aws-cdk/aws-imagebuilder/package.json +++ b/packages/@aws-cdk/aws-imagebuilder/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-inspector/package.json b/packages/@aws-cdk/aws-inspector/package.json index 49fd9a055613e..407dfa9cf7f47 100644 --- a/packages/@aws-cdk/aws-inspector/package.json +++ b/packages/@aws-cdk/aws-inspector/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iot/package.json b/packages/@aws-cdk/aws-iot/package.json index c7d28597df5e2..ec001e17d8682 100644 --- a/packages/@aws-cdk/aws-iot/package.json +++ b/packages/@aws-cdk/aws-iot/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iot1click/package.json b/packages/@aws-cdk/aws-iot1click/package.json index 4e58c132bb289..94d0d3594cc96 100644 --- a/packages/@aws-cdk/aws-iot1click/package.json +++ b/packages/@aws-cdk/aws-iot1click/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotanalytics/package.json b/packages/@aws-cdk/aws-iotanalytics/package.json index eacef171db5dd..d1324a328583d 100644 --- a/packages/@aws-cdk/aws-iotanalytics/package.json +++ b/packages/@aws-cdk/aws-iotanalytics/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotevents/package.json b/packages/@aws-cdk/aws-iotevents/package.json index aa6560d63b396..2a85edd8014b7 100644 --- a/packages/@aws-cdk/aws-iotevents/package.json +++ b/packages/@aws-cdk/aws-iotevents/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotsitewise/package.json b/packages/@aws-cdk/aws-iotsitewise/package.json index 3317b008fcb30..25d5d7823ae4b 100644 --- a/packages/@aws-cdk/aws-iotsitewise/package.json +++ b/packages/@aws-cdk/aws-iotsitewise/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotthingsgraph/package.json b/packages/@aws-cdk/aws-iotthingsgraph/package.json index eafbe46f058fc..21f8afdfcf914 100644 --- a/packages/@aws-cdk/aws-iotthingsgraph/package.json +++ b/packages/@aws-cdk/aws-iotthingsgraph/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-iotwireless/package.json b/packages/@aws-cdk/aws-iotwireless/package.json index f8a67f7c23edc..835fbc3b163e6 100644 --- a/packages/@aws-cdk/aws-iotwireless/package.json +++ b/packages/@aws-cdk/aws-iotwireless/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ivs/package.json b/packages/@aws-cdk/aws-ivs/package.json index c4774b89f2255..a5b099868a67e 100644 --- a/packages/@aws-cdk/aws-ivs/package.json +++ b/packages/@aws-cdk/aws-ivs/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-kendra/package.json b/packages/@aws-cdk/aws-kendra/package.json index 6b60a78a3a5eb..3e642fbdbaa72 100644 --- a/packages/@aws-cdk/aws-kendra/package.json +++ b/packages/@aws-cdk/aws-kendra/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kinesis/package.json b/packages/@aws-cdk/aws-kinesis/package.json index 1439e90a4f5cc..1a2f7a2d52229 100644 --- a/packages/@aws-cdk/aws-kinesis/package.json +++ b/packages/@aws-cdk/aws-kinesis/package.json @@ -94,7 +94,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-kinesisanalytics/package.json b/packages/@aws-cdk/aws-kinesisanalytics/package.json index 116373d746888..6673755a43c49 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kinesisfirehose/package.json b/packages/@aws-cdk/aws-kinesisfirehose/package.json index 0c751144bb7d2..2bf2fec318ecc 100644 --- a/packages/@aws-cdk/aws-kinesisfirehose/package.json +++ b/packages/@aws-cdk/aws-kinesisfirehose/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-kms/package.json b/packages/@aws-cdk/aws-kms/package.json index c1a6a611bb0e7..17fee556bf4be 100644 --- a/packages/@aws-cdk/aws-kms/package.json +++ b/packages/@aws-cdk/aws-kms/package.json @@ -92,7 +92,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-lakeformation/package.json b/packages/@aws-cdk/aws-lakeformation/package.json index 99f8456448a82..3e77687169dfe 100644 --- a/packages/@aws-cdk/aws-lakeformation/package.json +++ b/packages/@aws-cdk/aws-lakeformation/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-lambda-destinations/package.json b/packages/@aws-cdk/aws-lambda-destinations/package.json index ff7ba733ee81b..8ca51e5a952a1 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/package.json +++ b/packages/@aws-cdk/aws-lambda-destinations/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index 2d9249e9b1bab..d59ad41fa5069 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -102,7 +102,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index 064cf5813ee82..7231cd7229fc6 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -83,7 +83,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-lambda-python/package.json b/packages/@aws-cdk/aws-lambda-python/package.json index 4ec6d719a941c..7cdfdb99696b8 100644 --- a/packages/@aws-cdk/aws-lambda-python/package.json +++ b/packages/@aws-cdk/aws-lambda-python/package.json @@ -82,7 +82,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-lambda/package.json b/packages/@aws-cdk/aws-lambda/package.json index 50905755d53c9..0d3cfb1e4f9c5 100644 --- a/packages/@aws-cdk/aws-lambda/package.json +++ b/packages/@aws-cdk/aws-lambda/package.json @@ -126,7 +126,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-licensemanager/package.json b/packages/@aws-cdk/aws-licensemanager/package.json index 8102f39b1f79e..24a9ac33c4aed 100644 --- a/packages/@aws-cdk/aws-licensemanager/package.json +++ b/packages/@aws-cdk/aws-licensemanager/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-logs-destinations/package.json b/packages/@aws-cdk/aws-logs-destinations/package.json index f8308609ec18a..4c53814baf581 100644 --- a/packages/@aws-cdk/aws-logs-destinations/package.json +++ b/packages/@aws-cdk/aws-logs-destinations/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-logs/package.json b/packages/@aws-cdk/aws-logs/package.json index b16f27059db1f..bbec1e0e4559b 100644 --- a/packages/@aws-cdk/aws-logs/package.json +++ b/packages/@aws-cdk/aws-logs/package.json @@ -101,7 +101,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-macie/package.json b/packages/@aws-cdk/aws-macie/package.json index 5a13be8e698ad..18b2b58ad2ef2 100644 --- a/packages/@aws-cdk/aws-macie/package.json +++ b/packages/@aws-cdk/aws-macie/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-managedblockchain/package.json b/packages/@aws-cdk/aws-managedblockchain/package.json index 30e4740828ea1..84f6e4a4b4ef1 100644 --- a/packages/@aws-cdk/aws-managedblockchain/package.json +++ b/packages/@aws-cdk/aws-managedblockchain/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediaconnect/package.json b/packages/@aws-cdk/aws-mediaconnect/package.json index 8454703619405..0cb389d60daa3 100644 --- a/packages/@aws-cdk/aws-mediaconnect/package.json +++ b/packages/@aws-cdk/aws-mediaconnect/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediaconvert/package.json b/packages/@aws-cdk/aws-mediaconvert/package.json index 3314753f03a9d..c288f6fb1a4da 100644 --- a/packages/@aws-cdk/aws-mediaconvert/package.json +++ b/packages/@aws-cdk/aws-mediaconvert/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-medialive/package.json b/packages/@aws-cdk/aws-medialive/package.json index ad9e322d125b9..cba350854629e 100644 --- a/packages/@aws-cdk/aws-medialive/package.json +++ b/packages/@aws-cdk/aws-medialive/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediapackage/package.json b/packages/@aws-cdk/aws-mediapackage/package.json index c301bd6e205b1..da0ccd69cf8fe 100644 --- a/packages/@aws-cdk/aws-mediapackage/package.json +++ b/packages/@aws-cdk/aws-mediapackage/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mediastore/package.json b/packages/@aws-cdk/aws-mediastore/package.json index 8c92d4a5b1919..a59cbae647e2e 100644 --- a/packages/@aws-cdk/aws-mediastore/package.json +++ b/packages/@aws-cdk/aws-mediastore/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-msk/package.json b/packages/@aws-cdk/aws-msk/package.json index 9acbd75ae962b..fefeda92c8468 100644 --- a/packages/@aws-cdk/aws-msk/package.json +++ b/packages/@aws-cdk/aws-msk/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-mwaa/package.json b/packages/@aws-cdk/aws-mwaa/package.json index d5cb9f621a410..ce4ea148bf584 100644 --- a/packages/@aws-cdk/aws-mwaa/package.json +++ b/packages/@aws-cdk/aws-mwaa/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-neptune/package.json b/packages/@aws-cdk/aws-neptune/package.json index d16ca838795d7..a2d598ff4388a 100644 --- a/packages/@aws-cdk/aws-neptune/package.json +++ b/packages/@aws-cdk/aws-neptune/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-networkfirewall/package.json b/packages/@aws-cdk/aws-networkfirewall/package.json index 5b38fb32f6f92..506d9015ae9e5 100644 --- a/packages/@aws-cdk/aws-networkfirewall/package.json +++ b/packages/@aws-cdk/aws-networkfirewall/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-networkmanager/package.json b/packages/@aws-cdk/aws-networkmanager/package.json index 91dbafa6f3fed..8180652147ef1 100644 --- a/packages/@aws-cdk/aws-networkmanager/package.json +++ b/packages/@aws-cdk/aws-networkmanager/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-opsworks/package.json b/packages/@aws-cdk/aws-opsworks/package.json index 1163c863f0b21..a96838c1e9b96 100644 --- a/packages/@aws-cdk/aws-opsworks/package.json +++ b/packages/@aws-cdk/aws-opsworks/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-opsworkscm/package.json b/packages/@aws-cdk/aws-opsworkscm/package.json index 95b2015cec29c..6caab0adc2637 100644 --- a/packages/@aws-cdk/aws-opsworkscm/package.json +++ b/packages/@aws-cdk/aws-opsworkscm/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-pinpoint/package.json b/packages/@aws-cdk/aws-pinpoint/package.json index 26c570d1ea0b4..ce08ad86140f6 100644 --- a/packages/@aws-cdk/aws-pinpoint/package.json +++ b/packages/@aws-cdk/aws-pinpoint/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-pinpointemail/package.json b/packages/@aws-cdk/aws-pinpointemail/package.json index f28571a0951f5..990e88cdce663 100644 --- a/packages/@aws-cdk/aws-pinpointemail/package.json +++ b/packages/@aws-cdk/aws-pinpointemail/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-qldb/package.json b/packages/@aws-cdk/aws-qldb/package.json index 601022b4d7122..5465b0d2f6647 100644 --- a/packages/@aws-cdk/aws-qldb/package.json +++ b/packages/@aws-cdk/aws-qldb/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-quicksight/package.json b/packages/@aws-cdk/aws-quicksight/package.json index a7feba1902483..31c633ae3fe33 100644 --- a/packages/@aws-cdk/aws-quicksight/package.json +++ b/packages/@aws-cdk/aws-quicksight/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-ram/package.json b/packages/@aws-cdk/aws-ram/package.json index c1822ec9d12dc..866e98617f473 100644 --- a/packages/@aws-cdk/aws-ram/package.json +++ b/packages/@aws-cdk/aws-ram/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-rds/package.json b/packages/@aws-cdk/aws-rds/package.json index 23c255d6ee10f..1f6516c3a1d98 100644 --- a/packages/@aws-cdk/aws-rds/package.json +++ b/packages/@aws-cdk/aws-rds/package.json @@ -107,7 +107,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-redshift/package.json b/packages/@aws-cdk/aws-redshift/package.json index 7098f443e2e19..0ddcc8054a28a 100644 --- a/packages/@aws-cdk/aws-redshift/package.json +++ b/packages/@aws-cdk/aws-redshift/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-resourcegroups/package.json b/packages/@aws-cdk/aws-resourcegroups/package.json index e6443a152799c..b6f2de8b8518a 100644 --- a/packages/@aws-cdk/aws-resourcegroups/package.json +++ b/packages/@aws-cdk/aws-resourcegroups/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-robomaker/package.json b/packages/@aws-cdk/aws-robomaker/package.json index e1eedffdc7d83..723f83e0a6cad 100644 --- a/packages/@aws-cdk/aws-robomaker/package.json +++ b/packages/@aws-cdk/aws-robomaker/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-route53-patterns/package.json b/packages/@aws-cdk/aws-route53-patterns/package.json index f824507e25850..750b7b3325307 100644 --- a/packages/@aws-cdk/aws-route53-patterns/package.json +++ b/packages/@aws-cdk/aws-route53-patterns/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-route53-targets/package.json b/packages/@aws-cdk/aws-route53-targets/package.json index 105502d8e5f88..e83b4eb227f31 100644 --- a/packages/@aws-cdk/aws-route53-targets/package.json +++ b/packages/@aws-cdk/aws-route53-targets/package.json @@ -104,7 +104,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-route53/package.json b/packages/@aws-cdk/aws-route53/package.json index 4aaa6b5f8a5a9..a9d0ff24a2b82 100644 --- a/packages/@aws-cdk/aws-route53/package.json +++ b/packages/@aws-cdk/aws-route53/package.json @@ -99,7 +99,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-route53resolver/package.json b/packages/@aws-cdk/aws-route53resolver/package.json index ce88c77a668ae..55d5c95c22ca4 100644 --- a/packages/@aws-cdk/aws-route53resolver/package.json +++ b/packages/@aws-cdk/aws-route53resolver/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-s3-assets/package.json b/packages/@aws-cdk/aws-s3-assets/package.json index d22968e67ae1b..ecbabf5e52236 100644 --- a/packages/@aws-cdk/aws-s3-assets/package.json +++ b/packages/@aws-cdk/aws-s3-assets/package.json @@ -96,7 +96,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-s3-deployment/package.json b/packages/@aws-cdk/aws-s3-deployment/package.json index 66446dc18593e..c6209b3969b8a 100644 --- a/packages/@aws-cdk/aws-s3-deployment/package.json +++ b/packages/@aws-cdk/aws-s3-deployment/package.json @@ -109,7 +109,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-s3-notifications/package.json b/packages/@aws-cdk/aws-s3-notifications/package.json index c8b6b4e54a649..3f8302bcde05f 100644 --- a/packages/@aws-cdk/aws-s3-notifications/package.json +++ b/packages/@aws-cdk/aws-s3-notifications/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-s3/package.json b/packages/@aws-cdk/aws-s3/package.json index b4d5e13044e23..59909c98cc2f0 100644 --- a/packages/@aws-cdk/aws-s3/package.json +++ b/packages/@aws-cdk/aws-s3/package.json @@ -97,7 +97,7 @@ "@aws-cdk/cx-api": "0.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json index f6071775322e4..38e03a8c3d019 100644 --- a/packages/@aws-cdk/aws-sagemaker/package.json +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sam/package.json b/packages/@aws-cdk/aws-sam/package.json index 4ca5787daf969..3053e41565903 100644 --- a/packages/@aws-cdk/aws-sam/package.json +++ b/packages/@aws-cdk/aws-sam/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sdb/package.json b/packages/@aws-cdk/aws-sdb/package.json index 6da92a2f22935..c7b10eb233809 100644 --- a/packages/@aws-cdk/aws-sdb/package.json +++ b/packages/@aws-cdk/aws-sdb/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-secretsmanager/package.json b/packages/@aws-cdk/aws-secretsmanager/package.json index e1af5308d9270..5a5e52bf42240 100644 --- a/packages/@aws-cdk/aws-secretsmanager/package.json +++ b/packages/@aws-cdk/aws-secretsmanager/package.json @@ -100,7 +100,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-securityhub/package.json b/packages/@aws-cdk/aws-securityhub/package.json index de4e2f4a9f29a..ec84e909a2f59 100644 --- a/packages/@aws-cdk/aws-securityhub/package.json +++ b/packages/@aws-cdk/aws-securityhub/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicecatalog/package.json b/packages/@aws-cdk/aws-servicecatalog/package.json index 4ce3e492d8aa3..6ab15dc8d9061 100644 --- a/packages/@aws-cdk/aws-servicecatalog/package.json +++ b/packages/@aws-cdk/aws-servicecatalog/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicecatalogappregistry/package.json b/packages/@aws-cdk/aws-servicecatalogappregistry/package.json index 5f8c0db2bd46a..6c90f583b1667 100644 --- a/packages/@aws-cdk/aws-servicecatalogappregistry/package.json +++ b/packages/@aws-cdk/aws-servicecatalogappregistry/package.json @@ -89,7 +89,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-servicediscovery/package.json b/packages/@aws-cdk/aws-servicediscovery/package.json index 415cf64c75e1b..b4d7e5c8191da 100644 --- a/packages/@aws-cdk/aws-servicediscovery/package.json +++ b/packages/@aws-cdk/aws-servicediscovery/package.json @@ -98,7 +98,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ses-actions/package.json b/packages/@aws-cdk/aws-ses-actions/package.json index e21c4a8b48d5a..777ee1accd61e 100644 --- a/packages/@aws-cdk/aws-ses-actions/package.json +++ b/packages/@aws-cdk/aws-ses-actions/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-ses/package.json b/packages/@aws-cdk/aws-ses/package.json index dc814098c4d96..4ec82adc83f29 100644 --- a/packages/@aws-cdk/aws-ses/package.json +++ b/packages/@aws-cdk/aws-ses/package.json @@ -93,7 +93,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/aws-signer/package.json b/packages/@aws-cdk/aws-signer/package.json index 0655322263295..de3afa32d076e 100644 --- a/packages/@aws-cdk/aws-signer/package.json +++ b/packages/@aws-cdk/aws-signer/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/package.json b/packages/@aws-cdk/aws-sns-subscriptions/package.json index 8e90df0d62d69..da4e30c3664a2 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/package.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-sns/package.json b/packages/@aws-cdk/aws-sns/package.json index c1d3fa326613c..5c678f5c086ca 100644 --- a/packages/@aws-cdk/aws-sns/package.json +++ b/packages/@aws-cdk/aws-sns/package.json @@ -103,7 +103,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-sqs/package.json b/packages/@aws-cdk/aws-sqs/package.json index 4e62b1689c387..bff1a540712da 100644 --- a/packages/@aws-cdk/aws-sqs/package.json +++ b/packages/@aws-cdk/aws-sqs/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-ssm/package.json b/packages/@aws-cdk/aws-ssm/package.json index 5c298a984ea8c..35eba4f543e45 100644 --- a/packages/@aws-cdk/aws-ssm/package.json +++ b/packages/@aws-cdk/aws-ssm/package.json @@ -95,7 +95,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/aws-sso/package.json b/packages/@aws-cdk/aws-sso/package.json index ab0127cab57c1..43d4c753c8f75 100644 --- a/packages/@aws-cdk/aws-sso/package.json +++ b/packages/@aws-cdk/aws-sso/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 8e093ded8ac9a..97192b08c4079 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -116,7 +116,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable", diff --git a/packages/@aws-cdk/aws-stepfunctions/package.json b/packages/@aws-cdk/aws-stepfunctions/package.json index 1c1837392f75e..0d08720cba318 100644 --- a/packages/@aws-cdk/aws-stepfunctions/package.json +++ b/packages/@aws-cdk/aws-stepfunctions/package.json @@ -96,7 +96,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/aws-synthetics/package.json b/packages/@aws-cdk/aws-synthetics/package.json index a3a66163af86f..f92b7b66348df 100644 --- a/packages/@aws-cdk/aws-synthetics/package.json +++ b/packages/@aws-cdk/aws-synthetics/package.json @@ -97,7 +97,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "developer-preview", diff --git a/packages/@aws-cdk/aws-timestream/package.json b/packages/@aws-cdk/aws-timestream/package.json index dc462c28f6364..16c95ee0252b4 100644 --- a/packages/@aws-cdk/aws-timestream/package.json +++ b/packages/@aws-cdk/aws-timestream/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-transfer/package.json b/packages/@aws-cdk/aws-transfer/package.json index 0ad085830d07f..59371497560df 100644 --- a/packages/@aws-cdk/aws-transfer/package.json +++ b/packages/@aws-cdk/aws-transfer/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-waf/package.json b/packages/@aws-cdk/aws-waf/package.json index 91c2e194a907b..b01702dbffb3b 100644 --- a/packages/@aws-cdk/aws-waf/package.json +++ b/packages/@aws-cdk/aws-waf/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-wafregional/package.json b/packages/@aws-cdk/aws-wafregional/package.json index 5cad8baa809c4..980378e308b44 100644 --- a/packages/@aws-cdk/aws-wafregional/package.json +++ b/packages/@aws-cdk/aws-wafregional/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-wafv2/package.json b/packages/@aws-cdk/aws-wafv2/package.json index 123b2d42161de..56157173e2586 100644 --- a/packages/@aws-cdk/aws-wafv2/package.json +++ b/packages/@aws-cdk/aws-wafv2/package.json @@ -88,7 +88,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/aws-workspaces/package.json b/packages/@aws-cdk/aws-workspaces/package.json index 1ee1fda60cd6f..7af5c40405d2b 100644 --- a/packages/@aws-cdk/aws-workspaces/package.json +++ b/packages/@aws-cdk/aws-workspaces/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "cfn-only", diff --git a/packages/@aws-cdk/cdk-assets-schema/package.json b/packages/@aws-cdk/cdk-assets-schema/package.json index c9bebfa652197..8461f0bb11a3b 100644 --- a/packages/@aws-cdk/cdk-assets-schema/package.json +++ b/packages/@aws-cdk/cdk-assets-schema/package.json @@ -67,7 +67,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "deprecated", "awscdkio": { diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index fb0fbfcca27dc..39c0254c1cc5d 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -81,7 +81,7 @@ "semver" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 3131e6e0ed34c..089a802613048 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -49,7 +49,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/cloudformation-include/package.json b/packages/@aws-cdk/cloudformation-include/package.json index 69a61f710c258..c50c31aaf495e 100644 --- a/packages/@aws-cdk/cloudformation-include/package.json +++ b/packages/@aws-cdk/cloudformation-include/package.json @@ -381,7 +381,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "awslint": { "exclude": [ diff --git a/packages/@aws-cdk/core/package.json b/packages/@aws-cdk/core/package.json index bf30a73513da4..8f7c0edee7e73 100644 --- a/packages/@aws-cdk/core/package.json +++ b/packages/@aws-cdk/core/package.json @@ -212,7 +212,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awscdkio": { diff --git a/packages/@aws-cdk/custom-resources/package.json b/packages/@aws-cdk/custom-resources/package.json index 61a01a7bfe2dc..5e929367364bb 100644 --- a/packages/@aws-cdk/custom-resources/package.json +++ b/packages/@aws-cdk/custom-resources/package.json @@ -111,7 +111,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "awslint": { diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index f8cddda9212ad..62e692fd08012 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -86,7 +86,7 @@ "semver" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/example-construct-library/package.json b/packages/@aws-cdk/example-construct-library/package.json index c0fe5d05c36e6..2564a467bf1a4 100644 --- a/packages/@aws-cdk/example-construct-library/package.json +++ b/packages/@aws-cdk/example-construct-library/package.json @@ -90,7 +90,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/lambda-layer-awscli/package.json b/packages/@aws-cdk/lambda-layer-awscli/package.json index 562a7b121ed32..8094c2ca77f0c 100644 --- a/packages/@aws-cdk/lambda-layer-awscli/package.json +++ b/packages/@aws-cdk/lambda-layer-awscli/package.json @@ -81,7 +81,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/lambda-layer-kubectl/package.json b/packages/@aws-cdk/lambda-layer-kubectl/package.json index 554e8bb21884a..91122d2e1b245 100644 --- a/packages/@aws-cdk/lambda-layer-kubectl/package.json +++ b/packages/@aws-cdk/lambda-layer-kubectl/package.json @@ -87,7 +87,7 @@ "constructs": "10.0.0-pre.5" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/pipelines/package.json b/packages/@aws-cdk/pipelines/package.json index e753d2feaee40..43d38973c9184 100644 --- a/packages/@aws-cdk/pipelines/package.json +++ b/packages/@aws-cdk/pipelines/package.json @@ -77,7 +77,7 @@ "delivery" ], "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "license": "Apache-2.0", "stability": "experimental", diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index 775d849dff789..72ffe996d0060 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -70,7 +70,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index 0a6e877bcd396..a6ba44bac701b 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -80,7 +80,7 @@ "jest": true }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "experimental", "maturity": "experimental", diff --git a/packages/@monocdk-experiment/rewrite-imports/package.json b/packages/@monocdk-experiment/rewrite-imports/package.json index a7f23424a8fc1..0b617bce4cede 100644 --- a/packages/@monocdk-experiment/rewrite-imports/package.json +++ b/packages/@monocdk-experiment/rewrite-imports/package.json @@ -52,6 +52,6 @@ "stability": "experimental", "maturity": "developer-preview", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" } } diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 51d3cc2d330da..0985d8419c32e 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -292,7 +292,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "keywords": [ "aws", diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index 77c2ae6226020..96a5a146bd676 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -103,7 +103,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "stability": "stable", "maturity": "stable" diff --git a/packages/awslint/package.json b/packages/awslint/package.json index f44868acdc105..191a3bd6e24c2 100644 --- a/packages/awslint/package.json +++ b/packages/awslint/package.json @@ -48,6 +48,6 @@ "maturity": "developer-preview", "stability": "experimental", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" } } diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 57be9466a645c..ba54b8625f279 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -62,7 +62,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "cdk-package": { "shrinkWrap": true diff --git a/packages/monocdk/package.json b/packages/monocdk/package.json index 6d102723be185..cb2edbd3be5d6 100644 --- a/packages/monocdk/package.json +++ b/packages/monocdk/package.json @@ -300,7 +300,7 @@ }, "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "keywords": [ "aws", diff --git a/tools/cdk-build-tools/package.json b/tools/cdk-build-tools/package.json index a29d06416daa9..f94236d05bc66 100644 --- a/tools/cdk-build-tools/package.json +++ b/tools/cdk-build-tools/package.json @@ -68,7 +68,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/cdk-integ-tools/package.json b/tools/cdk-integ-tools/package.json index 6e56c803b17df..e1eb7d6946a65 100644 --- a/tools/cdk-integ-tools/package.json +++ b/tools/cdk-integ-tools/package.json @@ -48,7 +48,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "peerDependencies": { "@aws-cdk/assert": "0.0.0" diff --git a/tools/cfn2ts/package.json b/tools/cfn2ts/package.json index f071ffcd543a9..c97edb5b5d470 100644 --- a/tools/cfn2ts/package.json +++ b/tools/cfn2ts/package.json @@ -49,7 +49,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/pkgtools/package.json b/tools/pkgtools/package.json index 2b42b4c67b0a2..556178ccfd165 100644 --- a/tools/pkgtools/package.json +++ b/tools/pkgtools/package.json @@ -44,7 +44,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/ubergen/package.json b/tools/ubergen/package.json index 706a57ac61770..bac96b9391693 100644 --- a/tools/ubergen/package.json +++ b/tools/ubergen/package.json @@ -41,7 +41,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true diff --git a/tools/yarn-cling/package.json b/tools/yarn-cling/package.json index 394249cf7b13a..421d3314e0400 100644 --- a/tools/yarn-cling/package.json +++ b/tools/yarn-cling/package.json @@ -54,7 +54,7 @@ ], "homepage": "https://github.com/aws/aws-cdk", "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0 <13 || >=13.7.0" }, "ubergen": { "exclude": true From 35a8525fdd7cec6967f69cb0bc98170a8ef01e43 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 27 Jan 2021 11:33:45 +0200 Subject: [PATCH 040/304] chore(release): 2.0.0-alpha.2 (#12722) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.2/CHANGELOG.md) --- CHANGELOG.v2.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index ba5d5bb9c8e25..806598ac178d3 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,50 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.2](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2021-01-27) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **s3-deployment:** User metadata keys of bucket objects will change from `x-amz-meta-x-amz-meta-x-amzn-meta-mykey` to `x-amz-meta-mykey`. +* **core:** users of modern synthesis (`DefaultSynthesizer`, +used by CDK Pipelines) must upgrade their bootstrap stacks. Run `cdk bootstrap`. + +### Features + +* **aws-codepipeline-actions:** Add Full Clone support for CodeCommit ([#12558](https://github.com/aws/aws-cdk/issues/12558)) ([d169688](https://github.com/aws/aws-cdk/commit/d169688f35bc78c88c44ff9a7d8fa0dfea71f904)), closes [#12236](https://github.com/aws/aws-cdk/issues/12236) +* **eks:** Graduate to stable ([#12640](https://github.com/aws/aws-cdk/issues/12640)) ([b5ba7cd](https://github.com/aws/aws-cdk/commit/b5ba7cdd61714bcfbf2135240790340a77ee1a8b)) +* **stepfunctions-tasks:** EcsRunTask now uses taskDefinition family instead of ARN ([#12436](https://github.com/aws/aws-cdk/issues/12436)) ([abde96b](https://github.com/aws/aws-cdk/commit/abde96b046358fc5435545692eba4fd63d503914)), closes [#12080](https://github.com/aws/aws-cdk/issues/12080) +* **stepfunctions-tasks:** support databrew startJobRun task ([#12532](https://github.com/aws/aws-cdk/issues/12532)) ([eacd2f7](https://github.com/aws/aws-cdk/commit/eacd2f7ea67c83d50c839acf29fbe953ae49d987)) + + +### Bug Fixes + +* **apigatewayv2:** multiple http integrations are created for each route ([#12528](https://github.com/aws/aws-cdk/issues/12528)) ([855ce59](https://github.com/aws/aws-cdk/commit/855ce59039a577d142d68720e86d81610edffc64)), closes [40aws-cdk/aws-apigatewayv2/lib/http/route.ts#L128](https://github.com/40aws-cdk/aws-apigatewayv2/lib/http/route.ts/issues/L128) +* **core:** modern deployments fail if bootstrap stack is renamed ([#12594](https://github.com/aws/aws-cdk/issues/12594)) ([e5c616f](https://github.com/aws/aws-cdk/commit/e5c616f73eac395492636341f57fb6a716d1ea69)), closes [#11952](https://github.com/aws/aws-cdk/issues/11952) [#11420](https://github.com/aws/aws-cdk/issues/11420) [#9053](https://github.com/aws/aws-cdk/issues/9053) +* **pipelines:** assets broken in Pipelines synthesized from Windows ([#12573](https://github.com/aws/aws-cdk/issues/12573)) ([5c3dce5](https://github.com/aws/aws-cdk/commit/5c3dce56c71083321069a31213aaa5bce40f51d3)), closes [#12540](https://github.com/aws/aws-cdk/issues/12540) +* **pipelines:** can't use CodePipeline variables in Synth environment variables ([#12602](https://github.com/aws/aws-cdk/issues/12602)) ([736b260](https://github.com/aws/aws-cdk/commit/736b260db7f21d89e220591007580f62b22fea3a)), closes [#12061](https://github.com/aws/aws-cdk/issues/12061) [#11178](https://github.com/aws/aws-cdk/issues/11178) +* **pipelines:** unable to publish assets inside VPC ([#12331](https://github.com/aws/aws-cdk/issues/12331)) ([a16f09c](https://github.com/aws/aws-cdk/commit/a16f09c9ea675caf5b1e50a4e1cc288e5afd1237)), closes [#11815](https://github.com/aws/aws-cdk/issues/11815) +* **s3-deployment:** User metadata keys have redundant triple `x-amz` prefix ([#12414](https://github.com/aws/aws-cdk/issues/12414)) ([6716181](https://github.com/aws/aws-cdk/commit/671618152dc585ef0703f6c3501f6ee5a366b4a9)), closes [#8459](https://github.com/aws/aws-cdk/issues/8459) +* **secretsmanager:** fromSecretPartialArn() has incorrect grant policies ([#12665](https://github.com/aws/aws-cdk/issues/12665)) ([560915e](https://github.com/aws/aws-cdk/commit/560915ece87a919f499a64452b919a0b291394ee)), closes [#12411](https://github.com/aws/aws-cdk/issues/12411) + +## [1.86.0](https://github.com/aws/aws-cdk/compare/v1.85.0...v1.86.0) (2021-01-21) + + +### Features + +* **cfnspec:** cloudformation spec v24.0.0 ([#12615](https://github.com/aws/aws-cdk/issues/12615)) ([98ebe96](https://github.com/aws/aws-cdk/commit/98ebe964fcd1f528fc4796bf39dc574b222b0014)), closes [#12474](https://github.com/aws/aws-cdk/issues/12474) +* **cognito:** allow to set read and write attributes in Cognito UserPoolClient ([#7607](https://github.com/aws/aws-cdk/issues/7607)) ([552e1e9](https://github.com/aws/aws-cdk/commit/552e1e9d649528875680a8a1cb2aad8f0a0ebcea)), closes [#7407](https://github.com/aws/aws-cdk/issues/7407) +* **ec2:** Support for new EBS types ([#12074](https://github.com/aws/aws-cdk/issues/12074)) ([6a2ce55](https://github.com/aws/aws-cdk/commit/6a2ce55e7213bb8356f2f37dbd02f1a3d52883be)), closes [#12071](https://github.com/aws/aws-cdk/issues/12071) +* **s3:** Bucket keys ([#12376](https://github.com/aws/aws-cdk/issues/12376)) ([d126fcc](https://github.com/aws/aws-cdk/commit/d126fcca685346c0607babfbbf4d341f669a9e81)), closes [#11828](https://github.com/aws/aws-cdk/issues/11828) + + +### Bug Fixes + +* **apigateway:** cannot remove first api key from usage plan ([#12505](https://github.com/aws/aws-cdk/issues/12505)) ([96cbe32](https://github.com/aws/aws-cdk/commit/96cbe32d2399d82a2ad6c3bf6dc1fd65396882d4)), closes [#11876](https://github.com/aws/aws-cdk/issues/11876) +* **aws-ecs:** Invalid user data defined for windows autoscaling groups ([#12585](https://github.com/aws/aws-cdk/issues/12585)) ([638b995](https://github.com/aws/aws-cdk/commit/638b995cb72b0819a1965a7ccf451b6ed9034a1b)), closes [#12583](https://github.com/aws/aws-cdk/issues/12583) +* **synthetics:** default execution role breaks in non aws partitions ([#12096](https://github.com/aws/aws-cdk/issues/12096)) ([c01272c](https://github.com/aws/aws-cdk/commit/c01272c14be9b7ff635281952f3cfeed971a352e)), closes [#12094](https://github.com/aws/aws-cdk/issues/12094) + ## [2.0.0-alpha.1](https://github.com/aws/aws-cdk/compare/v1.85.0...v2.0.0-alpha.1) (2021-01-21) diff --git a/version.v2.json b/version.v2.json index 4f378e5ab3afe..4ae5c8f0a1498 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.1" + "version": "2.0.0-alpha.2" } From 80057e11836adfc8eab04ebddf07855960475832 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 3 Feb 2021 11:32:28 +0200 Subject: [PATCH 041/304] chore(release): 2.0.0-alpha.3 (#12840) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.3/CHANGELOG.md) --- CHANGELOG.v2.md | 8 ++++++++ version.v2.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 806598ac178d3..f6d5c2c78d89a 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.3](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2021-02-03) + + +### Features + +* **aws-codebuild:** add `enableBatchBuilds()` to Project ([#12531](https://github.com/aws/aws-cdk/issues/12531)) ([0568390](https://github.com/aws/aws-cdk/commit/05683907d6ffc9ab12b6744c1b59b0df096789e1)) +* **batch:** Compute Resources placement group ([#12203](https://github.com/aws/aws-cdk/issues/12203)) ([fe37174](https://github.com/aws/aws-cdk/commit/fe37174ec29b7d3b60b252df08ceecf1aa057098)) + ## [2.0.0-alpha.2](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2021-01-27) diff --git a/version.v2.json b/version.v2.json index 4ae5c8f0a1498..eafe60eccc1a9 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.2" + "version": "2.0.0-alpha.3" } From c7e2dc60b5dabfe5e283930701dde07ed3600210 Mon Sep 17 00:00:00 2001 From: AWS CDK Team Date: Mon, 8 Feb 2021 09:07:16 +0000 Subject: [PATCH 042/304] automatic pkglint fixes --- packages/@aws-cdk/aws-lookoutvision/package.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk/aws-lookoutvision/package.json b/packages/@aws-cdk/aws-lookoutvision/package.json index 9f7d59fd4c321..af72da182c51f 100644 --- a/packages/@aws-cdk/aws-lookoutvision/package.json +++ b/packages/@aws-cdk/aws-lookoutvision/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" @@ -93,5 +95,6 @@ "maturity": "cfn-only", "awscdkio": { "announce": false - } + }, + "private": true } From abc3724c323fcf10a2769cb83b104c9c2f8b51de Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Mon, 8 Feb 2021 12:14:08 +0200 Subject: [PATCH 043/304] fix ebs-util constructs import --- packages/@aws-cdk/aws-ec2/lib/private/ebs-util.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-ec2/lib/private/ebs-util.ts b/packages/@aws-cdk/aws-ec2/lib/private/ebs-util.ts index dc91f6d795011..14496f30fb144 100644 --- a/packages/@aws-cdk/aws-ec2/lib/private/ebs-util.ts +++ b/packages/@aws-cdk/aws-ec2/lib/private/ebs-util.ts @@ -4,7 +4,7 @@ import { BlockDevice, EbsDeviceVolumeType } from '../volume'; // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; export function instanceBlockDeviceMappings(construct: Construct, blockDevices: BlockDevice[]): CfnInstance.BlockDeviceMappingProperty[] { return synthesizeBlockDeviceMappings(construct, blockDevices, {}); From f741d13957cf933890b5f8851b1bda7fe27f56e2 Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Tue, 9 Feb 2021 09:48:12 +0200 Subject: [PATCH 044/304] upgrade pip - required by cryptography 3.4 --- .../@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies b/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies index bfdb9e093ed4a..cad65561aa637 100644 --- a/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies +++ b/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies @@ -1,11 +1,14 @@ # The correct AWS SAM build image based on the runtime of the function will be # passed as build arg. The default allows to do `docker build .` when testing. -ARG IMAGE=amazon/aws-sam-cli-build-image-python3.7 +ARG IMAGE=amazon/aws-sam-cli-build-image-python3.6 FROM $IMAGE # Ensure rsync is installed RUN yum -q list installed rsync &>/dev/null || yum install -y rsync +# Upgrade pip +RUN pip install --upgrade pip + # Install pipenv and poetry so we can create a requirements.txt if we detect pipfile or poetry.lock respectively RUN pip install pipenv poetry From 8d3b3c7f131644c311b2c8a4ef76ddf619a186bf Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Tue, 9 Feb 2021 09:55:05 +0200 Subject: [PATCH 045/304] Update Dockerfile.dependencies --- .../@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies b/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies index cad65561aa637..536887fd69a9a 100644 --- a/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies +++ b/packages/@aws-cdk/aws-lambda-python/lib/Dockerfile.dependencies @@ -1,12 +1,12 @@ # The correct AWS SAM build image based on the runtime of the function will be # passed as build arg. The default allows to do `docker build .` when testing. -ARG IMAGE=amazon/aws-sam-cli-build-image-python3.6 +ARG IMAGE=amazon/aws-sam-cli-build-image-python3.7 FROM $IMAGE # Ensure rsync is installed RUN yum -q list installed rsync &>/dev/null || yum install -y rsync -# Upgrade pip +# Upgrade pip (required by cryptography v3.4 and above, which is a dependency of poetry) RUN pip install --upgrade pip # Install pipenv and poetry so we can create a requirements.txt if we detect pipfile or poetry.lock respectively From f8dee26d4e3f3e285a46cc450b8d1ab87c733b73 Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Tue, 9 Feb 2021 10:42:57 +0200 Subject: [PATCH 046/304] update expectations --- .../test/integ.function.expected.json | 20 +++---- .../test/integ.function.pipenv.expected.json | 60 +++++++++---------- .../test/integ.function.poetry.expected.json | 60 +++++++++---------- .../test/integ.function.project.expected.json | 24 ++++---- .../test/integ.function.py38.expected.json | 20 +++---- ...unction.requirements.removed.expected.json | 2 +- .../test/integ.function.vpc.expected.json | 20 +++---- 7 files changed, 103 insertions(+), 103 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.expected.json index c3adcd34e3e95..3690005685439 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.expected.json @@ -36,7 +36,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3Bucket035B0B74" + "Ref": "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3Bucket414E0E30" }, "S3Key": { "Fn::Join": [ @@ -49,7 +49,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3VersionKey781CC06F" + "Ref": "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3VersionKey5ABC9098" } ] } @@ -62,7 +62,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3VersionKey781CC06F" + "Ref": "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3VersionKey5ABC9098" } ] } @@ -72,13 +72,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerServiceRole77891068", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.6" }, "DependsOn": [ @@ -87,17 +87,17 @@ } }, "Parameters": { - "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3Bucket035B0B74": { + "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3Bucket414E0E30": { "Type": "String", - "Description": "S3 bucket for asset \"c677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57\"" + "Description": "S3 bucket for asset \"4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353\"" }, - "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3VersionKey781CC06F": { + "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3VersionKey5ABC9098": { "Type": "String", - "Description": "S3 key for asset version \"c677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57\"" + "Description": "S3 key for asset version \"4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353\"" }, - "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57ArtifactHash70AD5A1E": { + "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353ArtifactHashECA6C88C": { "Type": "String", - "Description": "Artifact hash for asset \"c677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57\"" + "Description": "Artifact hash for asset \"4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353\"" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.pipenv.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.pipenv.expected.json index 0c310b5f52e7e..ef1f355e528c3 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.pipenv.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.pipenv.expected.json @@ -36,7 +36,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3BucketDF70124D" + "Ref": "AssetParameters94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45cS3BucketA501FC08" }, "S3Key": { "Fn::Join": [ @@ -49,7 +49,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3VersionKey530C68B0" + "Ref": "AssetParameters94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45cS3VersionKey1C3AFB39" } ] } @@ -62,7 +62,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3VersionKey530C68B0" + "Ref": "AssetParameters94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45cS3VersionKey1C3AFB39" } ] } @@ -72,13 +72,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerinlineServiceRole10C681F6", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.6" }, "DependsOn": [ @@ -121,7 +121,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3BucketB5A59BD8" + "Ref": "AssetParameters3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28S3Bucket7DE4D4D5" }, "S3Key": { "Fn::Join": [ @@ -134,7 +134,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3VersionKey7657015C" + "Ref": "AssetParameters3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28S3VersionKeyAEB67E87" } ] } @@ -147,7 +147,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3VersionKey7657015C" + "Ref": "AssetParameters3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28S3VersionKeyAEB67E87" } ] } @@ -157,13 +157,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerpython27ServiceRole2ED49C06", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python2.7" }, "DependsOn": [ @@ -206,7 +206,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3Bucket31144813" + "Ref": "AssetParameters876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009S3BucketA66E9035" }, "S3Key": { "Fn::Join": [ @@ -219,7 +219,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3VersionKeyB48E8383" + "Ref": "AssetParameters876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009S3VersionKeyAFEB5FDA" } ] } @@ -232,7 +232,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3VersionKeyB48E8383" + "Ref": "AssetParameters876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009S3VersionKeyAFEB5FDA" } ] } @@ -242,13 +242,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerpython38ServiceRole2049AFF7", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.8" }, "DependsOn": [ @@ -257,41 +257,41 @@ } }, "Parameters": { - "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3BucketDF70124D": { + "AssetParameters94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45cS3BucketA501FC08": { "Type": "String", - "Description": "S3 bucket for asset \"eef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255b\"" + "Description": "S3 bucket for asset \"94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45c\"" }, - "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3VersionKey530C68B0": { + "AssetParameters94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45cS3VersionKey1C3AFB39": { "Type": "String", - "Description": "S3 key for asset version \"eef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255b\"" + "Description": "S3 key for asset version \"94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45c\"" }, - "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bArtifactHashEE8E0CE9": { + "AssetParameters94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45cArtifactHash99DC751A": { "Type": "String", - "Description": "Artifact hash for asset \"eef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255b\"" + "Description": "Artifact hash for asset \"94972df8a01484c56b50bec3793ac6c4302bc044db29d3502007bdc0f83db45c\"" }, - "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3BucketB5A59BD8": { + "AssetParameters3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28S3Bucket7DE4D4D5": { "Type": "String", - "Description": "S3 bucket for asset \"f37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014\"" + "Description": "S3 bucket for asset \"3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28\"" }, - "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3VersionKey7657015C": { + "AssetParameters3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28S3VersionKeyAEB67E87": { "Type": "String", - "Description": "S3 key for asset version \"f37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014\"" + "Description": "S3 key for asset version \"3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28\"" }, - "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014ArtifactHash7768674B": { + "AssetParameters3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28ArtifactHashE51CE860": { "Type": "String", - "Description": "Artifact hash for asset \"f37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014\"" + "Description": "Artifact hash for asset \"3b0b0f3cd46ea1490006d6cefca359385ec059bb00a0fbee4de2eecf48038e28\"" }, - "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3Bucket31144813": { + "AssetParameters876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009S3BucketA66E9035": { "Type": "String", - "Description": "S3 bucket for asset \"3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846a\"" + "Description": "S3 bucket for asset \"876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009\"" }, - "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3VersionKeyB48E8383": { + "AssetParameters876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009S3VersionKeyAFEB5FDA": { "Type": "String", - "Description": "S3 key for asset version \"3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846a\"" + "Description": "S3 key for asset version \"876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009\"" }, - "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aArtifactHash652F614E": { + "AssetParameters876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009ArtifactHashB9A1080D": { "Type": "String", - "Description": "Artifact hash for asset \"3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846a\"" + "Description": "Artifact hash for asset \"876959f777c5a23bf4408991959c55c91810329d159608feb7ede69418b35009\"" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.poetry.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.poetry.expected.json index 0c310b5f52e7e..5ea17bca31920 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.poetry.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.poetry.expected.json @@ -36,7 +36,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3BucketDF70124D" + "Ref": "AssetParameters61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175efS3BucketD53ED9C5" }, "S3Key": { "Fn::Join": [ @@ -49,7 +49,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3VersionKey530C68B0" + "Ref": "AssetParameters61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175efS3VersionKey3C218A3E" } ] } @@ -62,7 +62,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3VersionKey530C68B0" + "Ref": "AssetParameters61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175efS3VersionKey3C218A3E" } ] } @@ -72,13 +72,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerinlineServiceRole10C681F6", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.6" }, "DependsOn": [ @@ -121,7 +121,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3BucketB5A59BD8" + "Ref": "AssetParameters1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956dS3BucketFDE171D0" }, "S3Key": { "Fn::Join": [ @@ -134,7 +134,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3VersionKey7657015C" + "Ref": "AssetParameters1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956dS3VersionKey6209E240" } ] } @@ -147,7 +147,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3VersionKey7657015C" + "Ref": "AssetParameters1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956dS3VersionKey6209E240" } ] } @@ -157,13 +157,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerpython27ServiceRole2ED49C06", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python2.7" }, "DependsOn": [ @@ -206,7 +206,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3Bucket31144813" + "Ref": "AssetParameters96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68S3BucketA23E6312" }, "S3Key": { "Fn::Join": [ @@ -219,7 +219,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3VersionKeyB48E8383" + "Ref": "AssetParameters96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68S3VersionKey1E21AF83" } ] } @@ -232,7 +232,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3VersionKeyB48E8383" + "Ref": "AssetParameters96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68S3VersionKey1E21AF83" } ] } @@ -242,13 +242,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerpython38ServiceRole2049AFF7", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.8" }, "DependsOn": [ @@ -257,41 +257,41 @@ } }, "Parameters": { - "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3BucketDF70124D": { + "AssetParameters61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175efS3BucketD53ED9C5": { "Type": "String", - "Description": "S3 bucket for asset \"eef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255b\"" + "Description": "S3 bucket for asset \"61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175ef\"" }, - "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bS3VersionKey530C68B0": { + "AssetParameters61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175efS3VersionKey3C218A3E": { "Type": "String", - "Description": "S3 key for asset version \"eef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255b\"" + "Description": "S3 key for asset version \"61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175ef\"" }, - "AssetParameterseef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255bArtifactHashEE8E0CE9": { + "AssetParameters61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175efArtifactHash6A1881A8": { "Type": "String", - "Description": "Artifact hash for asset \"eef17c074659b655f9b413019323db3976d06067e78d53c4e609ebe177ce255b\"" + "Description": "Artifact hash for asset \"61d8d26f10d1d73dee2732bec7ed381d2c987fc2912a339f2f119f3b0ea175ef\"" }, - "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3BucketB5A59BD8": { + "AssetParameters1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956dS3BucketFDE171D0": { "Type": "String", - "Description": "S3 bucket for asset \"f37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014\"" + "Description": "S3 bucket for asset \"1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956d\"" }, - "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014S3VersionKey7657015C": { + "AssetParameters1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956dS3VersionKey6209E240": { "Type": "String", - "Description": "S3 key for asset version \"f37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014\"" + "Description": "S3 key for asset version \"1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956d\"" }, - "AssetParametersf37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014ArtifactHash7768674B": { + "AssetParameters1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956dArtifactHash02B929EC": { "Type": "String", - "Description": "Artifact hash for asset \"f37a4de97ca8831930cd2d0dc3f0962e653d756a118ce33271752a745489c014\"" + "Description": "Artifact hash for asset \"1d66b06c3b3ee86b3126fb58d7a06ff055d366d8aeeb4dfbaf28d40f0930956d\"" }, - "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3Bucket31144813": { + "AssetParameters96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68S3BucketA23E6312": { "Type": "String", - "Description": "S3 bucket for asset \"3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846a\"" + "Description": "S3 bucket for asset \"96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68\"" }, - "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aS3VersionKeyB48E8383": { + "AssetParameters96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68S3VersionKey1E21AF83": { "Type": "String", - "Description": "S3 key for asset version \"3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846a\"" + "Description": "S3 key for asset version \"96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68\"" }, - "AssetParameters3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846aArtifactHash652F614E": { + "AssetParameters96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68ArtifactHash0043D2A0": { "Type": "String", - "Description": "Artifact hash for asset \"3eb927f8df31281e22c710f842018fa10b0dde86f74f89313c9a27db6e75846a\"" + "Description": "Artifact hash for asset \"96a447e468bf9d3b52d13213757160cd43f28737a29b8682c281fde388762e68\"" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.project.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.project.expected.json index 5bc285e5c5769..9a81c901d7451 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.project.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.project.expected.json @@ -5,7 +5,7 @@ "Properties": { "Content": { "S3Bucket": { - "Ref": "AssetParameters314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4cS3Bucket6D2DF2A1" + "Ref": "AssetParameters6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4aS3BucketCCD07444" }, "S3Key": { "Fn::Join": [ @@ -18,7 +18,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4cS3VersionKey897AD818" + "Ref": "AssetParameters6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4aS3VersionKeyA8B74284" } ] } @@ -31,7 +31,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4cS3VersionKey897AD818" + "Ref": "AssetParameters6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4aS3VersionKeyA8B74284" } ] } @@ -118,19 +118,19 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerServiceRole77891068", "Arn" ] }, - "Runtime": "python3.6", + "Handler": "index.handler", "Layers": [ { "Ref": "SharedDACC02AA" } - ] + ], + "Runtime": "python3.6" }, "DependsOn": [ "myhandlerServiceRole77891068" @@ -138,17 +138,17 @@ } }, "Parameters": { - "AssetParameters314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4cS3Bucket6D2DF2A1": { + "AssetParameters6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4aS3BucketCCD07444": { "Type": "String", - "Description": "S3 bucket for asset \"314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4c\"" + "Description": "S3 bucket for asset \"6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4a\"" }, - "AssetParameters314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4cS3VersionKey897AD818": { + "AssetParameters6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4aS3VersionKeyA8B74284": { "Type": "String", - "Description": "S3 key for asset version \"314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4c\"" + "Description": "S3 key for asset version \"6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4a\"" }, - "AssetParameters314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4cArtifactHashF8341E5E": { + "AssetParameters6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4aArtifactHashB3093591": { "Type": "String", - "Description": "Artifact hash for asset \"314dd9f824ae895011cd7bb81d52a0ba316c902995491d7f4072c5aefccb6e4c\"" + "Description": "Artifact hash for asset \"6a4b9ce26d3228c4effd7b46ed51ab439e79a530934ad9bde7d77d7f6b6ebd4a\"" }, "AssetParameters71de8786d26e9f9205375b6cea9342e92d8a622a97d01d7e7d2f7661f056f218S3Bucket89C9DB12": { "Type": "String", diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.py38.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.py38.expected.json index 2f0a607ecaecb..b5b137205752f 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.py38.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.py38.expected.json @@ -36,7 +36,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParameters428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381cS3BucketEEA58FD6" + "Ref": "AssetParameters1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148adS3BucketA9379638" }, "S3Key": { "Fn::Join": [ @@ -49,7 +49,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381cS3VersionKey5B5DB95F" + "Ref": "AssetParameters1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148adS3VersionKey4376B462" } ] } @@ -62,7 +62,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381cS3VersionKey5B5DB95F" + "Ref": "AssetParameters1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148adS3VersionKey4376B462" } ] } @@ -72,13 +72,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerServiceRole77891068", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.8" }, "DependsOn": [ @@ -87,17 +87,17 @@ } }, "Parameters": { - "AssetParameters428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381cS3BucketEEA58FD6": { + "AssetParameters1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148adS3BucketA9379638": { "Type": "String", - "Description": "S3 bucket for asset \"428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381c\"" + "Description": "S3 bucket for asset \"1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148ad\"" }, - "AssetParameters428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381cS3VersionKey5B5DB95F": { + "AssetParameters1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148adS3VersionKey4376B462": { "Type": "String", - "Description": "S3 key for asset version \"428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381c\"" + "Description": "S3 key for asset version \"1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148ad\"" }, - "AssetParameters428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381cArtifactHash239A9708": { + "AssetParameters1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148adArtifactHashB9B928DC": { "Type": "String", - "Description": "Artifact hash for asset \"428642c68731bb90502dd14a13320f1f31db649ea6f770f56acdc6f4bb1b381c\"" + "Description": "Artifact hash for asset \"1482f01217b8bed41000ca172724dc762f68208d3faa315bd6e8e07bbea148ad\"" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.requirements.removed.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.requirements.removed.expected.json index ba8fee87727b4..6b3b8230c2874 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.requirements.removed.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.requirements.removed.expected.json @@ -72,13 +72,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "functionServiceRoleEF216095", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python2.7" }, "DependsOn": [ diff --git a/packages/@aws-cdk/aws-lambda-python/test/integ.function.vpc.expected.json b/packages/@aws-cdk/aws-lambda-python/test/integ.function.vpc.expected.json index 63e6ba74ccfe9..63fad4c61de14 100644 --- a/packages/@aws-cdk/aws-lambda-python/test/integ.function.vpc.expected.json +++ b/packages/@aws-cdk/aws-lambda-python/test/integ.function.vpc.expected.json @@ -296,7 +296,7 @@ "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3Bucket035B0B74" + "Ref": "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3Bucket414E0E30" }, "S3Key": { "Fn::Join": [ @@ -309,7 +309,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3VersionKey781CC06F" + "Ref": "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3VersionKey5ABC9098" } ] } @@ -322,7 +322,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3VersionKey781CC06F" + "Ref": "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3VersionKey5ABC9098" } ] } @@ -332,13 +332,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "myhandlerServiceRole77891068", "Arn" ] }, + "Handler": "index.handler", "Runtime": "python3.6", "VpcConfig": { "SecurityGroupIds": [ @@ -368,17 +368,17 @@ } }, "Parameters": { - "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3Bucket035B0B74": { + "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3Bucket414E0E30": { "Type": "String", - "Description": "S3 bucket for asset \"c677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57\"" + "Description": "S3 bucket for asset \"4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353\"" }, - "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57S3VersionKey781CC06F": { + "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353S3VersionKey5ABC9098": { "Type": "String", - "Description": "S3 key for asset version \"c677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57\"" + "Description": "S3 key for asset version \"4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353\"" }, - "AssetParametersc677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57ArtifactHash70AD5A1E": { + "AssetParameters4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353ArtifactHashECA6C88C": { "Type": "String", - "Description": "Artifact hash for asset \"c677eb7e524b9819a25fefd7267be6618341cd2b2d81f4b4aaa40911d698db57\"" + "Description": "Artifact hash for asset \"4ee6ce8b6ee4bd51743dc0c39d6e52baebaeafff9c9dfea0ff84de98d1dbf353\"" } }, "Outputs": { From a8983d3558942c80de70893893bcfdd0c082b41e Mon Sep 17 00:00:00 2001 From: AWS CDK Team Date: Wed, 10 Feb 2021 09:06:42 +0000 Subject: [PATCH 047/304] automatic pkglint fixes --- packages/@aws-cdk/aws-kinesisanalytics-flink/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json b/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json index 80dbdfd4aeb76..8be6cb53ae176 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink/package.json @@ -79,7 +79,7 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -91,7 +91,7 @@ "@aws-cdk/aws-logs": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-s3-assets": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" @@ -111,5 +111,6 @@ "env": { "AWSLINT_BASE_CONSTRUCT": true } - } + }, + "private": true } From 0b85292870ba65d88c0ed79c2cefc52d87fb06d1 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 10 Feb 2021 11:36:07 +0200 Subject: [PATCH 048/304] chore(release): 2.0.0-alpha.4 (#12959) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.4/CHANGELOG.md) --- CHANGELOG.v2.md | 35 +++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index f6d5c2c78d89a..622d799a8f3d6 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,41 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.4](https://github.com/aws/aws-cdk/compare/v1.88.0...v2.0.0-alpha.4) (2021-02-10) + + +### Features + +* **cfnspec:** cloudformation spec v26.0.0 ([#12841](https://github.com/aws/aws-cdk/issues/12841)) ([f959b3a](https://github.com/aws/aws-cdk/commit/f959b3a2eeb5a9a9e44ea3f88622f77f7667bfa4)) +* **cloudfront:** add support for TrustedKeyGroups in Distribution and CloudFrontWebDistribution ([#12847](https://github.com/aws/aws-cdk/issues/12847)) ([349a6e2](https://github.com/aws/aws-cdk/commit/349a6e2bfaa72440deb3767fb1e28e38cc4d73ef)), closes [#11791](https://github.com/aws/aws-cdk/issues/11791) +* **ec2:** can define Launch Templates (not use them yet) ([#12385](https://github.com/aws/aws-cdk/issues/12385)) ([32c0de7](https://github.com/aws/aws-cdk/commit/32c0de74cf40f08a291c8589fd85f3dd636749ea)) +* **lambda:** layer version removal policy ([#12792](https://github.com/aws/aws-cdk/issues/12792)) ([5664480](https://github.com/aws/aws-cdk/commit/5664480a97958263ee7cb903c2aff0276e738dc3)), closes [#12718](https://github.com/aws/aws-cdk/issues/12718) +* **lambda:** nodejs14.x runtime ([#12861](https://github.com/aws/aws-cdk/issues/12861)) ([12c224a](https://github.com/aws/aws-cdk/commit/12c224a0f54230b6226de8defa527f7b53f9bc65)) + + +### Bug Fixes + +* **core:** append file extension to s3 asset key in new style synthesizer ([#12765](https://github.com/aws/aws-cdk/issues/12765)) ([77b9d39](https://github.com/aws/aws-cdk/commit/77b9d3930ec722be3a40e4013cd9335f90b0d945)), closes [#12740](https://github.com/aws/aws-cdk/issues/12740) +* **core:** incorrect GetParameter permissions in nonstandard partitions ([#12813](https://github.com/aws/aws-cdk/issues/12813)) ([be7202f](https://github.com/aws/aws-cdk/commit/be7202fa229435607e81d480726e9ce7f625b85a)) + +## [2.0.0-alpha.3](https://github.com/aws/aws-cdk/compare/v1.87.1...v2.0.0-alpha.3) (2021-02-03) + +## [2.0.0-alpha.2](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2021-01-27) + +## [2.0.0-alpha.1](https://github.com/aws/aws-cdk/compare/v1.86.0...v2.0.0-alpha.1) (2021-01-21) + + +### Features + +* remove the construct compatibility layer ([#12054](https://github.com/aws/aws-cdk/issues/12054)) ([8d3c02c](https://github.com/aws/aws-cdk/commit/8d3c02c117072433bf649003af0c4fee4a1f8c4b)) + +## [2.0.0-alpha.0](https://github.com/aws/aws-cdk/compare/v1.77.0...v2.0.0-alpha.0) (2020-12-11) + + +### Bug Fixes + +* **scripts:** lerna not found in merge-forward ([#11672](https://github.com/aws/aws-cdk/issues/11672)) ([b1a8e33](https://github.com/aws/aws-cdk/commit/b1a8e336c94f7d2a93a023d6dc853d23934bfa06)) + ## [2.0.0-alpha.3](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2021-02-03) diff --git a/version.v2.json b/version.v2.json index eafe60eccc1a9..29245d68cfa80 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.3" + "version": "2.0.0-alpha.4" } From 5707a72657e927d0c18a57c5fc3c332a6cf09d74 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Wed, 10 Feb 2021 09:54:10 +0000 Subject: [PATCH 049/304] use constructs --- .../@aws-cdk/aws-kinesisanalytics-flink/lib/application-code.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-kinesisanalytics-flink/lib/application-code.ts b/packages/@aws-cdk/aws-kinesisanalytics-flink/lib/application-code.ts index c7d7b49180086..2f72734ed9e47 100644 --- a/packages/@aws-cdk/aws-kinesisanalytics-flink/lib/application-code.ts +++ b/packages/@aws-cdk/aws-kinesisanalytics-flink/lib/application-code.ts @@ -1,7 +1,7 @@ import * as ka from '@aws-cdk/aws-kinesisanalytics'; import * as s3 from '@aws-cdk/aws-s3'; import * as s3_assets from '@aws-cdk/aws-s3-assets'; -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * The return type of {@link ApplicationCode.bind}. This represents From 8fd06afffd3aae289cd26658d567a9250ff96a69 Mon Sep 17 00:00:00 2001 From: aws-cdk-automation Date: Wed, 10 Feb 2021 11:30:04 +0000 Subject: [PATCH 050/304] automatic pkglint fixes --- .../@aws-cdk/aws-apigatewayv2-authorizers/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json b/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json index de6dffe1edc61..07ee23455cd0c 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json +++ b/packages/@aws-cdk/aws-apigatewayv2-authorizers/package.json @@ -82,13 +82,13 @@ "@aws-cdk/aws-apigatewayv2": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "peerDependencies": { "@aws-cdk/aws-apigatewayv2": "0.0.0", "@aws-cdk/aws-cognito": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.2.0" + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" @@ -97,5 +97,6 @@ "maturity": "experimental", "awscdkio": { "announce": false - } + }, + "private": true } From b7d3d2a4a0d07106ec4fc2a11bf36092de0f0f2c Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Sun, 14 Feb 2021 15:16:27 +0200 Subject: [PATCH 051/304] fix merge conflict --- .../@aws-cdk/core/test/private/tree-metadata.test.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts index 71ba74f9d049c..00a3d7eb97741 100644 --- a/packages/@aws-cdk/core/test/private/tree-metadata.test.ts +++ b/packages/@aws-cdk/core/test/private/tree-metadata.test.ts @@ -3,10 +3,10 @@ import * as path from 'path'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { Construct } from 'constructs'; import { nodeunitShim, Test } from 'nodeunit-shim'; -import { App, CfnParameter, CfnResource, Construct as CfnConstruct, Lazy, Stack, TreeInspector } from '../../lib/index'; +import { App, CfnParameter, CfnResource, Lazy, Stack, TreeInspector } from '../../lib/index'; abstract class AbstractCfnResource extends CfnResource { - constructor(scope: CfnConstruct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id, { type: 'CDK::UnitTest::MyCfnResource', }); @@ -25,7 +25,7 @@ nodeunitShim({ const app = new App(); const stack = new Stack(app, 'mystack'); - new CfnConstruct(stack, 'myconstruct'); + new Construct(stack, 'myconstruct'); const assembly = app.synth(); const treeArtifact = assembly.tree(); @@ -234,7 +234,7 @@ nodeunitShim({ class MyFirstResource extends AbstractCfnResource { public readonly lazykey: string; - constructor(scope: CfnConstruct, id: string) { + constructor(scope: Construct, id: string) { super(scope, id); this.lazykey = Lazy.string({ produce: () => 'LazyResolved!' }); } @@ -249,7 +249,7 @@ nodeunitShim({ class MySecondResource extends AbstractCfnResource { public readonly myprop: string; - constructor(scope: CfnConstruct, id: string, myprop: string) { + constructor(scope: Construct, id: string, myprop: string) { super(scope, id); this.myprop = myprop; } From 5ae60bd93b24a05409762051873601d8eaf92cf5 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Mon, 15 Feb 2021 10:34:32 +0000 Subject: [PATCH 052/304] chore: fix CHANGELOG generation for v2 branch (#13019) The CHANGELOG for the v2 releases has been inaccurate, only showing a fraction of the changes and mixing v1 and v2 releases side by side. The issue appears to be how `conventional-changelog` handles interleaving changes across major versions on separate branches. After digging into the internals of conventional-changelog and standard-release a bit, I don't see a supported way to achieve our desired outcome. However, I did come up with a hack that results in the right end result. By (locally) removing all v1.* tags, and running the release, a correct CHANGELOG is created. Likewise, on the master/v1 branch, removing v2.* tags prior to bumping does not appear to have any adverse effects. I would be thrilled for someone to point out the option(s) that I missed to do this more elegantly, but for now this seems to work. I also took the liberty of re-generating the v2 CHANGELOG for the previous releases using this fix, to show what the correct output should look like. I will backport the changes to bump.js to master once this has been shipped. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- CHANGELOG.v2.md | 185 +++++++++++++++++++++++++++++++++++++----------- scripts/bump.js | 17 ++++- 2 files changed, 159 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 622d799a8f3d6..947d5b9035d93 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,40 +2,50 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -## [2.0.0-alpha.4](https://github.com/aws/aws-cdk/compare/v1.88.0...v2.0.0-alpha.4) (2021-02-10) +## [2.0.0-alpha.4](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2021-02-10) +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **appmesh:** the properties virtualRouter and virtualNode of VirtualServiceProps have been replaced with the union-like class VirtualServiceProvider +* **appmesh**: the method `addVirtualService` has been removed from `IMesh` +* **cloudfront:** experimental EdgeFunction stack names have changed from 'edge-lambda-stack-${region}' to 'edge-lambda-stack-${stackid}' to support multiple independent CloudFront distributions with EdgeFunctions. + ### Features +* **apigateway:** cognito user pool authorizer ([#12786](https://github.com/aws/aws-cdk/issues/12786)) ([ff1e5b3](https://github.com/aws/aws-cdk/commit/ff1e5b3c580119c107fe26c67fe3cc220f9ee7c9)), closes [#5618](https://github.com/aws/aws-cdk/issues/5618) +* **apigateway:** import an existing Resource ([#12785](https://github.com/aws/aws-cdk/issues/12785)) ([8a1a9b8](https://github.com/aws/aws-cdk/commit/8a1a9b82a36e681334fd45be595f6ecdf904ad34)), closes [#4432](https://github.com/aws/aws-cdk/issues/4432) +* **appmesh:** change VirtualService provider to a union-like class ([#11978](https://github.com/aws/aws-cdk/issues/11978)) ([dfc765a](https://github.com/aws/aws-cdk/commit/dfc765af44c755f10be8f6c1c2eae55f62e2aa08)), closes [#9490](https://github.com/aws/aws-cdk/issues/9490) +* **aws-route53:** cross account DNS delegations ([#12680](https://github.com/aws/aws-cdk/issues/12680)) ([126a693](https://github.com/aws/aws-cdk/commit/126a6935cacc1f68b1d1155e484912d4ed6978f2)), closes [#8776](https://github.com/aws/aws-cdk/issues/8776) * **cfnspec:** cloudformation spec v26.0.0 ([#12841](https://github.com/aws/aws-cdk/issues/12841)) ([f959b3a](https://github.com/aws/aws-cdk/commit/f959b3a2eeb5a9a9e44ea3f88622f77f7667bfa4)) +* **cloudfront:** add PublicKey and KeyGroup L2 constructs ([#12743](https://github.com/aws/aws-cdk/issues/12743)) ([59cb6d0](https://github.com/aws/aws-cdk/commit/59cb6d032a55515ec5e9903f899de588d18d4cb5)) * **cloudfront:** add support for TrustedKeyGroups in Distribution and CloudFrontWebDistribution ([#12847](https://github.com/aws/aws-cdk/issues/12847)) ([349a6e2](https://github.com/aws/aws-cdk/commit/349a6e2bfaa72440deb3767fb1e28e38cc4d73ef)), closes [#11791](https://github.com/aws/aws-cdk/issues/11791) +* **core:** `stack.exportValue()` can be used to solve "deadly embrace" ([#12778](https://github.com/aws/aws-cdk/issues/12778)) ([3b66088](https://github.com/aws/aws-cdk/commit/3b66088010b6f2315a215e92505d5279680f16d4)), closes [#7602](https://github.com/aws/aws-cdk/issues/7602) [#2036](https://github.com/aws/aws-cdk/issues/2036) * **ec2:** can define Launch Templates (not use them yet) ([#12385](https://github.com/aws/aws-cdk/issues/12385)) ([32c0de7](https://github.com/aws/aws-cdk/commit/32c0de74cf40f08a291c8589fd85f3dd636749ea)) +* **ecr:** Public Gallery authorization token ([#12775](https://github.com/aws/aws-cdk/issues/12775)) ([8434294](https://github.com/aws/aws-cdk/commit/84342943ad9f2ea8a83773f00816a0b8117c4d17)) +* **ecs-patterns:** Add PlatformVersion option to ScheduledFargateTask props ([#12676](https://github.com/aws/aws-cdk/issues/12676)) ([3cbf38b](https://github.com/aws/aws-cdk/commit/3cbf38b09a9e66a6c009f833481fb25b8c5fc26c)), closes [#12623](https://github.com/aws/aws-cdk/issues/12623) +* **elbv2:** support for 2020 SSL policy ([#12710](https://github.com/aws/aws-cdk/issues/12710)) ([1dd3d05](https://github.com/aws/aws-cdk/commit/1dd3d0518dc2a70c725f87dd5d4377338389125c)), closes [#12595](https://github.com/aws/aws-cdk/issues/12595) +* **iam:** Permissions Boundaries ([#12777](https://github.com/aws/aws-cdk/issues/12777)) ([415eb86](https://github.com/aws/aws-cdk/commit/415eb861c65829cc53eabbbb8706f83f08c74570)), closes [aws/aws-cdk-rfcs#5](https://github.com/aws/aws-cdk-rfcs/issues/5) [#3242](https://github.com/aws/aws-cdk/issues/3242) +* **lambda:** inline code for Python 3.8 ([#12788](https://github.com/aws/aws-cdk/issues/12788)) ([8d3aaba](https://github.com/aws/aws-cdk/commit/8d3aabaffe436e6a3eebc0a58fe361c5b4b93f08)), closes [#6503](https://github.com/aws/aws-cdk/issues/6503) * **lambda:** layer version removal policy ([#12792](https://github.com/aws/aws-cdk/issues/12792)) ([5664480](https://github.com/aws/aws-cdk/commit/5664480a97958263ee7cb903c2aff0276e738dc3)), closes [#12718](https://github.com/aws/aws-cdk/issues/12718) * **lambda:** nodejs14.x runtime ([#12861](https://github.com/aws/aws-cdk/issues/12861)) ([12c224a](https://github.com/aws/aws-cdk/commit/12c224a0f54230b6226de8defa527f7b53f9bc65)) ### Bug Fixes +* **apigateway:** stack update fails to replace api key ([38cbe62](https://github.com/aws/aws-cdk/commit/38cbe620859d6efabda95dbdd3185a480ab43894)), closes [#12698](https://github.com/aws/aws-cdk/issues/12698) +* **apigateway:** stack update fails to replace api key ([#12745](https://github.com/aws/aws-cdk/issues/12745)) ([ffe7e42](https://github.com/aws/aws-cdk/commit/ffe7e425e605144a465cea9befa68d4fe19f9d8c)), closes [#12698](https://github.com/aws/aws-cdk/issues/12698) +* **cfn-include:** AWS::CloudFormation resources fail in monocdk ([#12758](https://github.com/aws/aws-cdk/issues/12758)) ([5060782](https://github.com/aws/aws-cdk/commit/5060782b00e17bdf44e225f8f5ef03344be238c7)), closes [#11595](https://github.com/aws/aws-cdk/issues/11595) +* **cli, codepipeline:** renamed bootstrap stack still not supported ([#12771](https://github.com/aws/aws-cdk/issues/12771)) ([40b32bb](https://github.com/aws/aws-cdk/commit/40b32bbda272b6e2f92fd5dd8de7ca5bf405ce52)), closes [#12594](https://github.com/aws/aws-cdk/issues/12594) [#12732](https://github.com/aws/aws-cdk/issues/12732) +* **cloudfront:** use node addr for edgeStackId name ([#12702](https://github.com/aws/aws-cdk/issues/12702)) ([c429bb7](https://github.com/aws/aws-cdk/commit/c429bb7df2406346426dce22d716cabc484ec7e6)), closes [#12323](https://github.com/aws/aws-cdk/issues/12323) +* **codedeploy:** wrong syntax on Windows 'installAgent' flag ([#12736](https://github.com/aws/aws-cdk/issues/12736)) ([238742e](https://github.com/aws/aws-cdk/commit/238742e4323310ce850d8edc70abe4b0e9f53186)), closes [#12734](https://github.com/aws/aws-cdk/issues/12734) +* **codepipeline:** permission denied for Action-level environment variables ([#12761](https://github.com/aws/aws-cdk/issues/12761)) ([99fd074](https://github.com/aws/aws-cdk/commit/99fd074a07ead624f64d3fe64685ba67c798976e)), closes [#12742](https://github.com/aws/aws-cdk/issues/12742) * **core:** append file extension to s3 asset key in new style synthesizer ([#12765](https://github.com/aws/aws-cdk/issues/12765)) ([77b9d39](https://github.com/aws/aws-cdk/commit/77b9d3930ec722be3a40e4013cd9335f90b0d945)), closes [#12740](https://github.com/aws/aws-cdk/issues/12740) * **core:** incorrect GetParameter permissions in nonstandard partitions ([#12813](https://github.com/aws/aws-cdk/issues/12813)) ([be7202f](https://github.com/aws/aws-cdk/commit/be7202fa229435607e81d480726e9ce7f625b85a)) - -## [2.0.0-alpha.3](https://github.com/aws/aws-cdk/compare/v1.87.1...v2.0.0-alpha.3) (2021-02-03) - -## [2.0.0-alpha.2](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2021-01-27) - -## [2.0.0-alpha.1](https://github.com/aws/aws-cdk/compare/v1.86.0...v2.0.0-alpha.1) (2021-01-21) - - -### Features - -* remove the construct compatibility layer ([#12054](https://github.com/aws/aws-cdk/issues/12054)) ([8d3c02c](https://github.com/aws/aws-cdk/commit/8d3c02c117072433bf649003af0c4fee4a1f8c4b)) - -## [2.0.0-alpha.0](https://github.com/aws/aws-cdk/compare/v1.77.0...v2.0.0-alpha.0) (2020-12-11) - - -### Bug Fixes - -* **scripts:** lerna not found in merge-forward ([#11672](https://github.com/aws/aws-cdk/issues/11672)) ([b1a8e33](https://github.com/aws/aws-cdk/commit/b1a8e336c94f7d2a93a023d6dc853d23934bfa06)) +* **ec2:** ARM-backed bastion hosts try to run x86-based Amazon Linux AMI ([#12280](https://github.com/aws/aws-cdk/issues/12280)) ([1a73d76](https://github.com/aws/aws-cdk/commit/1a73d761ad2363842567a1b6e0488ceb093e70b2)), closes [#12279](https://github.com/aws/aws-cdk/issues/12279) +* **efs:** EFS fails to create when using a VPC with multiple subnets per availability zone ([#12097](https://github.com/aws/aws-cdk/issues/12097)) ([889d673](https://github.com/aws/aws-cdk/commit/889d6734c10174f2661e45057c345cd112a44187)), closes [#10170](https://github.com/aws/aws-cdk/issues/10170) +* **iam:** cannot use the same Role for multiple Config Rules ([#12724](https://github.com/aws/aws-cdk/issues/12724)) ([2f6521a](https://github.com/aws/aws-cdk/commit/2f6521a1d8670b2653f7dee281309351181cf918)), closes [#12714](https://github.com/aws/aws-cdk/issues/12714) +* **lambda:** codeguru profiler not set up for Node runtime ([#12712](https://github.com/aws/aws-cdk/issues/12712)) ([59db763](https://github.com/aws/aws-cdk/commit/59db763e7d05d68fd85b6fd37246d69d4670d7d5)), closes [#12624](https://github.com/aws/aws-cdk/issues/12624) ## [2.0.0-alpha.3](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2021-02-03) @@ -57,59 +67,152 @@ used by CDK Pipelines) must upgrade their bootstrap stacks. Run `cdk bootstrap`. ### Features * **aws-codepipeline-actions:** Add Full Clone support for CodeCommit ([#12558](https://github.com/aws/aws-cdk/issues/12558)) ([d169688](https://github.com/aws/aws-cdk/commit/d169688f35bc78c88c44ff9a7d8fa0dfea71f904)), closes [#12236](https://github.com/aws/aws-cdk/issues/12236) +* **cfnspec:** cloudformation spec v24.0.0 ([#12615](https://github.com/aws/aws-cdk/issues/12615)) ([98ebe96](https://github.com/aws/aws-cdk/commit/98ebe964fcd1f528fc4796bf39dc574b222b0014)), closes [#12474](https://github.com/aws/aws-cdk/issues/12474) +* **cognito:** allow to set read and write attributes in Cognito UserPoolClient ([#7607](https://github.com/aws/aws-cdk/issues/7607)) ([552e1e9](https://github.com/aws/aws-cdk/commit/552e1e9d649528875680a8a1cb2aad8f0a0ebcea)), closes [#7407](https://github.com/aws/aws-cdk/issues/7407) +* **ec2:** Support for new EBS types ([#12074](https://github.com/aws/aws-cdk/issues/12074)) ([6a2ce55](https://github.com/aws/aws-cdk/commit/6a2ce55e7213bb8356f2f37dbd02f1a3d52883be)), closes [#12071](https://github.com/aws/aws-cdk/issues/12071) * **eks:** Graduate to stable ([#12640](https://github.com/aws/aws-cdk/issues/12640)) ([b5ba7cd](https://github.com/aws/aws-cdk/commit/b5ba7cdd61714bcfbf2135240790340a77ee1a8b)) +* **s3:** Bucket keys ([#12376](https://github.com/aws/aws-cdk/issues/12376)) ([d126fcc](https://github.com/aws/aws-cdk/commit/d126fcca685346c0607babfbbf4d341f669a9e81)), closes [#11828](https://github.com/aws/aws-cdk/issues/11828) * **stepfunctions-tasks:** EcsRunTask now uses taskDefinition family instead of ARN ([#12436](https://github.com/aws/aws-cdk/issues/12436)) ([abde96b](https://github.com/aws/aws-cdk/commit/abde96b046358fc5435545692eba4fd63d503914)), closes [#12080](https://github.com/aws/aws-cdk/issues/12080) * **stepfunctions-tasks:** support databrew startJobRun task ([#12532](https://github.com/aws/aws-cdk/issues/12532)) ([eacd2f7](https://github.com/aws/aws-cdk/commit/eacd2f7ea67c83d50c839acf29fbe953ae49d987)) ### Bug Fixes +* **apigateway:** cannot remove first api key from usage plan ([#12505](https://github.com/aws/aws-cdk/issues/12505)) ([96cbe32](https://github.com/aws/aws-cdk/commit/96cbe32d2399d82a2ad6c3bf6dc1fd65396882d4)), closes [#11876](https://github.com/aws/aws-cdk/issues/11876) * **apigatewayv2:** multiple http integrations are created for each route ([#12528](https://github.com/aws/aws-cdk/issues/12528)) ([855ce59](https://github.com/aws/aws-cdk/commit/855ce59039a577d142d68720e86d81610edffc64)), closes [40aws-cdk/aws-apigatewayv2/lib/http/route.ts#L128](https://github.com/40aws-cdk/aws-apigatewayv2/lib/http/route.ts/issues/L128) +* **aws-ecs:** Invalid user data defined for windows autoscaling groups ([#12585](https://github.com/aws/aws-cdk/issues/12585)) ([638b995](https://github.com/aws/aws-cdk/commit/638b995cb72b0819a1965a7ccf451b6ed9034a1b)), closes [#12583](https://github.com/aws/aws-cdk/issues/12583) * **core:** modern deployments fail if bootstrap stack is renamed ([#12594](https://github.com/aws/aws-cdk/issues/12594)) ([e5c616f](https://github.com/aws/aws-cdk/commit/e5c616f73eac395492636341f57fb6a716d1ea69)), closes [#11952](https://github.com/aws/aws-cdk/issues/11952) [#11420](https://github.com/aws/aws-cdk/issues/11420) [#9053](https://github.com/aws/aws-cdk/issues/9053) * **pipelines:** assets broken in Pipelines synthesized from Windows ([#12573](https://github.com/aws/aws-cdk/issues/12573)) ([5c3dce5](https://github.com/aws/aws-cdk/commit/5c3dce56c71083321069a31213aaa5bce40f51d3)), closes [#12540](https://github.com/aws/aws-cdk/issues/12540) * **pipelines:** can't use CodePipeline variables in Synth environment variables ([#12602](https://github.com/aws/aws-cdk/issues/12602)) ([736b260](https://github.com/aws/aws-cdk/commit/736b260db7f21d89e220591007580f62b22fea3a)), closes [#12061](https://github.com/aws/aws-cdk/issues/12061) [#11178](https://github.com/aws/aws-cdk/issues/11178) * **pipelines:** unable to publish assets inside VPC ([#12331](https://github.com/aws/aws-cdk/issues/12331)) ([a16f09c](https://github.com/aws/aws-cdk/commit/a16f09c9ea675caf5b1e50a4e1cc288e5afd1237)), closes [#11815](https://github.com/aws/aws-cdk/issues/11815) * **s3-deployment:** User metadata keys have redundant triple `x-amz` prefix ([#12414](https://github.com/aws/aws-cdk/issues/12414)) ([6716181](https://github.com/aws/aws-cdk/commit/671618152dc585ef0703f6c3501f6ee5a366b4a9)), closes [#8459](https://github.com/aws/aws-cdk/issues/8459) * **secretsmanager:** fromSecretPartialArn() has incorrect grant policies ([#12665](https://github.com/aws/aws-cdk/issues/12665)) ([560915e](https://github.com/aws/aws-cdk/commit/560915ece87a919f499a64452b919a0b291394ee)), closes [#12411](https://github.com/aws/aws-cdk/issues/12411) +* **synthetics:** default execution role breaks in non aws partitions ([#12096](https://github.com/aws/aws-cdk/issues/12096)) ([c01272c](https://github.com/aws/aws-cdk/commit/c01272c14be9b7ff635281952f3cfeed971a352e)), closes [#12094](https://github.com/aws/aws-cdk/issues/12094) -## [1.86.0](https://github.com/aws/aws-cdk/compare/v1.85.0...v1.86.0) (2021-01-21) - +## [2.0.0-alpha.1](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.0...v2.0.0-alpha.1) (2021-01-21) -### Features -* **cfnspec:** cloudformation spec v24.0.0 ([#12615](https://github.com/aws/aws-cdk/issues/12615)) ([98ebe96](https://github.com/aws/aws-cdk/commit/98ebe964fcd1f528fc4796bf39dc574b222b0014)), closes [#12474](https://github.com/aws/aws-cdk/issues/12474) -* **cognito:** allow to set read and write attributes in Cognito UserPoolClient ([#7607](https://github.com/aws/aws-cdk/issues/7607)) ([552e1e9](https://github.com/aws/aws-cdk/commit/552e1e9d649528875680a8a1cb2aad8f0a0ebcea)), closes [#7407](https://github.com/aws/aws-cdk/issues/7407) -* **ec2:** Support for new EBS types ([#12074](https://github.com/aws/aws-cdk/issues/12074)) ([6a2ce55](https://github.com/aws/aws-cdk/commit/6a2ce55e7213bb8356f2f37dbd02f1a3d52883be)), closes [#12071](https://github.com/aws/aws-cdk/issues/12071) -* **s3:** Bucket keys ([#12376](https://github.com/aws/aws-cdk/issues/12376)) ([d126fcc](https://github.com/aws/aws-cdk/commit/d126fcca685346c0607babfbbf4d341f669a9e81)), closes [#11828](https://github.com/aws/aws-cdk/issues/11828) - - -### Bug Fixes - -* **apigateway:** cannot remove first api key from usage plan ([#12505](https://github.com/aws/aws-cdk/issues/12505)) ([96cbe32](https://github.com/aws/aws-cdk/commit/96cbe32d2399d82a2ad6c3bf6dc1fd65396882d4)), closes [#11876](https://github.com/aws/aws-cdk/issues/11876) -* **aws-ecs:** Invalid user data defined for windows autoscaling groups ([#12585](https://github.com/aws/aws-cdk/issues/12585)) ([638b995](https://github.com/aws/aws-cdk/commit/638b995cb72b0819a1965a7ccf451b6ed9034a1b)), closes [#12583](https://github.com/aws/aws-cdk/issues/12583) -* **synthetics:** default execution role breaks in non aws partitions ([#12096](https://github.com/aws/aws-cdk/issues/12096)) ([c01272c](https://github.com/aws/aws-cdk/commit/c01272c14be9b7ff635281952f3cfeed971a352e)), closes [#12094](https://github.com/aws/aws-cdk/issues/12094) +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES -## [2.0.0-alpha.1](https://github.com/aws/aws-cdk/compare/v1.85.0...v2.0.0-alpha.1) (2021-01-21) +* **apigatewayv2:** `subnets` prop in `VpcLink` resource now takes `SubnetSelection` instead of `ISubnet[]` +* **eks:** Existing self managed nodes may loose the ability to host additional services of type `LoadBalancer` . See https://github.com/aws/aws-cdk/pull/12269#issuecomment-752161190 for possible mitigations. +* **eks:** the `@aws-cdk/eks.KubectlLayer` layer class has been moved to `@aws-cdk/lambda-layer-kubectl.KubectlLayer`. +* **eks:** `LegacyCluster` was removed since it existed only for a transition period to allow gradual migration to the current cluster class. +- eks: `kubectlEnabled` property was removed, all clusters now support `kubectl`. +* **core:** Creation stack traces for `Lazy` values are no longer +captured by default in order to speed up tests. Run with +`CDK_DEBUG=true` (or `cdk --debug`) to capture stack traces. +* **apigatewayv2:** `HttpApi.fromApiId()` has been replaced with +`HttpApi.fromHttpApiAttributes()`. +* **elasticsearch:** ES Domain LogGroup LogicalId will change, which will trigger new log group resources to be created +* **cloudfront-origins:** Default minimum origin SSL protocol for `HttpOrigin` and `LoadBalancerOrigin` changed from SSLv3 to TLSv1.2. ### Features -* remove the construct compatibility layer ([#12054](https://github.com/aws/aws-cdk/issues/12054)) ([8d3c02c](https://github.com/aws/aws-cdk/commit/8d3c02c117072433bf649003af0c4fee4a1f8c4b)) +* **apigatewayv2:** http api - disable execute api endpoint ([#12426](https://github.com/aws/aws-cdk/issues/12426)) ([1724da7](https://github.com/aws/aws-cdk/commit/1724da758666ec92f7b923c899d2f2f439083ba2)), closes [#12241](https://github.com/aws/aws-cdk/issues/12241) +* **appmesh:** add listener TLS certificates for VirtualNodes and VirtualGateways ([#11863](https://github.com/aws/aws-cdk/issues/11863)) ([175a257](https://github.com/aws/aws-cdk/commit/175a2570465d484aa0a73a7bded34e686da493ed)), closes [#10051](https://github.com/aws/aws-cdk/issues/10051) +* **appmesh:** add timeout support to Routes ([#11973](https://github.com/aws/aws-cdk/issues/11973)) ([78c185d](https://github.com/aws/aws-cdk/commit/78c185d15e64e81ee86ee71cd6430cd80fdbb8fe)) +* **aws-cloudfront:** support minimum security protocol ([#12231](https://github.com/aws/aws-cdk/issues/12231)) ([40976d9](https://github.com/aws/aws-cdk/commit/40976d9d71bb5c77d6dd9962f67129c4a7e91d0b)), closes [#12199](https://github.com/aws/aws-cdk/issues/12199) +* **aws-kms:** support waiting period ([#12224](https://github.com/aws/aws-cdk/issues/12224)) ([9f451bd](https://github.com/aws/aws-cdk/commit/9f451bda33ae83e41e395799d9bb3f07ce4e100d)), closes [#12218](https://github.com/aws/aws-cdk/issues/12218) +* **aws-lambda-nodejs:** add esbuild `define` bundling option ([#12424](https://github.com/aws/aws-cdk/issues/12424)) ([581f6af](https://github.com/aws/aws-cdk/commit/581f6af3d1f71737ca93b6ecb9b004bdade149a8)), closes [#12423](https://github.com/aws/aws-cdk/issues/12423) +* **cdk-assets:** add external asset support ([#12259](https://github.com/aws/aws-cdk/issues/12259)) ([05a9980](https://github.com/aws/aws-cdk/commit/05a998065b3333854715c456b20b7cc5d5daac67)) +* **cfnspec:** CloudFormation resource specification update to v23.0.0 ([#12490](https://github.com/aws/aws-cdk/issues/12490)) ([a7a2236](https://github.com/aws/aws-cdk/commit/a7a2236367f8f01b00b6d90f1d3fe7bf674b1aee)) +* **cfnspec:** cloudformation spec v22.0.0 ([#12204](https://github.com/aws/aws-cdk/issues/12204)) ([a5be2e9](https://github.com/aws/aws-cdk/commit/a5be2e9d57862a5cc9a108d9fdedd1398e492645)), closes [#12170](https://github.com/aws/aws-cdk/issues/12170) [#11974](https://github.com/aws/aws-cdk/issues/11974) [#12114](https://github.com/aws/aws-cdk/issues/12114) [#12028](https://github.com/aws/aws-cdk/issues/12028) +* **cli:** `--quiet` does not print template in `cdk synth` ([#12178](https://github.com/aws/aws-cdk/issues/12178)) ([74458a0](https://github.com/aws/aws-cdk/commit/74458a0e9eebce4ee254673aad8933d39588d843)), closes [#11970](https://github.com/aws/aws-cdk/issues/11970) +* **cloudfront:** allow to specify stack ID for Lambda@Edge ([#12163](https://github.com/aws/aws-cdk/issues/12163)) ([049e70c](https://github.com/aws/aws-cdk/commit/049e70c3fc32c2287623a5f7bd3ae2c38ce29409)), closes [#12136](https://github.com/aws/aws-cdk/issues/12136) +* **cloudfront-origins:** ability to specify minimum origin SSL protocol ([#11997](https://github.com/aws/aws-cdk/issues/11997)) ([a0aa61d](https://github.com/aws/aws-cdk/commit/a0aa61d5bc1134accef7bab2707edb497fce2c57)), closes [#11994](https://github.com/aws/aws-cdk/issues/11994) +* **cloudfront-origins:** CloudFront Origins is now Generally Available ([#12011](https://github.com/aws/aws-cdk/issues/12011)) ([daace16](https://github.com/aws/aws-cdk/commit/daace1684638b8fb8b89b60bf39b24c65a769d64)), closes [#11919](https://github.com/aws/aws-cdk/issues/11919) +* **cloudwatch:** full precision for SingleValueWidgets ([#12274](https://github.com/aws/aws-cdk/issues/12274)) ([45d78f0](https://github.com/aws/aws-cdk/commit/45d78f0b132380e95a585ea7bec96f08f2069edc)), closes [#8940](https://github.com/aws/aws-cdk/issues/8940) [#12066](https://github.com/aws/aws-cdk/issues/12066) +* **codebuild:** add `startBatchBuild` option ([#11743](https://github.com/aws/aws-cdk/issues/11743)) ([d9353b7](https://github.com/aws/aws-cdk/commit/d9353b7625420595401620709828de2f44c66597)), closes [/github.com/aws-cloudformation/aws-cloudformation-coverage-roadmap/issues/621#issuecomment-732336650](https://github.com/aws//github.com/aws-cloudformation/aws-cloudformation-coverage-roadmap/issues/621/issues/issuecomment-732336650) [#11663](https://github.com/aws/aws-cdk/issues/11663) +* **codebuild:** prevent using Secrets in plain-text environment variables ([#12150](https://github.com/aws/aws-cdk/issues/12150)) ([998af8f](https://github.com/aws/aws-cdk/commit/998af8f0e574b7b07083f0f347dc4934a6da1966)) +* **codebuild:** support Standard 5.0 ([#12434](https://github.com/aws/aws-cdk/issues/12434)) ([422dc8e](https://github.com/aws/aws-cdk/commit/422dc8e9d50105af4e710d409a4f301079d43f3f)), closes [#12433](https://github.com/aws/aws-cdk/issues/12433) +* **codecommit:** HTTPS GRC clone URL ([#12312](https://github.com/aws/aws-cdk/issues/12312)) ([36b081e](https://github.com/aws/aws-cdk/commit/36b081e470674005b54c190b50da9b2ed3d9ad9c)) +* **core:** expose custom resource provider's role ([#11923](https://github.com/aws/aws-cdk/issues/11923)) ([06f26d3](https://github.com/aws/aws-cdk/commit/06f26d390707b0e2a4e05e36405a4751c907a234)), closes [/github.com/aws/aws-cdk/pull/9751#issuecomment-723554595](https://github.com/aws//github.com/aws/aws-cdk/pull/9751/issues/issuecomment-723554595) +* **core:** validate maximum amount of resources in a stack ([#12193](https://github.com/aws/aws-cdk/issues/12193)) ([26121c8](https://github.com/aws/aws-cdk/commit/26121c81abf0fb92de97567c758a1ecf60f85f63)), closes [#276](https://github.com/aws/aws-cdk/issues/276) +* **ec2:** add m6gd and r6gd metadata ([#12302](https://github.com/aws/aws-cdk/issues/12302)) ([ce4eb20](https://github.com/aws/aws-cdk/commit/ce4eb2037f40148062784addb82ee8cf9881d129)), closes [#12301](https://github.com/aws/aws-cdk/issues/12301) +* **ec2:** add r5b instance type to instance class ([#12027](https://github.com/aws/aws-cdk/issues/12027)) ([d276b02](https://github.com/aws/aws-cdk/commit/d276b020e61ee4455c7ed9f093436d1aab319e76)), closes [#12025](https://github.com/aws/aws-cdk/issues/12025) +* **ec2:** Add VPC endpoints for Athena and Glue ([#12073](https://github.com/aws/aws-cdk/issues/12073)) ([73ef6b1](https://github.com/aws/aws-cdk/commit/73ef6b180c8a7c3d8e984b308149eeb9eb78b40b)), closes [#12072](https://github.com/aws/aws-cdk/issues/12072) +* **ecs:** deployment circuit breaker support ([#12168](https://github.com/aws/aws-cdk/issues/12168)) ([e8801a0](https://github.com/aws/aws-cdk/commit/e8801a0ddb04e75de87ba34f3a58b1adebae5301)) +* **ecs-patterns:** Add DeploymentController option to Fargate services ([#10452](https://github.com/aws/aws-cdk/issues/10452)) ([2cd233a](https://github.com/aws/aws-cdk/commit/2cd233a94fc2f3cb06211157738e59e8c7ee85e5)), closes [aws/containers-roadmap#130](https://github.com/aws/containers-roadmap/issues/130) [#10971](https://github.com/aws/aws-cdk/issues/10971) +* **ecs-patterns:** add ruleName optional parameter for ScheduledTask constructs ([#12190](https://github.com/aws/aws-cdk/issues/12190)) ([b1318bd](https://github.com/aws/aws-cdk/commit/b1318bda54d1c0955a371eccce76b748d312b570)) +* **ecs-patterns:** containerName for QueueProcessingEc2Service ([88d4149](https://github.com/aws/aws-cdk/commit/88d4149432d55e65b23448fd58d8ec3e96f3e72c)), closes [#10517](https://github.com/aws/aws-cdk/issues/10517) +* **eks:** attach cluster security group to self-managed nodes ([#12042](https://github.com/aws/aws-cdk/issues/12042)) ([1078bea](https://github.com/aws/aws-cdk/commit/1078bea4c90afaac76a5e81328a9d6ec44a79e9a)) +* **eks:** aws-node-termination-handler for spot instances now pulls the image from public ECR ([#12141](https://github.com/aws/aws-cdk/issues/12141)) ([c752fab](https://github.com/aws/aws-cdk/commit/c752fabf2022b5e697b6bf900e7878076f28b31a)), closes [#12134](https://github.com/aws/aws-cdk/issues/12134) +* **eks:** bundle kubectl, helm and awscli instead of SAR app ([#12129](https://github.com/aws/aws-cdk/issues/12129)) ([63bc98f](https://github.com/aws/aws-cdk/commit/63bc98f0d4a85b1c544d78420fd44579ce46a806)), closes [#11874](https://github.com/aws/aws-cdk/issues/11874) +* **eks:** connect all custom resources to the cluster VPC ([#10200](https://github.com/aws/aws-cdk/issues/10200)) ([eaa8222](https://github.com/aws/aws-cdk/commit/eaa82222349fcce1ef4b80e873a35002d6f036e5)) +* **eks:** option to disable manifest validation ([#12012](https://github.com/aws/aws-cdk/issues/12012)) ([579b923](https://github.com/aws/aws-cdk/commit/579b9235706d6848847a258bbb607a9bff6a9e11)), closes [#11763](https://github.com/aws/aws-cdk/issues/11763) +* **eks:** spot interruption handler can be disabled for self managed nodes ([#12453](https://github.com/aws/aws-cdk/issues/12453)) ([6ac1f4f](https://github.com/aws/aws-cdk/commit/6ac1f4fdef5853785d8e57652ec4c4e1d770844d)), closes [#12451](https://github.com/aws/aws-cdk/issues/12451) +* **eks:** spot support for managed nodegroups ([#11962](https://github.com/aws/aws-cdk/issues/11962)) ([6ccd00f](https://github.com/aws/aws-cdk/commit/6ccd00fc7641f3696559367d65733b66df707fa7)), closes [#11827](https://github.com/aws/aws-cdk/issues/11827) +* **elasticsearch:** add support for version 7_8 and 7_9 ([#12222](https://github.com/aws/aws-cdk/issues/12222)) ([09d1f6c](https://github.com/aws/aws-cdk/commit/09d1f6cae610477c17234eab4a02fc731e34e2cf)), closes [#12202](https://github.com/aws/aws-cdk/issues/12202) +* **elasticsearch:** Support `EnableVersionUpgrade` update policy ([#12239](https://github.com/aws/aws-cdk/issues/12239)) ([14f8b06](https://github.com/aws/aws-cdk/commit/14f8b06686368da15211dbd528928ad4000d9eb8)), closes [#12210](https://github.com/aws/aws-cdk/issues/12210) +* **elasticsearch:** support audit logs ([#12106](https://github.com/aws/aws-cdk/issues/12106)) ([d10ea63](https://github.com/aws/aws-cdk/commit/d10ea631f8699385cadf61d6e0a067b68da37df6)), closes [#12105](https://github.com/aws/aws-cdk/issues/12105) * **elasticsearch:** UltraWarm nodes ([#12265](https://github.com/aws/aws-cdk/issues/12265)) ([3a9056d](https://github.com/aws/aws-cdk/commit/3a9056d87b0c739247013fc74678ab54fd3eb382)), closes [#6462](https://github.com/aws/aws-cdk/issues/6462) +* **ivs:** add IVS L2 Constructs ([#11454](https://github.com/aws/aws-cdk/issues/11454)) ([f813bff](https://github.com/aws/aws-cdk/commit/f813bff2da4792cfa7bfce6f572a7d2bb5c4759d)) +* **lambda:** encryption key for environment variables ([#11893](https://github.com/aws/aws-cdk/issues/11893)) ([ccbaf83](https://github.com/aws/aws-cdk/commit/ccbaf8399c3a9f3ff6e60758e0b713d82f37420b)), closes [#10837](https://github.com/aws/aws-cdk/issues/10837) +* **lambda-nodejs:** expose more esbuild options ([#12063](https://github.com/aws/aws-cdk/issues/12063)) ([bab21b3](https://github.com/aws/aws-cdk/commit/bab21b377593b7475b047d05a54914344352c054)), closes [#12046](https://github.com/aws/aws-cdk/issues/12046) +* **lambda-nodejs:** Expose optional props for advanced usage of esbuild ([#12123](https://github.com/aws/aws-cdk/issues/12123)) ([ecc98ac](https://github.com/aws/aws-cdk/commit/ecc98ac75acb1adbb4f5e66f853dc3226e490c98)) +* **rds:** add grantConnect for RDS Proxy ([#12243](https://github.com/aws/aws-cdk/issues/12243)) ([eb45ca8](https://github.com/aws/aws-cdk/commit/eb45ca816626b243daacbd3a8916ac1e5db202ea)), closes [#10133](https://github.com/aws/aws-cdk/issues/10133) +* **rds:** add support for setting public accessibility ([#12164](https://github.com/aws/aws-cdk/issues/12164)) ([b8f48e5](https://github.com/aws/aws-cdk/commit/b8f48e514c09d2f46d8bbae27171877df61e7f2a)), closes [#12093](https://github.com/aws/aws-cdk/issues/12093) +* **route53:** Vpc endpoint service private dns ([#10780](https://github.com/aws/aws-cdk/issues/10780)) ([8f6f9a8](https://github.com/aws/aws-cdk/commit/8f6f9a8678496e131a43ca4c76e561d50a0a0de8)) +* **s3:** option to auto delete objects upon bucket removal ([#12090](https://github.com/aws/aws-cdk/issues/12090)) ([32e9c23](https://github.com/aws/aws-cdk/commit/32e9c23be2852cfca79a57c90e52b9301b1c7081)), closes [#3297](https://github.com/aws/aws-cdk/issues/3297) [#9751](https://github.com/aws/aws-cdk/issues/9751) +* **s3-deployment:** support vpc in BucketDeploymentProps ([#12035](https://github.com/aws/aws-cdk/issues/12035)) ([6caf72f](https://github.com/aws/aws-cdk/commit/6caf72f67d6d3373186e57f32671369c2cc8b56e)), closes [#11734](https://github.com/aws/aws-cdk/issues/11734) +* **sns:** fifo topic with content-based deduplication support [#11127](https://github.com/aws/aws-cdk/issues/11127) ([#11588](https://github.com/aws/aws-cdk/issues/11588)) ([7e60d8e](https://github.com/aws/aws-cdk/commit/7e60d8e7aa7a6507675a24991d9c9832017ddfed)) +* **stepfunctions-tasks:** add support for ModelClientConfig to SageMakerCreateTransformJob ([#11892](https://github.com/aws/aws-cdk/issues/11892)) ([bf05092](https://github.com/aws/aws-cdk/commit/bf050928c033328b259746c0a7f33038aadc4c17)) +* **synthetics:** Update Cloudwatch Synthetics canaries NodeJS runtimes ([#11866](https://github.com/aws/aws-cdk/issues/11866)) ([4f6e377](https://github.com/aws/aws-cdk/commit/4f6e377ae3f35c3fa010e1597c3d71ef6e6e9a04)), closes [#11870](https://github.com/aws/aws-cdk/issues/11870) +* Configre containerName for QueueProcessingFargateService ([fad27f6](https://github.com/aws/aws-cdk/commit/fad27f65a73dc3b9c208439c5e474295491381da)) +* remove the construct compatibility layer ([#12054](https://github.com/aws/aws-cdk/issues/12054)) ([8d3c02c](https://github.com/aws/aws-cdk/commit/8d3c02c117072433bf649003af0c4fee4a1f8c4b)) ### Bug Fixes +* **apigatewayv2:** vpclink - explicit subnet specification still causes private subnets to be included ([#12401](https://github.com/aws/aws-cdk/issues/12401)) ([336a58f](https://github.com/aws/aws-cdk/commit/336a58f06a3b3a9f5db2a79350f8721244767e3b)), closes [#12083](https://github.com/aws/aws-cdk/issues/12083) +* **appsync:** rds data source configured with cluster arn ([#12255](https://github.com/aws/aws-cdk/issues/12255)) ([d0305f3](https://github.com/aws/aws-cdk/commit/d0305f33da41ce1f07a5d571eb21c0ee9ea852d0)), closes [#11536](https://github.com/aws/aws-cdk/issues/11536) +* **aws-ecs:** Support configuring Windows capacity for cluster ASGs ([#12365](https://github.com/aws/aws-cdk/issues/12365)) ([6d9a0f1](https://github.com/aws/aws-cdk/commit/6d9a0f1ea0c05e7902ccca4d0fc4040e688846e5)) +* **aws-ecs:** update desired count to be optional ([#12223](https://github.com/aws/aws-cdk/issues/12223)) ([455540b](https://github.com/aws/aws-cdk/commit/455540b0915742c1612e924fc2d7c0987b1bc592)) +* **cfn-include:** cfn-include fails in monocdk ([#11595](https://github.com/aws/aws-cdk/issues/11595)) ([45e43f2](https://github.com/aws/aws-cdk/commit/45e43f28f5d175bba654ee44d683aa3fc1854f9a)), closes [#11342](https://github.com/aws/aws-cdk/issues/11342) +* **cli:** CLI doesn't read context from ~/.cdk.json ([#12394](https://github.com/aws/aws-cdk/issues/12394)) ([2389a9b](https://github.com/aws/aws-cdk/commit/2389a9b5742583f1d58c66a4f513ee4d833baab5)), closes [#10823](https://github.com/aws/aws-cdk/issues/10823) [#4802](https://github.com/aws/aws-cdk/issues/4802) +* **cli:** cross account asset upload no longer works ([#12155](https://github.com/aws/aws-cdk/issues/12155)) ([1c8cb11](https://github.com/aws/aws-cdk/commit/1c8cb11961c53fad499668aa39600f2038dce9d7)) +* **cli:** cross-account deployment no longer works ([#11966](https://github.com/aws/aws-cdk/issues/11966)) ([6fb3448](https://github.com/aws/aws-cdk/commit/6fb34483432b5cdcc485bbf6bfdb7bbb74f4b895)), closes [#11350](https://github.com/aws/aws-cdk/issues/11350) [#11792](https://github.com/aws/aws-cdk/issues/11792) [#11792](https://github.com/aws/aws-cdk/issues/11792) +* **cloudfront:** cross-region EdgeFunction does not work within a Stage ([#12103](https://github.com/aws/aws-cdk/issues/12103)) ([98d781c](https://github.com/aws/aws-cdk/commit/98d781cf9bc39d4c57454c4c60390c699326e84d)), closes [#12092](https://github.com/aws/aws-cdk/issues/12092) +* **cloudfront:** EdgeFunction fails with newStyleStackSynthesis ([#12356](https://github.com/aws/aws-cdk/issues/12356)) ([fb02736](https://github.com/aws/aws-cdk/commit/fb02736e7fb471b8ebd0d80e352f68f3cbf5270e)), closes [#12172](https://github.com/aws/aws-cdk/issues/12172) +* **codebuild:** missing permissions for SecretsManager environment variables ([#12121](https://github.com/aws/aws-cdk/issues/12121)) ([1a13d8f](https://github.com/aws/aws-cdk/commit/1a13d8fbb3ea4edd4ff8fb0a2608547f63b902f9)) +* **codebuild:** Project lacks permissions to its log destinations ([#12213](https://github.com/aws/aws-cdk/issues/12213)) ([b92ed51](https://github.com/aws/aws-cdk/commit/b92ed51c6ff11f8453755b6381a3cf1f12b0fcc1)), closes [#11444](https://github.com/aws/aws-cdk/issues/11444) [#12179](https://github.com/aws/aws-cdk/issues/12179) +* **codepipeline-actions:** use codebuild batch iam permissions when `executeBatchBuild: true` ([#12181](https://github.com/aws/aws-cdk/issues/12181)) ([5279f37](https://github.com/aws/aws-cdk/commit/5279f37288283a37c952440a7f2082517c56af3a)) +* **core:** capturing stack traces still takes a long time ([#12180](https://github.com/aws/aws-cdk/issues/12180)) ([71cd38c](https://github.com/aws/aws-cdk/commit/71cd38c8fac276e34b79ad416305b214a57af25a)), closes [#11170](https://github.com/aws/aws-cdk/issues/11170) +* **core:** DefaultStackSynthesizer bucket prefix missing for template assets ([#11855](https://github.com/aws/aws-cdk/issues/11855)) ([50a3d3a](https://github.com/aws/aws-cdk/commit/50a3d3acf3e413d9b4e51197d2be4ea1349c0955)), closes [#10710](https://github.com/aws/aws-cdk/issues/10710) [#11327](https://github.com/aws/aws-cdk/issues/11327) +* **dynamodb:** allow global replicas with Provisioned billing mode ([#12159](https://github.com/aws/aws-cdk/issues/12159)) ([ab5a383](https://github.com/aws/aws-cdk/commit/ab5a38379999bb57f28bbf22ec09d315df6b358a)), closes [#11346](https://github.com/aws/aws-cdk/issues/11346) +* **dynamodb:** missing grantRead for ConditionCheckItem ([#12313](https://github.com/aws/aws-cdk/issues/12313)) ([e157007](https://github.com/aws/aws-cdk/commit/e1570072440b07b6b82219c1a4371386c541fb1c)) +* **ec2:** 'encoded list token' error using Vpc imported from deploy-time lists ([#12040](https://github.com/aws/aws-cdk/issues/12040)) ([0690da9](https://github.com/aws/aws-cdk/commit/0690da925144c821a73bfab4ae8d678a8c074357)) +* **ec2:** fromInterfaceVpcEndpointAttributes: Security Groups should not be required ([#11857](https://github.com/aws/aws-cdk/issues/11857)) ([86ae5d6](https://github.com/aws/aws-cdk/commit/86ae5d6ec5291f7a8da37bbf021c31f88e66d283)), closes [#11050](https://github.com/aws/aws-cdk/issues/11050) +* **ec2:** interface endpoint AZ lookup does not guard against broken situations ([#12033](https://github.com/aws/aws-cdk/issues/12033)) ([80f0bfd](https://github.com/aws/aws-cdk/commit/80f0bfd167430a015e71b00506e0ecc280068e86)) * **ec2:** Vpc.fromVpcAttributes cannot be used with EKS ([#12569](https://github.com/aws/aws-cdk/issues/12569)) ([1cdc244](https://github.com/aws/aws-cdk/commit/1cdc244e940396c962147d4e3ada4a0722923321)), closes [#12040](https://github.com/aws/aws-cdk/issues/12040) [#12160](https://github.com/aws/aws-cdk/issues/12160) +* **eks:** aws-node-termination-handler incorrectly deployed to on-demand instances as well ([#12369](https://github.com/aws/aws-cdk/issues/12369)) ([05c0b5f](https://github.com/aws/aws-cdk/commit/05c0b5f5a31c3fe89c47c6db8d9051f7165641a9)), closes [#12368](https://github.com/aws/aws-cdk/issues/12368) +* **eks:** failure to deploy cluster since aws-auth configmap exists ([#12068](https://github.com/aws/aws-cdk/issues/12068)) ([dc8a98a](https://github.com/aws/aws-cdk/commit/dc8a98a5436a7a2347fa9676d84f73a8cf00cd49)), closes [#12053](https://github.com/aws/aws-cdk/issues/12053) +* **eks:** k8s resources accidentally deleted due to logical ID change ([#12053](https://github.com/aws/aws-cdk/issues/12053)) ([019852e](https://github.com/aws/aws-cdk/commit/019852e4834327d848c9fe8dc271f1d4d5117fb8)), closes [#10397](https://github.com/aws/aws-cdk/issues/10397) [#10397](https://github.com/aws/aws-cdk/issues/10397) +* **eks:** nodegroup synthesis fails when configured with an AMI type that is not compatible to the default instance type ([#12441](https://github.com/aws/aws-cdk/issues/12441)) ([5f6f0f9](https://github.com/aws/aws-cdk/commit/5f6f0f9d46dbd460ac03dd5f9f4874eaa41611d8)), closes [40aws-cdk/aws-eks/lib/managed-nodegroup.ts#L294](https://github.com/40aws-cdk/aws-eks/lib/managed-nodegroup.ts/issues/L294) [40aws-cdk/aws-eks/lib/managed-nodegroup.ts#L302-L304](https://github.com/40aws-cdk/aws-eks/lib/managed-nodegroup.ts/issues/L302-L304) [40aws-cdk/aws-eks/lib/managed-nodegroup.ts#L329-L330](https://github.com/40aws-cdk/aws-eks/lib/managed-nodegroup.ts/issues/L329-L330) [40aws-cdk/aws-eks/lib/managed-nodegroup.ts#L324-L325](https://github.com/40aws-cdk/aws-eks/lib/managed-nodegroup.ts/issues/L324-L325) +* **eks:** Self managed nodes cannot be added to LoadBalancers created via the `LoadBalancer` service type ([#12269](https://github.com/aws/aws-cdk/issues/12269)) ([470a881](https://github.com/aws/aws-cdk/commit/470a8811ec18c7f0764018398ec7c3da05b7baac)) +* **elasticsearch:** Defining 2 domains with logging enabled in the same stack fails on construct id conflict ([#12055](https://github.com/aws/aws-cdk/issues/12055)) ([ec3ce19](https://github.com/aws/aws-cdk/commit/ec3ce19bc8203703cb1abcecdb2afc674c2013f6)), closes [#12017](https://github.com/aws/aws-cdk/issues/12017) +* **elasticsearch:** domain configured with access policies and a custom kms key fails to deploy ([#11699](https://github.com/aws/aws-cdk/issues/11699)) ([245ee6a](https://github.com/aws/aws-cdk/commit/245ee6a1253eeaa79177e960c164bf3a409d2e57)) +* **elasticsearch:** domain fails due to log publishing keys on unsupported cluster versions ([#11622](https://github.com/aws/aws-cdk/issues/11622)) ([e6bb96f](https://github.com/aws/aws-cdk/commit/e6bb96ff6bae96e3167c82f6de97807217ddb3be)) +* **elasticsearch:** log policies are overwritten when creating 2 domains which also results in a failure while destroying the stack ([#12056](https://github.com/aws/aws-cdk/issues/12056)) ([889d089](https://github.com/aws/aws-cdk/commit/889d0892bae10243e03900f0ae6db078fc7eb320)), closes [#12016](https://github.com/aws/aws-cdk/issues/12016) +* **elbv2:** can't import two application listeners into the same scope ([#12373](https://github.com/aws/aws-cdk/issues/12373)) ([6534dcf](https://github.com/aws/aws-cdk/commit/6534dcf3e04a55f5c6d28203192cbbddb5d119e6)), closes [#12132](https://github.com/aws/aws-cdk/issues/12132) * **iam:** Groups are erroneously accepted as the Principal of a policy ([#11479](https://github.com/aws/aws-cdk/issues/11479)) ([#12549](https://github.com/aws/aws-cdk/issues/12549)) ([c9b0859](https://github.com/aws/aws-cdk/commit/c9b085996319e8d4d7d2db19184fb2f2148889a3)) +* **lambda:** make the Version hash calculation stable ([#12364](https://github.com/aws/aws-cdk/issues/12364)) ([4da50e5](https://github.com/aws/aws-cdk/commit/4da50e5bd9845d6e32687b147b6212decb422301)) +* **lambda-layer-*:** unable to calculate layer asset hash due to missing file ([#12293](https://github.com/aws/aws-cdk/issues/12293)) ([646f098](https://github.com/aws/aws-cdk/commit/646f0983143c77c2b6c68598a0bc8b290b5f6184)), closes [#12291](https://github.com/aws/aws-cdk/issues/12291) +* **lambda-nodejs:** local bundling fails with relative depsLockFilePath ([#12125](https://github.com/aws/aws-cdk/issues/12125)) ([d5afb55](https://github.com/aws/aws-cdk/commit/d5afb555b983c8c034f63dd58d1fa24b82b6e9fe)), closes [#12115](https://github.com/aws/aws-cdk/issues/12115) +* **logs:** custom resource Lambda uses old NodeJS version ([#12228](https://github.com/aws/aws-cdk/issues/12228)) ([29c4943](https://github.com/aws/aws-cdk/commit/29c4943466f4a911f65a2a13cf9e776ade9b8dfe)) +* **rds:** add the dependency on proxy targets to ensure dbInstance ([#12237](https://github.com/aws/aws-cdk/issues/12237)) ([8f74169](https://github.com/aws/aws-cdk/commit/8f74169f57f3be745cf6395149e2697d6dc497ee)), closes [#11311](https://github.com/aws/aws-cdk/issues/11311) +* **s3:** Bucket.grantWrite() no longer adds s3:PutObject* permission ([#12391](https://github.com/aws/aws-cdk/issues/12391)) ([cd437cf](https://github.com/aws/aws-cdk/commit/cd437cf630266086a3ddf9e326f215b5d1acdfd7)) +* **s3-deployment:** stop using deprecated API's that will cause breakage post 01/31/21 ([#12491](https://github.com/aws/aws-cdk/issues/12491)) ([f50f928](https://github.com/aws/aws-cdk/commit/f50f92880bbc219c331c858eaace712e0757507d)) +* **sns:** require topic name for fifo topic [#12386](https://github.com/aws/aws-cdk/issues/12386) ([#12437](https://github.com/aws/aws-cdk/issues/12437)) ([37d8ccc](https://github.com/aws/aws-cdk/commit/37d8ccc763f532999bc9f114264f3d29725b0f28)) +* **stepfunctions-tasks:** EvaluateExpression does not support JSON paths with dash ([#12248](https://github.com/aws/aws-cdk/issues/12248)) ([da1ed08](https://github.com/aws/aws-cdk/commit/da1ed08a6a2de584f5ddf43dab4efbb530541419)), closes [#12221](https://github.com/aws/aws-cdk/issues/12221) +* **stepfunctions-tasks:** policies created for EMR tasks have ARNs that are not partition-aware ([#11553](https://github.com/aws/aws-cdk/issues/11553)) ([1cf6713](https://github.com/aws/aws-cdk/commit/1cf6713b778c789af7a420ad890910a9516473f0)), closes [#11503](https://github.com/aws/aws-cdk/issues/11503) -## [2.0.0-alpha.0](https://github.com/aws/aws-cdk/compare/v1.77.0...v2.0.0-alpha.0) (2020-12-11) - - -### Bug Fixes -* **scripts:** lerna not found in merge-forward ([#11672](https://github.com/aws/aws-cdk/issues/11672)) ([b1a8e33](https://github.com/aws/aws-cdk/commit/b1a8e336c94f7d2a93a023d6dc853d23934bfa06)) +* **apigatewayv2:** apiEndpoint is elevated to the IHttpApi interface ([#11988](https://github.com/aws/aws-cdk/issues/11988)) ([bc5b9b6](https://github.com/aws/aws-cdk/commit/bc5b9b659444bfbef9cfc3c8666fce7e6f45465a)) +* **eks:** Remove legacy and deprecated code ([#12189](https://github.com/aws/aws-cdk/issues/12189)) ([6a20e61](https://github.com/aws/aws-cdk/commit/6a20e61dd2ed8366cbff1451c943a02b79380de2)) ## 2.0.0-alpha.0 (2020-12-11) -This is the first alpha release of CDK 2.0. 🎉 +This is the first alpha release of CDK 2.0. 🎉 diff --git a/scripts/bump.js b/scripts/bump.js index a1d678c57ce18..5d8b4d63a62d0 100755 --- a/scripts/bump.js +++ b/scripts/bump.js @@ -1,8 +1,9 @@ #!/usr/bin/env node -const standardVersion = require('standard-version'); const fs = require('fs'); const path = require('path'); +const semver = require('semver'); const ver = require('./resolve-version'); +const { exec } = require('child_process'); const repoRoot = path.join(__dirname, '..'); const releaseAs = process.argv[2] || 'minor'; @@ -40,7 +41,19 @@ async function main() { console.error(`BUMP_CANDIDATE is set, so bumping version for testing (with the "${opts.prerelease}" prerelease tag)`); } - return standardVersion(opts); + // `standard-release` will -- among other things -- create the changelog. + // However, on the v2 branch, `conventional-changelog` (which `standard-release` uses) gets confused + // and creates really muddled changelogs with both v1 and v2 releases intermingled, and lots of missing data. + // A super HACK here is to locally remove all version tags that don't match this major version prior + // to doing the bump, and then later fetching to restore those tags. + const majorVersion = semver.major(ver.version); + await exec(`git tag -d $(git tag -l | grep -v '^v${majorVersion}.')`); + + // Delay loading standard-version until the git tags have been pruned. + const standardVersion = require('standard-version'); + await standardVersion(opts); + + await exec('git fetch -t'); } main().catch(err => { From 7554246ab6d0819bc57d5e67cd9e4e10a3b7e742 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Mon, 15 Feb 2021 15:05:54 +0000 Subject: [PATCH 053/304] feat: future flags 'core:enableStackNameDuplicates', 'aws-secretsmanager:parseOwnedSecretName' and 'aws-kms:defaultKeyPolicies' are no longer supported (#12644) The following feature flags have been marked as expired - * @aws-cdk/core:enableStackNameDuplicates * @aws-cdk/aws-secretsmanager:parseOwnedSecretName * @aws-cdk/aws-kms:defaultKeyPolicies These flags will be unavailable in CDKv2 and setting this flag in the context will result in an error. Most of the changes here are related to the feature flag '@aws-cdk/aws-kms:defaultKeyPolicies' which changes the KMS permissions. Since KMS is a fundamental AWS service, used by almost all downstream services, there is a significant change to all snapshots. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- ...g.cfn-template-from-repo.lit.expected.json | 90 +------- ...yed-through-codepipeline.lit.expected.json | 181 +--------------- .../test/integ.lambda-pipeline.expected.json | 57 +---- .../integ.pipeline-alexa-deploy.expected.json | 57 +---- .../test/integ.pipeline-cfn.expected.json | 91 +------- ...g.pipeline-code-commit-build.expected.json | 109 +--------- .../integ.pipeline-code-commit.expected.json | 58 +---- .../test/integ.pipeline-events.expected.json | 95 +-------- ...integ.pipeline-stepfunctions.expected.json | 57 +---- .../test/integ.cluster.expected.json | 20 +- .../test/integ.dynamodb.sse.expected.json | 54 +---- .../test/integ.eks-cluster.expected.json | 20 +- ...elasticsearch.custom-kms-key.expected.json | 20 +- .../integ.pipeline-event-target.expected.json | 39 +--- .../aws-glue/test/integ.table.expected.json | 39 +--- .../test/integ.key-sharing.lit.expected.json | 18 +- .../aws-kms/test/integ.key.expected.json | 18 +- .../test/integ.cluster-s3.expected.json | 18 +- .../aws-rds/test/integ.cluster.expected.json | 18 +- .../integ.bucket-notifications.expected.json | 18 +- ...integ.bucket-grantdelete-kms.expected.json | 18 +- .../aws-s3/test/integ.bucket.expected.json | 37 +--- .../test/integ.secret-name-parsed.ts | 3 - .../test/integ.actions.expected.json | 18 +- .../aws-sns/test/integ.sns.expected.json | 20 +- .../aws-sqs/test/integ.sqs.expected.json | 33 +-- .../integ.call-sagemaker.expected.json | 54 +---- .../integ.create-training-job.expected.json | 54 +---- packages/@aws-cdk/cx-api/lib/features.ts | 3 + .../integ.pipeline-with-assets.expected.json | 198 +----------------- .../test/integ.pipeline.expected.json | 164 +-------------- .../test/__snapshots__/synth.test.js.snap | 161 +------------- tools/cdk-build-tools/lib/feature-flag.ts | 8 +- 33 files changed, 56 insertions(+), 1792 deletions(-) diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.cfn-template-from-repo.lit.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.cfn-template-from-repo.lit.expected.json index 9236ecca96b41..8f708cfa71a21 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.cfn-template-from-repo.lit.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.cfn-template-from-repo.lit.expected.json @@ -12,23 +12,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -49,76 +33,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceCodePipelineActionRoleC6F9E7F5", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineDeployPrepareChangesRoleD28C853C", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineDeployPrepareChangesCodePipelineActionRole41931444", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -878,4 +792,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-deployed-through-codepipeline.lit.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-deployed-through-codepipeline.lit.expected.json index 023573c87412f..9547f050e1e8b 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-deployed-through-codepipeline.lit.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-deployed-through-codepipeline.lit.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,169 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceCdkCodeSourceCodePipelineActionRole237947B8", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceLambdaCodeSourceCodePipelineActionRole4E89EF60", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "CdkBuildProjectRoleE0B6FEB0", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "CdkBuildProjectRoleE0B6FEB0", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "LambdaBuildProjectRoleD0C4F982", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "LambdaBuildProjectRoleD0C4F982", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineDeployLambdaCFNDeployRole89CA1043", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineDeployLambdaCFNDeployCodePipelineActionRoleF8A74488", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-pipeline.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-pipeline.expected.json index 906a2ebb7ccbd..3ff81600a78eb 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-pipeline.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.lambda-pipeline.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,43 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceCodePipelineActionRoleC6F9E7F5", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -841,4 +788,4 @@ ] } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-alexa-deploy.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-alexa-deploy.expected.json index 262def042dc8a..561b739cb4b1c 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-alexa-deploy.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-alexa-deploy.expected.json @@ -16,23 +16,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -53,43 +37,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceCodePipelineActionRoleC6F9E7F5", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -446,4 +393,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-cfn.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-cfn.expected.json index 3571c79c9a81f..67aaceac34f75 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-cfn.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-cfn.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,77 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceCodePipelineActionRoleC6F9E7F5", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineSourceAdditionalSourceCodePipelineActionRole0897461A", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineCFNDeployCFNCodePipelineActionRole444CF5DD", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -818,4 +731,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit-build.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit-build.expected.json index dbf8c85f91394..e2292c1bbbdbd 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit-build.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit-build.expected.json @@ -263,23 +263,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -300,97 +284,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelinesourceCodePipelineActionRoleB7E0306A", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyBuildProjectRole6B7E2258", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyBuildProjectRole6B7E2258", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyBuildProjectRole6B7E2258", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit.expected.json index 0561884b64bd3..bde54408d887d 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-code-commit.expected.json @@ -77,23 +77,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -114,44 +98,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleD68726F7", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelinesourceCodePipelineActionRoleB7E0306A", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -599,4 +545,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-events.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-events.expected.json index d2031a00a8252..50e081f6300f9 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-events.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-events.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,81 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyPipelineRoleC0D47CA4", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyPipelineSourceCodeCommitSourceCodePipelineActionRole0B6D0F4F", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "BuildProjectRoleAA92C755", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "BuildProjectRoleAA92C755", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -933,4 +842,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-stepfunctions.expected.json b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-stepfunctions.expected.json index 2d7df75522359..da70221749108 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-stepfunctions.expected.json +++ b/packages/@aws-cdk/aws-codepipeline-actions/test/integ.pipeline-stepfunctions.expected.json @@ -49,23 +49,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -86,43 +70,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyPipelineRoleC0D47CA4", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyPipelineSourceCodePipelineActionRoleAA05D76F", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -593,4 +540,4 @@ "DeletionPolicy": "Retain" } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-docdb/test/integ.cluster.expected.json b/packages/@aws-cdk/aws-docdb/test/integ.cluster.expected.json index 69ced2a747f81..e8737956c6440 100644 --- a/packages/@aws-cdk/aws-docdb/test/integ.cluster.expected.json +++ b/packages/@aws-cdk/aws-docdb/test/integ.cluster.expected.json @@ -373,23 +373,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -522,4 +506,4 @@ "DeletionPolicy": "Delete" } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-dynamodb/test/integ.dynamodb.sse.expected.json b/packages/@aws-cdk/aws-dynamodb/test/integ.dynamodb.sse.expected.json index ee7c8f9988f9e..2f49a9b48157d 100644 --- a/packages/@aws-cdk/aws-dynamodb/test/integ.dynamodb.sse.expected.json +++ b/packages/@aws-cdk/aws-dynamodb/test/integ.dynamodb.sse.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,22 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "Role1ABCC5F0", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -358,23 +326,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -619,4 +571,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json index 5c0b4bf402a5b..8fe2c199b1953 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json @@ -34,23 +34,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -4772,4 +4756,4 @@ "Default": "/aws/service/eks/optimized-ami/1.14/amazon-linux-2/recommended/image_id" } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json index 201e3d81bd99d..1da03e98c1984 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -466,4 +450,4 @@ "Description": "Artifact hash for asset \"b64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94\"" } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-events-targets/test/codepipeline/integ.pipeline-event-target.expected.json b/packages/@aws-cdk/aws-events-targets/test/codepipeline/integ.pipeline-event-target.expected.json index f2ed2f2752e75..333930c6c23ff 100644 --- a/packages/@aws-cdk/aws-events-targets/test/codepipeline/integ.pipeline-event-target.expected.json +++ b/packages/@aws-cdk/aws-events-targets/test/codepipeline/integ.pipeline-event-target.expected.json @@ -12,23 +12,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -49,25 +33,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "pipelinePipeline22F2A91DRole58B7B05E", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -474,4 +439,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-glue/test/integ.table.expected.json b/packages/@aws-cdk/aws-glue/test/integ.table.expected.json index d9f6d7f602195..c95d567dfa2bd 100644 --- a/packages/@aws-cdk/aws-glue/test/integ.table.expected.json +++ b/packages/@aws-cdk/aws-glue/test/integ.table.expected.json @@ -302,23 +302,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -339,25 +323,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyUserDC45028B", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -837,4 +802,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-kms/test/integ.key-sharing.lit.expected.json b/packages/@aws-cdk/aws-kms/test/integ.key-sharing.lit.expected.json index 1a2290cc9bce4..24704085b587e 100644 --- a/packages/@aws-cdk/aws-kms/test/integ.key-sharing.lit.expected.json +++ b/packages/@aws-cdk/aws-kms/test/integ.key-sharing.lit.expected.json @@ -7,23 +7,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-kms/test/integ.key.expected.json b/packages/@aws-cdk/aws-kms/test/integ.key.expected.json index a11ff1abc7e94..6ed1da4638a2f 100644 --- a/packages/@aws-cdk/aws-kms/test/integ.key.expected.json +++ b/packages/@aws-cdk/aws-kms/test/integ.key.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json b/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json index 710884195806a..394c50be1df78 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json @@ -361,23 +361,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json b/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json index 37f63d001843e..25f2149bf8a0c 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json @@ -371,23 +371,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json b/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json index afcc652c50f99..dee4dafe9e74b 100644 --- a/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json +++ b/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json @@ -252,23 +252,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-s3/test/integ.bucket-grantdelete-kms.expected.json b/packages/@aws-cdk/aws-s3/test/integ.bucket-grantdelete-kms.expected.json index 08c82035e2188..bf2f24e021308 100644 --- a/packages/@aws-cdk/aws-s3/test/integ.bucket-grantdelete-kms.expected.json +++ b/packages/@aws-cdk/aws-s3/test/integ.bucket-grantdelete-kms.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-s3/test/integ.bucket.expected.json b/packages/@aws-cdk/aws-s3/test/integ.bucket.expected.json index 1919b71360c2d..e816e78115fde 100644 --- a/packages/@aws-cdk/aws-s3/test/integ.bucket.expected.json +++ b/packages/@aws-cdk/aws-s3/test/integ.bucket.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,25 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "MyUserDC45028B", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" diff --git a/packages/@aws-cdk/aws-secretsmanager/test/integ.secret-name-parsed.ts b/packages/@aws-cdk/aws-secretsmanager/test/integ.secret-name-parsed.ts index 49dde40e8b9f4..2d245cc6e3e01 100644 --- a/packages/@aws-cdk/aws-secretsmanager/test/integ.secret-name-parsed.ts +++ b/packages/@aws-cdk/aws-secretsmanager/test/integ.secret-name-parsed.ts @@ -39,9 +39,6 @@ class SecretsManagerStack extends cdk.Stack { } const app = new cdk.App({ - context: { - '@aws-cdk/aws-secretsmanager:parseOwnedSecretName': 'true', - }, }); new SecretsManagerStack(app, 'Integ-SecretsManager-ParsedSecretName'); app.synth(); diff --git a/packages/@aws-cdk/aws-ses-actions/test/integ.actions.expected.json b/packages/@aws-cdk/aws-ses-actions/test/integ.actions.expected.json index 2bde038826803..b58b770bcd426 100644 --- a/packages/@aws-cdk/aws-ses-actions/test/integ.actions.expected.json +++ b/packages/@aws-cdk/aws-ses-actions/test/integ.actions.expected.json @@ -121,23 +121,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { diff --git a/packages/@aws-cdk/aws-sns/test/integ.sns.expected.json b/packages/@aws-cdk/aws-sns/test/integ.sns.expected.json index 8ef28440f5185..86cfd60faf932 100644 --- a/packages/@aws-cdk/aws-sns/test/integ.sns.expected.json +++ b/packages/@aws-cdk/aws-sns/test/integ.sns.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -65,4 +49,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json b/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json index 4ad0f8e0c8b34..30c3a8a66bfac 100644 --- a/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json +++ b/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json @@ -24,23 +24,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -61,19 +45,6 @@ } }, "Resource": "*" - }, - { - "Action": "kms:Decrypt", - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "Role1ABCC5F0", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -208,4 +179,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.call-sagemaker.expected.json b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.call-sagemaker.expected.json index 06de00eb99d3f..699a2ff2d686b 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.call-sagemaker.expected.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.call-sagemaker.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,40 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "TrainTaskSagemakerRoleD5A6F967", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "TrainTaskSagemakerRoleD5A6F967", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -636,4 +586,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.create-training-job.expected.json b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.create-training-job.expected.json index fe1ebdecd9509..5b60bc0b1e500 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.create-training-job.expected.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sagemaker/integ.create-training-job.expected.json @@ -6,23 +6,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -43,40 +27,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "TrainTaskSagemakerRole0A9B1CDD", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - "kms:Decrypt" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "TrainTaskSagemakerRole0A9B1CDD", - "Arn" - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" @@ -408,4 +358,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/@aws-cdk/cx-api/lib/features.ts b/packages/@aws-cdk/cx-api/lib/features.ts index 57c9a5738ee96..2e553f0f5ab4e 100644 --- a/packages/@aws-cdk/cx-api/lib/features.ts +++ b/packages/@aws-cdk/cx-api/lib/features.ts @@ -120,6 +120,9 @@ export const FUTURE_FLAGS = { * and block usages of old feature flags in the new major version of CDK. */ export const FUTURE_FLAGS_EXPIRED: string[] = [ + ENABLE_STACK_NAME_DUPLICATES_CONTEXT, + KMS_DEFAULT_KEY_POLICIES, + SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME, ]; /** diff --git a/packages/@aws-cdk/pipelines/test/integ.pipeline-with-assets.expected.json b/packages/@aws-cdk/pipelines/test/integ.pipeline-with-assets.expected.json index 365e0fa9d06ee..f0427b95f7b51 100644 --- a/packages/@aws-cdk/pipelines/test/integ.pipeline-with-assets.expected.json +++ b/packages/@aws-cdk/pipelines/test/integ.pipeline-with-assets.expected.json @@ -38,23 +38,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -71,186 +55,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleB27FAA37", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineBuildSynthCdkBuildProjectRole231EEA2A", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineBuildSynthCdkBuildProjectRole231EEA2A", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineUpdatePipelineSelfMutationRole57E559E8", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineUpdatePipelineSelfMutationRole57E559E8", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineAssetsFileRole59943A77", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineAssetsFileRole59943A77", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelinePreProdUseSourceProjectRole69B20A71", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelinePreProdUseSourceProjectRole69B20A71", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::12345678:role/cdk-hnb659fds-deploy-role-12345678-test-region" - ] - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" diff --git a/packages/@aws-cdk/pipelines/test/integ.pipeline.expected.json b/packages/@aws-cdk/pipelines/test/integ.pipeline.expected.json index 9e0541be1e17d..787f89f4c09fb 100644 --- a/packages/@aws-cdk/pipelines/test/integ.pipeline.expected.json +++ b/packages/@aws-cdk/pipelines/test/integ.pipeline.expected.json @@ -38,23 +38,7 @@ "KeyPolicy": { "Statement": [ { - "Action": [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource" - ], + "Action": "kms:*", "Effect": "Allow", "Principal": { "AWS": { @@ -71,152 +55,6 @@ } }, "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineRoleB27FAA37", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineBuildSynthCdkBuildProjectRole231EEA2A", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineBuildSynthCdkBuildProjectRole231EEA2A", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineUpdatePipelineSelfMutationRole57E559E8", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelineUpdatePipelineSelfMutationRole57E559E8", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelinePreProdUseSourceProjectRole69B20A71", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::GetAtt": [ - "PipelinePreProdUseSourceProjectRole69B20A71", - "Arn" - ] - } - }, - "Resource": "*" - }, - { - "Action": [ - "kms:Decrypt", - "kms:DescribeKey" - ], - "Effect": "Allow", - "Principal": { - "AWS": { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":iam::12345678:role/cdk-hnb659fds-deploy-role-12345678-test-region" - ] - ] - } - }, - "Resource": "*" } ], "Version": "2012-10-17" diff --git a/packages/decdk/test/__snapshots__/synth.test.js.snap b/packages/decdk/test/__snapshots__/synth.test.js.snap index 0befd96765754..1e8c00e6bd957 100644 --- a/packages/decdk/test/__snapshots__/synth.test.js.snap +++ b/packages/decdk/test/__snapshots__/synth.test.js.snap @@ -1847,23 +1847,7 @@ Object { "KeyPolicy": Object { "Statement": Array [ Object { - "Action": Array [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource", - ], + "Action": "kms:*", "Effect": "Allow", "Principal": Object { "AWS": Object { @@ -1885,24 +1869,6 @@ Object { }, "Resource": "*", }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "BuildProjectRoleAA92C755", - "Arn", - ], - }, - }, - "Resource": "*", - }, ], "Version": "2012-10-17", }, @@ -1944,23 +1910,7 @@ Object { "KeyPolicy": Object { "Statement": Array [ Object { - "Action": Array [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource", - ], + "Action": "kms:*", "Effect": "Allow", "Principal": Object { "AWS": Object { @@ -1982,95 +1932,6 @@ Object { }, "Resource": "*", }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "PipelineRoleD68726F7", - "Arn", - ], - }, - }, - "Resource": "*", - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "PipelineSourceCodePipelineActionRoleC6F9E7F5", - "Arn", - ], - }, - }, - "Resource": "*", - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "BuildProjectRoleAA92C755", - "Arn", - ], - }, - }, - "Resource": "*", - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "PipelineDeployRole97597E3E", - "Arn", - ], - }, - }, - "Resource": "*", - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - ], - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::GetAtt": Array [ - "PipelineDeployCodePipelineActionRole8B83082E", - "Arn", - ], - }, - }, - "Resource": "*", - }, ], "Version": "2012-10-17", }, @@ -2909,23 +2770,7 @@ Object { "KeyPolicy": Object { "Statement": Array [ Object { - "Action": Array [ - "kms:Create*", - "kms:Describe*", - "kms:Enable*", - "kms:List*", - "kms:Put*", - "kms:Update*", - "kms:Revoke*", - "kms:Disable*", - "kms:Get*", - "kms:Delete*", - "kms:ScheduleKeyDeletion", - "kms:CancelKeyDeletion", - "kms:GenerateDataKey", - "kms:TagResource", - "kms:UntagResource", - ], + "Action": "kms:*", "Effect": "Allow", "Principal": Object { "AWS": Object { diff --git a/tools/cdk-build-tools/lib/feature-flag.ts b/tools/cdk-build-tools/lib/feature-flag.ts index eec1d28d6e9e4..83c4d734fae54 100644 --- a/tools/cdk-build-tools/lib/feature-flag.ts +++ b/tools/cdk-build-tools/lib/feature-flag.ts @@ -30,9 +30,8 @@ export function testFutureBehavior( const major = cdkMajorVersion(repoRoot); if (major === 2) { - // Temporaily disable CDKv2 behaviour - // const app = new cdkApp(); - // return test(name, async () => fn(app)); + const app = new cdkApp(); + return test(name, async () => fn(app)); } const app = new cdkApp({ context: flags }); return test(name, () => fn(app)); @@ -59,8 +58,7 @@ export function testLegacyBehavior( const major = cdkMajorVersion(repoRoot); if (major === 2) { - // Temporarily disable CDKv2 behaviour - // return; + return; } const app = new cdkApp(); return test(name, () => fn(app)); From b1309a8538a60858d8433ab72595cb81895a6af4 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 17 Feb 2021 11:33:29 +0200 Subject: [PATCH 054/304] chore(release): 2.0.0-alpha.5 (#13100) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.5/CHANGELOG.md) --- CHANGELOG.v2.md | 30 ++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 947d5b9035d93..b78b3c9f1e1b1 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,36 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.5](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2021-02-17) + + +### Features + +* **apigatewayv2:** http api - jwt and cognito user pool authorizers ([#10972](https://github.com/aws/aws-cdk/issues/10972)) ([dd90e54](https://github.com/aws/aws-cdk/commit/dd90e5464b24e097a3e41a81556924018a422181)), closes [#10534](https://github.com/aws/aws-cdk/issues/10534) +* **aws-kinesisanalyticsv2:** L2 construct for Flink applications ([#12464](https://github.com/aws/aws-cdk/issues/12464)) ([94279f3](https://github.com/aws/aws-cdk/commit/94279f35e4f5ef961e0ba8528e34a8fccb9ef3fe)), closes [/github.com/aws-samples/amazon-kinesis-analytics-streaming-etl/blob/master/cdk/lib/streaming-etl.ts#L100](https://github.com/aws//github.com/aws-samples/amazon-kinesis-analytics-streaming-etl/blob/master/cdk/lib/streaming-etl.ts/issues/L100) +* **cfnspec:** cloudformation spec v27.0.0 ([#12960](https://github.com/aws/aws-cdk/issues/12960)) ([7730ac8](https://github.com/aws/aws-cdk/commit/7730ac8c6c7aedb233a24c665666b9651b2401a5)) +* **cli:** change set name is now a constant, and --no-execute will always produce one (even if empty) ([#12683](https://github.com/aws/aws-cdk/issues/12683)) ([00cdd2a](https://github.com/aws/aws-cdk/commit/00cdd2a2188d146af8b8df998e97da91c77dc270)), closes [#11075](https://github.com/aws/aws-cdk/issues/11075) +* **core:** configure bundling docker entrypoint ([#12660](https://github.com/aws/aws-cdk/issues/12660)) ([6597a09](https://github.com/aws/aws-cdk/commit/6597a09310fbc13d43389eca91b0e4b26f8ca680)), closes [#11984](https://github.com/aws/aws-cdk/issues/11984) +* **elasticsearch:** add custom endpoint options ([#12904](https://github.com/aws/aws-cdk/issues/12904)) ([f67ab86](https://github.com/aws/aws-cdk/commit/f67ab8689dc38803253067c4f9632b9bc5ea653f)), closes [#12261](https://github.com/aws/aws-cdk/issues/12261) +* **redshift:** add missing current generation RA3 NodeTypes ([#12784](https://github.com/aws/aws-cdk/issues/12784)) ([f91a3f1](https://github.com/aws/aws-cdk/commit/f91a3f1302c395e8c7ffe9d6164e8f3b252f9a27)), closes [#12783](https://github.com/aws/aws-cdk/issues/12783) +* **stepfunctions:** Implement IGrantable ([#12830](https://github.com/aws/aws-cdk/issues/12830)) ([3b5ff05](https://github.com/aws/aws-cdk/commit/3b5ff0562090059f3a94140161acce53e484776c)), closes [#12829](https://github.com/aws/aws-cdk/issues/12829) +* future flags 'core:enableStackNameDuplicates', 'aws-secretsmanager:parseOwnedSecretName' and 'aws-kms:defaultKeyPolicies' are no longer supported ([#12644](https://github.com/aws/aws-cdk/issues/12644)) ([7554246](https://github.com/aws/aws-cdk/commit/7554246ab6d0819bc57d5e67cd9e4e10a3b7e742)) + + +### Bug Fixes + +* **cfn-diff:** correctly handle version strings like '0.0.0' ([#13022](https://github.com/aws/aws-cdk/issues/13022)) ([34a921b](https://github.com/aws/aws-cdk/commit/34a921b9667402b6d90731f1fd9e3de1ef27f8bf)), closes [#13016](https://github.com/aws/aws-cdk/issues/13016) +* **cfn2ts:** correctly choose between string and object without required properties in a union ([#12954](https://github.com/aws/aws-cdk/issues/12954)) ([b7137c5](https://github.com/aws/aws-cdk/commit/b7137c59d04f14a6ad890bff1faf0f36cae131b0)), closes [#12854](https://github.com/aws/aws-cdk/issues/12854) +* **codedeploy:** allow the install agent script's commands to exit with errors ([#12782](https://github.com/aws/aws-cdk/issues/12782)) ([23d52a5](https://github.com/aws/aws-cdk/commit/23d52a570b591f080eebfbd9dc679a9ef2daeebf)), closes [#12764](https://github.com/aws/aws-cdk/issues/12764) +* **codepipeline-actions:** use BatchGetBuildBatches permission for batch builds ([#13018](https://github.com/aws/aws-cdk/issues/13018)) ([09ba573](https://github.com/aws/aws-cdk/commit/09ba573a816cc4fa9898c1700136bb332801721c)) +* **ec2:** MachineImage.genericLinux/Windows don't work in environment-agnostic stacks ([#12546](https://github.com/aws/aws-cdk/issues/12546)) ([fbe7e89](https://github.com/aws/aws-cdk/commit/fbe7e89ba764093ddec9caa7de3ca921f3dc68ac)), closes [#8759](https://github.com/aws/aws-cdk/issues/8759) +* **ec2:** Subnet cidr missing for Vpc.from_lookup() ([#12878](https://github.com/aws/aws-cdk/issues/12878)) ([9028269](https://github.com/aws/aws-cdk/commit/90282693999efdc43330b9526b9d7f4cd0fa5736)), closes [#11821](https://github.com/aws/aws-cdk/issues/11821) +* **ec2:** volume props validations are incorrect ([#12821](https://github.com/aws/aws-cdk/issues/12821)) ([12cddff](https://github.com/aws/aws-cdk/commit/12cddffcfa38cc0522e4c36327f193e6a605f441)), closes [#12816](https://github.com/aws/aws-cdk/issues/12816) [#12816](https://github.com/aws/aws-cdk/issues/12816) [#12074](https://github.com/aws/aws-cdk/issues/12074) +* **ec2:** VpnConnection fails if `ip` is a Token ([#12923](https://github.com/aws/aws-cdk/issues/12923)) ([953957a](https://github.com/aws/aws-cdk/commit/953957a2c3e630b5ad2196e113f943e27ee21067)), closes [#11633](https://github.com/aws/aws-cdk/issues/11633) +* **kms:** cross-environment usage fails when trustAccountIdentities is set ([#12925](https://github.com/aws/aws-cdk/issues/12925)) ([2b917ec](https://github.com/aws/aws-cdk/commit/2b917eceb598b3365123781445df7e2bd8a80b74)), closes [#12921](https://github.com/aws/aws-cdk/issues/12921) [#12741](https://github.com/aws/aws-cdk/issues/12741) +* **lambda-python:** cryptography >= 3.4 is not supported by older pip version ([#12934](https://github.com/aws/aws-cdk/issues/12934)) ([b68acf8](https://github.com/aws/aws-cdk/commit/b68acf828e04841dd7e62b30fe80db8c25e5d96e)), closes [/cryptography.io/en/3.4/changelog.html#v3-4](https://github.com/aws//cryptography.io/en/3.4/changelog.html/issues/v3-4) +* **tools:** doc block links not clickable in VS Code ([#12336](https://github.com/aws/aws-cdk/issues/12336)) ([4f17f92](https://github.com/aws/aws-cdk/commit/4f17f923edc5e55b0977dcb250c9908027297d1b)) + ## [2.0.0-alpha.4](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2021-02-10) diff --git a/version.v2.json b/version.v2.json index 29245d68cfa80..9f178b6318b00 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.4" + "version": "2.0.0-alpha.5" } From cf9dc55762b3dfd23f49821d1037e70d18029ec2 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 18 Feb 2021 09:15:57 +0000 Subject: [PATCH 055/304] chore: do not enable expired feature flags in integ tests This change is removing the change to cdk-integ-tests introduced by 200d52ef. Specifying expired feature flags will fail in the v2 branch, but the underlying function they enable are turned on. --- tools/cdk-integ-tools/lib/integ-helpers.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/cdk-integ-tools/lib/integ-helpers.ts b/tools/cdk-integ-tools/lib/integ-helpers.ts index 7e7e4ee460e7f..3a81fe8466465 100644 --- a/tools/cdk-integ-tools/lib/integ-helpers.ts +++ b/tools/cdk-integ-tools/lib/integ-helpers.ts @@ -337,11 +337,7 @@ export const DEFAULT_SYNTH_OPTIONS = { }, ], }, - // Enable feature flags for all integ tests '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true, - '@aws-cdk/aws-kms:defaultKeyPolicies': true, - '@aws-cdk/core:enableStackNameDuplicates': true, - '@aws-cdk/aws-secretsmanager:parseOwnedSecretName': true, }, env: { CDK_INTEG_ACCOUNT: '12345678', From d516d23b993b4f7f42dab6375ffe86d68fbecb68 Mon Sep 17 00:00:00 2001 From: njlynch Date: Thu, 18 Feb 2021 10:02:09 +0000 Subject: [PATCH 056/304] automatic pkglint fixes --- packages/@aws-cdk/cloud-assembly-schema/package.json | 2 +- packages/@aws-cdk/cloudformation-diff/package.json | 2 +- packages/@aws-cdk/cx-api/package.json | 2 +- packages/@aws-cdk/region-info/package.json | 2 +- packages/@aws-cdk/yaml-cfn/package.json | 2 +- packages/aws-cdk-lib/package.json | 3 +++ packages/aws-cdk/package.json | 2 +- packages/awslint/package.json | 2 +- packages/cdk-assets/package.json | 2 +- 9 files changed, 11 insertions(+), 8 deletions(-) diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index 724512a094826..b684a4b97f870 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -99,6 +99,6 @@ "jest": true }, "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 2a1705ab876fd..bd35df29c3898 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -57,6 +57,6 @@ "jest": true }, "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/@aws-cdk/cx-api/package.json b/packages/@aws-cdk/cx-api/package.json index 9b5c09a9a999d..3125b139a8260 100644 --- a/packages/@aws-cdk/cx-api/package.json +++ b/packages/@aws-cdk/cx-api/package.json @@ -158,6 +158,6 @@ "jest": true }, "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/@aws-cdk/region-info/package.json b/packages/@aws-cdk/region-info/package.json index fe5a7e1acf1ec..1eb79688b1110 100644 --- a/packages/@aws-cdk/region-info/package.json +++ b/packages/@aws-cdk/region-info/package.json @@ -85,6 +85,6 @@ "announce": false }, "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index 45e121a4cb7f5..6764e840fa242 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -88,6 +88,6 @@ "announce": false }, "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index beec956585b55..c179fd49744b6 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -306,5 +306,8 @@ }, "ubergen": { "exclude": true + }, + "publishConfig": { + "tag": "latest" } } diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index d5981b68466af..971089a8e9be5 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -108,6 +108,6 @@ "stability": "stable", "maturity": "stable", "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/awslint/package.json b/packages/awslint/package.json index f0a74898f0148..d4bc8022fda8c 100644 --- a/packages/awslint/package.json +++ b/packages/awslint/package.json @@ -51,6 +51,6 @@ "node": ">= 10.13.0 <13 || >=13.7.0" }, "publishConfig": { - "tag": "latest" + "tag": "next" } } diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index da8ccc5d920e9..c36c240ac9262 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -70,6 +70,6 @@ "stability": "experimental", "maturity": "experimental", "publishConfig": { - "tag": "latest" + "tag": "next" } } From 859427b53f80b4b5b087e238d40abec2e21004c5 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 18 Feb 2021 12:17:17 +0000 Subject: [PATCH 057/304] fix decdk integ tests --- packages/decdk/test/synth.test.ts | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/packages/decdk/test/synth.test.ts b/packages/decdk/test/synth.test.ts index 8c3a27e056d52..ab025ab1ddbdd 100644 --- a/packages/decdk/test/synth.test.ts +++ b/packages/decdk/test/synth.test.ts @@ -31,14 +31,7 @@ for (const templateFile of fs.readdirSync(dir)) { const template = await readTemplate(path.resolve(dir, templateFile)); const typeSystem = await obtainTypeSystem(); - const app = new cdk.App({ - context: { - '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true, - '@aws-cdk/aws-kms:defaultKeyPolicies': true, - '@aws-cdk/core:enableStackNameDuplicates': true, - '@aws-cdk/aws-secretsmanager:parseOwnedSecretName': true, - } - }); + const app = new cdk.App(); const stackName = stackNameFromFileName(templateFile); new DeclarativeStack(app, stackName, { From fb390b8238c71e4e5874cf67d2bfe53113f1e1e1 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Tue, 23 Feb 2021 15:32:54 +0200 Subject: [PATCH 058/304] chore: forward merge 'master' into 'v2-main' (#13209) Automated action from aws/cdk-ops --- .dependabot/config.yml | 19 - .github/dependabot.yml | 13 + .github/workflows/auto-approve-dependabot.yml | 27 - .github/workflows/auto-approve.yml | 15 + .github/workflows/v2-pull-request.yml | 12 - .github/workflows/yarn-upgrade.yml | 4 +- .../test/integ.assign-public-ip.expected.json | 26 +- .../integ.imported-environment.expected.json | 4 +- .../integ.cognito-authorizer.expected.json | 4 +- .../integ.restapi-import.lit.expected.json | 12 +- .../test/http/integ.user-pool.expected.json | 4 +- packages/@aws-cdk/aws-appsync/README.md | 10 +- .../@aws-cdk/aws-appsync/lib/data-source.ts | 18 +- .../aws-appsync/lib/graphqlapi-base.ts | 16 +- .../aws-appsync/test/appsync-rds.test.ts | 30 +- .../@aws-cdk/aws-appsync/test/appsync.test.ts | 3 +- .../test/integ.api-import.expected.json | 4 +- .../test/integ.auth-apikey.expected.json | 4 +- .../test/integ.graphql-iam.expected.json | 22 +- .../test/integ.graphql.expected.json | 446 ++--- .../test/integ.backup.expected.json | 4 +- .../@aws-cdk/aws-backup/test/integ.backup.ts | 3 +- .../aws-backup/test/selection.test.ts | 5 +- .../test/integ.nested-stack.expected.json | 12 +- .../integ.nested-stacks-assets.expected.json | 42 +- ...teg.nested-stacks-multi-refs.expected.json | 42 +- .../integ.nested-stacks-multi.expected.json | 22 +- ...cks-nested-export-to-sibling.expected.json | 4 +- .../integ.nested-stacks-refs1.expected.json | 4 +- .../integ.nested-stacks-refs2.expected.json | 4 +- .../integ.nested-stacks-refs3.expected.json | 8 +- .../test/test.nested-stack.ts | 13 +- .../@aws-cdk/aws-cognito/lib/user-pool.ts | 10 +- ...r-pool-client-explicit-props.expected.json | 26 +- .../integ.user-pool-client-explicit-props.ts | 6 +- ...nteg.user-pool-domain-cfdist.expected.json | 68 +- .../test/integ.user-pool-domain-cfdist.ts | 6 +- ...g.user-pool-domain-signinurl.expected.json | 4 +- .../test/integ.user-pool-domain-signinurl.ts | 6 +- ...teg.user-pool-explicit-props.expected.json | 64 +- .../test/integ.user-pool-explicit-props.ts | 3 +- .../integ.user-pool-idp.amazon.expected.json | 4 +- .../test/integ.user-pool-idp.amazon.ts | 6 +- .../integ.user-pool-idp.google.expected.json | 4 +- .../test/integ.user-pool-idp.google.ts | 6 +- ...eg.user-pool-resource-server.expected.json | 4 +- .../test/integ.user-pool-resource-server.ts | 3 +- .../integ.user-pool-signup-code.expected.json | 4 +- .../test/integ.user-pool-signup-code.ts | 3 +- .../integ.user-pool-signup-link.expected.json | 4 +- .../test/integ.user-pool-signup-link.ts | 3 +- .../test/integ.user-pool.expected.json | 4 +- .../aws-cognito/test/integ.user-pool.ts | 3 +- .../aws-cognito/test/user-pool.test.ts | 6 +- .../aws-dynamodb/test/dynamodb.test.ts | 27 +- ....global-replicas-provisioned.expected.json | 4 +- .../test/integ.global.expected.json | 62 +- packages/@aws-cdk/aws-ec2/lib/volume.ts | 10 +- packages/@aws-cdk/aws-ec2/test/volume.test.ts | 4 +- .../integ.nested-stacks-docker.expected.json | 6 +- ...ing-fargate-service-isolated.expected.json | 8 +- ...ssing-fargate-service-public.expected.json | 8 +- ...e-processing-fargate-service.expected.json | 8 +- packages/@aws-cdk/aws-ecs/.gitignore | 3 +- packages/@aws-cdk/aws-ecs/.npmignore | 3 +- packages/@aws-cdk/aws-ecs/jest.config.js | 2 + packages/@aws-cdk/aws-ecs/package.json | 3 +- ...s => app-mesh-proxy-configuration.test.ts} | 6 +- ...s-log-driver.ts => aws-log-driver.test.ts} | 6 +- ...nition.ts => container-definition.test.ts} | 530 +++--- ...est.cross-stack.ts => cross-stack.test.ts} | 6 +- ...est.ec2-service.ts => ec2-service.test.ts} | 6 +- ...inition.ts => ec2-task-definition.test.ts} | 287 ++- ...est.ecs-cluster.ts => ecs-cluster.test.ts} | 6 +- ...nment-file.ts => environment-file.test.ts} | 6 +- ...ate-service.ts => fargate-service.test.ts} | 6 +- ...ion.ts => fargate-task-definition.test.ts} | 6 +- ...-driver.ts => firelens-log-driver.test.ts} | 6 +- ...g-driver.ts => fluentd-log-driver.test.ts} | 6 +- ...-log-driver.ts => gelf-log-driver.test.ts} | 6 +- ... => tag-parameter-container-image.test.ts} | 6 +- ...-driver.ts => journald-log-driver.test.ts} | 6 +- ...driver.ts => json-file-log-driver.test.ts} | 6 +- ...og-driver.ts => splunk-log-driver.test.ts} | 6 +- ...og-driver.ts => syslog-log-driver.test.ts} | 6 +- ...-definition.ts => task-definition.test.ts} | 6 +- packages/@aws-cdk/aws-eks/README.md | 4 +- .../@aws-cdk/aws-eks/lib/kubectl-provider.ts | 1 + ...teg.eks-cluster-handlers-vpc.expected.json | 29 +- ...eks-cluster-private-endpoint.expected.json | 29 +- .../test/integ.eks-cluster.expected.json | 31 +- .../test/integ.fargate-cluster.expected.json | 29 +- .../@aws-cdk/aws-eks/test/test.cluster.ts | 21 + .../test/integ.cognito.lit.expected.json | 24 +- .../@aws-cdk/aws-elasticsearch/lib/domain.ts | 8 + .../aws-elasticsearch/test/domain.test.ts | 10 + ...asticsearch.advancedsecurity.expected.json | 4 +- .../integ.elasticsearch.advancedsecurity.ts | 3 +- ...elasticsearch.custom-kms-key.expected.json | 6 +- .../integ.elasticsearch.custom-kms-key.ts | 3 +- .../test/integ.elasticsearch.expected.json | 10 +- .../test/integ.elasticsearch.ts | 3 +- ...nteg.elasticsearch.ultrawarm.expected.json | 4 +- .../test/integ.elasticsearch.ultrawarm.ts | 3 +- ...sticsearch.unsignedbasicauth.expected.json | 6 +- .../integ.elasticsearch.unsignedbasicauth.ts | 3 +- .../integ.project-events.expected.json | 6 +- .../integ.sns-event-rule-target.expected.json | 4 +- .../integ.sqs-event-rule-target.expected.json | 4 +- packages/@aws-cdk/aws-fsx/lib/file-system.ts | 9 +- .../aws-fsx/lib/lustre-file-system.ts | 1 + .../integ.lustre-file-system.expected.json | 4 +- .../aws-fsx/test/integ.lustre-file-system.ts | 3 +- .../aws-fsx/test/lustre-file-system.test.ts | 6 +- packages/@aws-cdk/aws-kms/lib/key.ts | 10 +- .../test/integ.destinations.expected.json | 10 +- .../test/integ.kinesiswithdlq.expected.json | 18 +- .../test/integ.sqs.expected.json | 16 +- packages/@aws-cdk/aws-lambda-nodejs/README.md | 12 +- .../@aws-cdk/aws-lambda-nodejs/package.json | 2 +- packages/@aws-cdk/aws-rds/lib/cluster.ts | 20 +- packages/@aws-cdk/aws-rds/lib/instance.ts | 10 +- packages/@aws-cdk/aws-rds/lib/private/util.ts | 38 +- .../aws-rds/lib/serverless-cluster.ts | 4 +- .../@aws-cdk/aws-rds/test/cluster.test.ts | 44 +- .../test/database-secretmanager.test.ts | 4 +- .../@aws-cdk/aws-rds/test/instance.test.ts | 29 +- .../integ.cluster-rotation.lit.expected.json | 11 +- .../test/integ.cluster-s3.expected.json | 13 +- .../aws-rds/test/integ.cluster.expected.json | 13 +- ...ance-from-generated-password.expected.json | 3 +- .../test/integ.instance-s3.expected.json | 2 +- .../test/integ.instance.lit.expected.json | 11 +- .../aws-rds/test/integ.proxy.expected.json | 3 +- .../integ.serverless-cluster.expected.json | 3 +- .../aws-rds/test/serverless-cluster.test.ts | 6 +- packages/@aws-cdk/aws-s3-deployment/README.md | 28 +- .../integ.bucket-notifications.expected.json | 8 +- packages/@aws-cdk/aws-s3/lib/bucket.ts | 4 +- packages/@aws-cdk/aws-s3/test/bucket.test.ts | 2 +- .../test/integ.sns-lambda.expected.json | 8 +- .../test/integ.sns-sqs.lit.expected.json | 8 +- .../aws-sns-subscriptions/test/subs.test.ts | 10 + packages/@aws-cdk/aws-sqs/lib/queue.ts | 15 +- .../aws-sqs/test/integ.sqs.expected.json | 12 +- packages/@aws-cdk/aws-sqs/test/test.sqs.ts | 22 +- .../aws-stepfunctions-tasks/README.md | 37 +- .../aws-stepfunctions-tasks/lib/eks/call.ts | 137 ++ .../aws-stepfunctions-tasks/lib/index.ts | 1 + .../aws-stepfunctions-tasks/package.json | 2 + .../test/eks/call.test.ts | 234 +++ .../test/eks/integ.call.expected.json | 1580 +++++++++++++++++ .../test/eks/integ.call.ts | 52 + .../test/sns/integ.publish.expected.json | 16 +- .../test/sqs/integ.send-message.expected.json | 16 +- packages/@aws-cdk/aws-synthetics/README.md | 8 +- .../@aws-cdk/aws-synthetics/lib/canary.ts | 10 + .../aws-synthetics/test/canary.test.ts | 4 +- .../@aws-cdk/cfnspec/build-tools/build.ts | 59 +- .../cfnspec/build-tools/update-cfnlint.sh | 18 + .../cfnspec/lib/_private_schema/cfn-lint.ts | 23 + packages/@aws-cdk/cfnspec/lib/index.ts | 14 + .../@aws-cdk/cfnspec/lib/schema/cfn-lint.ts | 14 + packages/@aws-cdk/cfnspec/lib/schema/index.ts | 1 + packages/@aws-cdk/cfnspec/package.json | 2 +- .../cfn-lint/StatefulResources/000.json | 30 + .../cfnspec/test/test.cfnlint-annotations.ts | 28 + packages/@aws-cdk/core/lib/cfn-resource.ts | 8 +- packages/@aws-cdk/core/lib/nested-stack.ts | 13 + packages/@aws-cdk/core/lib/removal-policy.ts | 25 + packages/@aws-cdk/core/lib/resource.ts | 39 +- packages/@aws-cdk/core/test/stack.test.ts | 18 + .../lib/provider-framework/provider.ts | 13 + .../test/provider-framework/provider.test.ts | 69 + .../test/__snapshots__/synth.test.js.snap | 4 + packages/decdk/test/fixture/tsconfig.json | 5 +- tools/cfn2ts/lib/codegen.ts | 46 +- yarn.lock | 293 +-- 178 files changed, 4262 insertions(+), 1394 deletions(-) delete mode 100644 .dependabot/config.yml create mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/auto-approve-dependabot.yml create mode 100644 .github/workflows/auto-approve.yml create mode 100644 packages/@aws-cdk/aws-ecs/jest.config.js rename packages/@aws-cdk/aws-ecs/test/{test.app-mesh-proxy-configuration.ts => app-mesh-proxy-configuration.test.ts} (98%) rename packages/@aws-cdk/aws-ecs/test/{test.aws-log-driver.ts => aws-log-driver.test.ts} (98%) rename packages/@aws-cdk/aws-ecs/test/{test.container-definition.ts => container-definition.test.ts} (81%) rename packages/@aws-cdk/aws-ecs/test/ec2/{test.cross-stack.ts => cross-stack.test.ts} (97%) rename packages/@aws-cdk/aws-ecs/test/ec2/{test.ec2-service.ts => ec2-service.test.ts} (99%) rename packages/@aws-cdk/aws-ecs/test/ec2/{test.ec2-task-definition.ts => ec2-task-definition.test.ts} (83%) rename packages/@aws-cdk/aws-ecs/test/{test.ecs-cluster.ts => ecs-cluster.test.ts} (99%) rename packages/@aws-cdk/aws-ecs/test/{test.environment-file.ts => environment-file.test.ts} (96%) rename packages/@aws-cdk/aws-ecs/test/fargate/{test.fargate-service.ts => fargate-service.test.ts} (99%) rename packages/@aws-cdk/aws-ecs/test/fargate/{test.fargate-task-definition.ts => fargate-task-definition.test.ts} (97%) rename packages/@aws-cdk/aws-ecs/test/{test.firelens-log-driver.ts => firelens-log-driver.test.ts} (98%) rename packages/@aws-cdk/aws-ecs/test/{test.fluentd-log-driver.ts => fluentd-log-driver.test.ts} (97%) rename packages/@aws-cdk/aws-ecs/test/{test.gelf-log-driver.ts => gelf-log-driver.test.ts} (95%) rename packages/@aws-cdk/aws-ecs/test/images/{test.tag-parameter-container-image.ts => tag-parameter-container-image.test.ts} (91%) rename packages/@aws-cdk/aws-ecs/test/{test.journald-log-driver.ts => journald-log-driver.test.ts} (96%) rename packages/@aws-cdk/aws-ecs/test/{test.json-file-log-driver.ts => json-file-log-driver.test.ts} (96%) rename packages/@aws-cdk/aws-ecs/test/{test.splunk-log-driver.ts => splunk-log-driver.test.ts} (97%) rename packages/@aws-cdk/aws-ecs/test/{test.syslog-log-driver.ts => syslog-log-driver.test.ts} (96%) rename packages/@aws-cdk/aws-ecs/test/{test.task-definition.ts => task-definition.test.ts} (88%) create mode 100644 packages/@aws-cdk/aws-stepfunctions-tasks/lib/eks/call.ts create mode 100644 packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/call.test.ts create mode 100644 packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.expected.json create mode 100644 packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.ts create mode 100755 packages/@aws-cdk/cfnspec/build-tools/update-cfnlint.sh create mode 100644 packages/@aws-cdk/cfnspec/lib/_private_schema/cfn-lint.ts create mode 100644 packages/@aws-cdk/cfnspec/lib/schema/cfn-lint.ts create mode 100644 packages/@aws-cdk/cfnspec/spec-source/cfn-lint/StatefulResources/000.json create mode 100644 packages/@aws-cdk/cfnspec/test/test.cfnlint-annotations.ts diff --git a/.dependabot/config.yml b/.dependabot/config.yml deleted file mode 100644 index c54ea38a24f81..0000000000000 --- a/.dependabot/config.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -# See: https://dependabot.com/docs/config-file/ -version: 1 -update_configs: - # Dependabot will detect the lerna mono-repo and discover packages in there - - directory: / - package_manager: javascript - update_schedule: live - version_requirement_updates: increase_versions - ignored_updates: - - match: - dependency_name: "jsii*" - - match: - dependency_name: "@jsii/*" - - match: - dependency_name: "codemaker" - - match: - dependency_name: "@types/node" - version_requirement: ">=11.0.0-0" diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000000..1d4633809b73b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,13 @@ +# Reference: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates +# NOTE: dependabot only takes care of updating non-npm deps +# npm dependencies are updated through the "yarn-upgrade" github workflow. + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + labels: + - "pr/auto-approve" + open-pull-requests-limit: 5 diff --git a/.github/workflows/auto-approve-dependabot.yml b/.github/workflows/auto-approve-dependabot.yml deleted file mode 100644 index 5eb14a05c1890..0000000000000 --- a/.github/workflows/auto-approve-dependabot.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Automatically approve PRs made by Dependabot -# -# Written to look at the original author of the PR (instead of the current -# actor) in order to be able to backresolve existing PRs using this action (by -# mass labeling them). Leads to slightly unnecessary spammage of aprovals in a -# PR... -# -# Only does approvals! A different GitHub Action takes care of merging. -name: Auto-approve Dependabot -on: - pull_request: - types: - - labeled - - opened - - ready_for_review - - reopened - - synchronize - - unlabeled - - unlocked -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: hmarr/auto-approve-action@7782c7e2bdf62b4d79bdcded8332808fd2f179cd - if: github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'dependabot-preview[bot]' - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/auto-approve.yml b/.github/workflows/auto-approve.yml new file mode 100644 index 0000000000000..d36f6255bbc7d --- /dev/null +++ b/.github/workflows/auto-approve.yml @@ -0,0 +1,15 @@ +# Approve PRs with "pr/auto-approve". mergify takes care of the actual merge. + +name: auto-approve +on: pull_request + +jobs: + auto-approve: + if: > + contains(github.event.pull_request.labels.*.name, 'pr/auto-approve') && + contains(['aws-cdk-automation', 'dependabot[bot]', 'dependabot-preview[bot]'], github.event.pull_request.user.login) + runs-on: ubuntu-latest + steps: + - uses: hmarr/auto-approve-action@v2.0.0 + with: + github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/v2-pull-request.yml b/.github/workflows/v2-pull-request.yml index c4118d3298a00..e820647947705 100644 --- a/.github/workflows/v2-pull-request.yml +++ b/.github/workflows/v2-pull-request.yml @@ -32,15 +32,3 @@ jobs: uses: stefanzweifel/git-auto-commit-action@v4 with: commit_message: 'automatic pkglint fixes' - - # Approve automated PRs - # Only approve! mergify takes care of the actual merge. - auto-approve: - if: > - github.event.pull_request.user.login == 'aws-cdk-automation' - && contains(github.event.pull_request.labels.*.name, 'pr/auto-approve') - runs-on: ubuntu-latest - steps: - - uses: hmarr/auto-approve-action@v2.0.0 - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/yarn-upgrade.yml b/.github/workflows/yarn-upgrade.yml index 6734719a67184..17617a75537d3 100644 --- a/.github/workflows/yarn-upgrade.yml +++ b/.github/workflows/yarn-upgrade.yml @@ -25,7 +25,7 @@ jobs: run: echo "::set-output name=dir::$(yarn cache dir)" - name: Restore Yarn cache - uses: actions/cache@v2 + uses: actions/cache@v2.1.4 with: path: ${{ steps.yarn-cache.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} @@ -74,7 +74,7 @@ jobs: title: 'chore: npm-check-updates && yarn upgrade' body: |- Ran npm-check-updates and yarn upgrade to keep the `yarn.lock` file up-to-date. - labels: contribution/core,dependencies + labels: contribution/core,dependencies,pr/auto-approve team-reviewers: aws-cdk-team # Privileged token so automated PR validation happens token: ${{ secrets.AUTOMATION_GITHUB_TOKEN }} diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.assign-public-ip.expected.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.assign-public-ip.expected.json index 6a9f04c284047..6b7a3f0e42086 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.assign-public-ip.expected.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.assign-public-ip.expected.json @@ -400,7 +400,9 @@ "Type": "AWS::SQS::Queue", "Properties": { "MessageRetentionPeriod": 1209600 - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "nameserviceTaskRecordManagerEventsQueueF805A6C1": { "Type": "AWS::SQS::Queue", @@ -415,7 +417,9 @@ "maxReceiveCount": 500 }, "VisibilityTimeout": 30 - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "nameserviceTaskRecordManagerEventsQueuePolicy65CC6F9E": { "Type": "AWS::SQS::QueuePolicy", @@ -746,14 +750,12 @@ ] } }, - "Handler": "index.queue_handler", "Role": { "Fn::GetAtt": [ "nameserviceTaskRecordManagerEventHandlerServiceRoleE66EE52A", "Arn" ] }, - "Runtime": "python3.8", "Environment": { "Variables": { "HOSTED_ZONE_ID": { @@ -777,7 +779,9 @@ } } }, + "Handler": "index.queue_handler", "ReservedConcurrentExecutions": 1, + "Runtime": "python3.8", "Timeout": 30 }, "DependsOn": [ @@ -788,14 +792,14 @@ "nameserviceTaskRecordManagerEventHandlerSqsEventSourceawsecsintegnameserviceTaskRecordManagerEventsQueueC5EE9A869F1EB155": { "Type": "AWS::Lambda::EventSourceMapping", "Properties": { + "FunctionName": { + "Ref": "nameserviceTaskRecordManagerEventHandler4B8C6905" + }, "EventSourceArn": { "Fn::GetAtt": [ "nameserviceTaskRecordManagerEventsQueueF805A6C1", "Arn" ] - }, - "FunctionName": { - "Ref": "nameserviceTaskRecordManagerEventHandler4B8C6905" } } }, @@ -909,13 +913,13 @@ ] } }, - "Handler": "index.cleanup_resource_handler", "Role": { "Fn::GetAtt": [ "nameserviceTaskRecordManagerCleanupResourceProviderHandlerServiceRoleCCA462F0", "Arn" ] }, + "Handler": "index.cleanup_resource_handler", "Runtime": "python3.8", "Timeout": 300 }, @@ -1022,14 +1026,12 @@ ] } }, - "Handler": "framework.onEvent", "Role": { "Fn::GetAtt": [ "nameserviceTaskRecordManagerCleanupResourceProviderframeworkonEventServiceRoleF0570BD0", "Arn" ] }, - "Runtime": "nodejs10.x", "Description": "AWS CDK resource provider framework - onEvent (aws-ecs-integ/name-service/TaskRecordManager/CleanupResourceProvider)", "Environment": { "Variables": { @@ -1041,6 +1043,8 @@ } } }, + "Handler": "framework.onEvent", + "Runtime": "nodejs10.x", "Timeout": 900 }, "DependsOn": [ @@ -1242,13 +1246,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, diff --git a/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.imported-environment.expected.json b/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.imported-environment.expected.json index 80156c0ed0d2d..dbc216370e40d 100644 --- a/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.imported-environment.expected.json +++ b/packages/@aws-cdk-containers/ecs-service-extensions/test/integ.imported-environment.expected.json @@ -49,7 +49,9 @@ ] ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "ServiceloadbalancerD5D60894": { "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer", diff --git a/packages/@aws-cdk/aws-apigateway/test/authorizers/integ.cognito-authorizer.expected.json b/packages/@aws-cdk/aws-apigateway/test/authorizers/integ.cognito-authorizer.expected.json index 990619cb495d4..ef5bfef19c2c3 100644 --- a/packages/@aws-cdk/aws-apigateway/test/authorizers/integ.cognito-authorizer.expected.json +++ b/packages/@aws-cdk/aws-apigateway/test/authorizers/integ.cognito-authorizer.expected.json @@ -27,7 +27,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" }, "myauthorizer23CB99DD": { "Type": "AWS::ApiGateway::Authorizer", diff --git a/packages/@aws-cdk/aws-apigateway/test/integ.restapi-import.lit.expected.json b/packages/@aws-cdk/aws-apigateway/test/integ.restapi-import.lit.expected.json index 349ae37ce27c8..54805c9f2e682 100644 --- a/packages/@aws-cdk/aws-apigateway/test/integ.restapi-import.lit.expected.json +++ b/packages/@aws-cdk/aws-apigateway/test/integ.restapi-import.lit.expected.json @@ -130,7 +130,9 @@ "Ref": "RestApi0C43BF4B" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "integrestapiimportBooksStackNestedStackintegrestapiimportBooksStackNestedStackResource395C2C9B": { "Type": "AWS::CloudFormation::Stack", @@ -192,7 +194,9 @@ "Ref": "RestApi0C43BF4B" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "integrestapiimportDeployStackNestedStackintegrestapiimportDeployStackNestedStackResource0D0EE737": { "Type": "AWS::CloudFormation::Stack", @@ -252,7 +256,9 @@ "DependsOn": [ "integrestapiimportBooksStackNestedStackintegrestapiimportBooksStackNestedStackResource395C2C9B", "integrestapiimportPetsStackNestedStackintegrestapiimportPetsStackNestedStackResource2B31898B" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-apigatewayv2-authorizers/test/http/integ.user-pool.expected.json b/packages/@aws-cdk/aws-apigatewayv2-authorizers/test/http/integ.user-pool.expected.json index b53be9c1b9c27..17e2ae9976378 100644 --- a/packages/@aws-cdk/aws-apigatewayv2-authorizers/test/http/integ.user-pool.expected.json +++ b/packages/@aws-cdk/aws-apigatewayv2-authorizers/test/http/integ.user-pool.expected.json @@ -157,7 +157,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" }, "userpoolmyclientFAD947AB": { "Type": "AWS::Cognito::UserPoolClient", diff --git a/packages/@aws-cdk/aws-appsync/README.md b/packages/@aws-cdk/aws-appsync/README.md index 1d217960b79ed..d15051d191a25 100644 --- a/packages/@aws-cdk/aws-appsync/README.md +++ b/packages/@aws-cdk/aws-appsync/README.md @@ -107,9 +107,13 @@ const secret = new rds.DatabaseSecret(stack, 'AuroraSecret', { username: 'clusteradmin', }); -// Create the DB cluster, provide all values needed to customise the database. -const cluster = new rds.DatabaseCluster(stack, 'AuroraCluster', { - engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_2_07_1 }), +// The VPC to place the cluster in +const vpc = new ec2.Vpc(stack, 'AuroraVpc'); + +// Create the serverless cluster, provide all values needed to customise the database. +const cluster = new rds.ServerlessCluster(stack, 'AuroraCluster', { + engine: rds.DatabaseClusterEngine.AURORA_MYSQL, + vpc, credentials: { username: 'clusteradmin' }, clusterIdentifier: 'db-endpoint-test', defaultDatabaseName: 'demos', diff --git a/packages/@aws-cdk/aws-appsync/lib/data-source.ts b/packages/@aws-cdk/aws-appsync/lib/data-source.ts index dc5a17a9c763d..a86d5dcf52558 100644 --- a/packages/@aws-cdk/aws-appsync/lib/data-source.ts +++ b/packages/@aws-cdk/aws-appsync/lib/data-source.ts @@ -1,7 +1,7 @@ import { ITable } from '@aws-cdk/aws-dynamodb'; import { Grant, IGrantable, IPrincipal, IRole, Role, ServicePrincipal } from '@aws-cdk/aws-iam'; import { IFunction } from '@aws-cdk/aws-lambda'; -import { IDatabaseCluster } from '@aws-cdk/aws-rds'; +import { IServerlessCluster } from '@aws-cdk/aws-rds'; import { ISecret } from '@aws-cdk/aws-secretsmanager'; import { IResolvable, Lazy, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; @@ -122,7 +122,11 @@ export abstract class BaseDataSource extends Construct { * creates a new resolver for this datasource and API using the given properties */ public createResolver(props: BaseResolverProps): Resolver { - return this.api.createResolver({ dataSource: this, ...props }); + return new Resolver(this, `${props.typeName}${props.fieldName}Resolver`, { + api: this.api, + dataSource: this, + ...props, + }); } /** @@ -295,9 +299,9 @@ export class LambdaDataSource extends BackedDataSource { */ export interface RdsDataSourceProps extends BackedDataSourceProps { /** - * The database cluster to call to interact with this data source + * The serverless cluster to call to interact with this data source */ - readonly databaseCluster: IDatabaseCluster; + readonly serverlessCluster: IServerlessCluster; /** * The secret containing the credentials for the database */ @@ -319,12 +323,12 @@ export class RdsDataSource extends BackedDataSource { type: 'RELATIONAL_DATABASE', relationalDatabaseConfig: { rdsHttpEndpointConfig: { - awsRegion: props.databaseCluster.stack.region, + awsRegion: props.serverlessCluster.stack.region, dbClusterIdentifier: Lazy.string({ produce: () => { return Stack.of(this).formatArn({ service: 'rds', - resource: `cluster:${props.databaseCluster.clusterIdentifier}`, + resource: `cluster:${props.serverlessCluster.clusterIdentifier}`, }); }, }), @@ -336,7 +340,7 @@ export class RdsDataSource extends BackedDataSource { }); const clusterArn = Stack.of(this).formatArn({ service: 'rds', - resource: `cluster:${props.databaseCluster.clusterIdentifier}`, + resource: `cluster:${props.serverlessCluster.clusterIdentifier}`, }); props.secretStore.grantRead(this); diff --git a/packages/@aws-cdk/aws-appsync/lib/graphqlapi-base.ts b/packages/@aws-cdk/aws-appsync/lib/graphqlapi-base.ts index 4e28e337fd1c5..060d57a34c276 100644 --- a/packages/@aws-cdk/aws-appsync/lib/graphqlapi-base.ts +++ b/packages/@aws-cdk/aws-appsync/lib/graphqlapi-base.ts @@ -1,6 +1,6 @@ import { ITable } from '@aws-cdk/aws-dynamodb'; import { IFunction } from '@aws-cdk/aws-lambda'; -import { IDatabaseCluster } from '@aws-cdk/aws-rds'; +import { IServerlessCluster } from '@aws-cdk/aws-rds'; import { ISecret } from '@aws-cdk/aws-secretsmanager'; import { CfnResource, IResource, Resource } from '@aws-cdk/core'; import { DynamoDbDataSource, HttpDataSource, LambdaDataSource, NoneDataSource, RdsDataSource, AwsIamConfig } from './data-source'; @@ -97,14 +97,14 @@ export interface IGraphqlApi extends IResource { * add a new Rds data source to this API * * @param id The data source's id - * @param databaseCluster The database cluster to interact with this data source - * @param secretStore The secret store that contains the username and password for the database cluster + * @param serverlessCluster The serverless cluster to interact with this data source + * @param secretStore The secret store that contains the username and password for the serverless cluster * @param databaseName The optional name of the database to use within the cluster * @param options The optional configuration for this data source */ addRdsDataSource( id: string, - databaseCluster: IDatabaseCluster, + serverlessCluster: IServerlessCluster, secretStore: ISecret, databaseName?: string, options?: DataSourceOptions @@ -206,14 +206,14 @@ export abstract class GraphqlApiBase extends Resource implements IGraphqlApi { /** * add a new Rds data source to this API * @param id The data source's id - * @param databaseCluster The database cluster to interact with this data source - * @param secretStore The secret store that contains the username and password for the database cluster + * @param serverlessCluster The serverless cluster to interact with this data source + * @param secretStore The secret store that contains the username and password for the serverless cluster * @param databaseName The optional name of the database to use within the cluster * @param options The optional configuration for this data source */ public addRdsDataSource( id: string, - databaseCluster: IDatabaseCluster, + serverlessCluster: IServerlessCluster, secretStore: ISecret, databaseName?: string, options?: DataSourceOptions, @@ -222,7 +222,7 @@ export abstract class GraphqlApiBase extends Resource implements IGraphqlApi { api: this, name: options?.name, description: options?.description, - databaseCluster, + serverlessCluster, secretStore, databaseName, }); diff --git a/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts b/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts index 12c2f5d91cf8c..5a1b278dfc10f 100644 --- a/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts +++ b/packages/@aws-cdk/aws-appsync/test/appsync-rds.test.ts @@ -1,7 +1,7 @@ import '@aws-cdk/assert/jest'; import * as path from 'path'; -import { Vpc, SecurityGroup, SubnetType, InstanceType, InstanceClass, InstanceSize } from '@aws-cdk/aws-ec2'; -import { DatabaseSecret, DatabaseCluster, DatabaseClusterEngine, AuroraMysqlEngineVersion } from '@aws-cdk/aws-rds'; +import { Vpc, SecurityGroup, SubnetType } from '@aws-cdk/aws-ec2'; +import { DatabaseSecret, DatabaseClusterEngine, AuroraMysqlEngineVersion, ServerlessCluster } from '@aws-cdk/aws-rds'; import * as cdk from '@aws-cdk/core'; import * as appsync from '../lib'; @@ -21,7 +21,7 @@ beforeEach(() => { describe('Rds Data Source configuration', () => { // GIVEN let secret: DatabaseSecret; - let cluster: DatabaseCluster; + let cluster: ServerlessCluster; beforeEach(() => { const vpc = new Vpc(stack, 'Vpc', { maxAzs: 2 }); const securityGroup = new SecurityGroup(stack, 'AuroraSecurityGroup', { @@ -31,16 +31,13 @@ describe('Rds Data Source configuration', () => { secret = new DatabaseSecret(stack, 'AuroraSecret', { username: 'clusteradmin', }); - cluster = new DatabaseCluster(stack, 'AuroraCluster', { + cluster = new ServerlessCluster(stack, 'AuroraCluster', { engine: DatabaseClusterEngine.auroraMysql({ version: AuroraMysqlEngineVersion.VER_2_07_1 }), credentials: { username: 'clusteradmin' }, clusterIdentifier: 'db-endpoint-test', - instanceProps: { - instanceType: InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.SMALL), - vpcSubnets: { subnetType: SubnetType.PRIVATE }, - vpc, - securityGroups: [securityGroup], - }, + vpc, + vpcSubnets: { subnetType: SubnetType.PRIVATE }, + securityGroups: [securityGroup], defaultDatabaseName: 'Animals', }); }); @@ -205,7 +202,7 @@ describe('Rds Data Source configuration', () => { describe('adding rds data source from imported api', () => { // GIVEN let secret: DatabaseSecret; - let cluster: DatabaseCluster; + let cluster: ServerlessCluster; beforeEach(() => { const vpc = new Vpc(stack, 'Vpc', { maxAzs: 2 }); const securityGroup = new SecurityGroup(stack, 'AuroraSecurityGroup', { @@ -215,16 +212,13 @@ describe('adding rds data source from imported api', () => { secret = new DatabaseSecret(stack, 'AuroraSecret', { username: 'clusteradmin', }); - cluster = new DatabaseCluster(stack, 'AuroraCluster', { + cluster = new ServerlessCluster(stack, 'AuroraCluster', { engine: DatabaseClusterEngine.auroraMysql({ version: AuroraMysqlEngineVersion.VER_2_07_1 }), credentials: { username: 'clusteradmin' }, clusterIdentifier: 'db-endpoint-test', - instanceProps: { - instanceType: InstanceType.of(InstanceClass.BURSTABLE2, InstanceSize.SMALL), - vpcSubnets: { subnetType: SubnetType.PRIVATE }, - vpc, - securityGroups: [securityGroup], - }, + vpc, + vpcSubnets: { subnetType: SubnetType.PRIVATE }, + securityGroups: [securityGroup], defaultDatabaseName: 'Animals', }); }); diff --git a/packages/@aws-cdk/aws-appsync/test/appsync.test.ts b/packages/@aws-cdk/aws-appsync/test/appsync.test.ts index ca496e99afbff..f4ddfc3ba9da0 100644 --- a/packages/@aws-cdk/aws-appsync/test/appsync.test.ts +++ b/packages/@aws-cdk/aws-appsync/test/appsync.test.ts @@ -55,8 +55,7 @@ test('appsync should error when creating pipeline resolver with data source', () // THEN expect(() => { - api.createResolver({ - dataSource: ds, + ds.createResolver({ typeName: 'test', fieldName: 'test2', pipelineConfig: [test1, test2], diff --git a/packages/@aws-cdk/aws-appsync/test/integ.api-import.expected.json b/packages/@aws-cdk/aws-appsync/test/integ.api-import.expected.json index 87f6776cc79d1..e4b54f04116fc 100644 --- a/packages/@aws-cdk/aws-appsync/test/integ.api-import.expected.json +++ b/packages/@aws-cdk/aws-appsync/test/integ.api-import.expected.json @@ -135,7 +135,7 @@ } } }, - "ApiQuerygetTestsResolver025B8E0A": { + "ApidsQuerygetTestsResolver952F49EE": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -152,7 +152,7 @@ "Apids0DB53FEA" ] }, - "ApiMutationaddTestResolver7A08AE91": { + "ApidsMutationaddTestResolverBCF0400B": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { diff --git a/packages/@aws-cdk/aws-appsync/test/integ.auth-apikey.expected.json b/packages/@aws-cdk/aws-appsync/test/integ.auth-apikey.expected.json index 390d55bd9bb38..2d1ef3f31504f 100644 --- a/packages/@aws-cdk/aws-appsync/test/integ.auth-apikey.expected.json +++ b/packages/@aws-cdk/aws-appsync/test/integ.auth-apikey.expected.json @@ -121,7 +121,7 @@ } } }, - "ApiQuerygetTestsResolver025B8E0A": { + "ApitestDataSourceQuerygetTestsResolverA3BBB672": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -142,7 +142,7 @@ "ApitestDataSource96AE54D5" ] }, - "ApiMutationaddTestResolver7A08AE91": { + "ApitestDataSourceMutationaddTestResolver36203D6B": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { diff --git a/packages/@aws-cdk/aws-appsync/test/integ.graphql-iam.expected.json b/packages/@aws-cdk/aws-appsync/test/integ.graphql-iam.expected.json index 4cd9043b28c4b..374a89dc33d14 100644 --- a/packages/@aws-cdk/aws-appsync/test/integ.graphql-iam.expected.json +++ b/packages/@aws-cdk/aws-appsync/test/integ.graphql-iam.expected.json @@ -28,7 +28,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" }, "ApiF70053CD": { "Type": "AWS::AppSync::GraphQLApi", @@ -150,7 +152,7 @@ } } }, - "ApiQuerygetTestResolver4C1F8B0C": { + "ApidsQuerygetTestResolverCCED7EC2": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -171,7 +173,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetTestsResolver025B8E0A": { + "ApidsQuerygetTestsResolver952F49EE": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -192,7 +194,7 @@ "ApiSchema510EECD7" ] }, - "ApiMutationaddTestResolver7A08AE91": { + "ApidsMutationaddTestResolverBCF0400B": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -400,14 +402,12 @@ ] } }, - "Handler": "iam-query.handler", "Role": { "Fn::GetAtt": [ "LambdaIAM687B49AF", "Arn" ] }, - "Runtime": "nodejs12.x", "Environment": { "Variables": { "APPSYNC_ENDPOINT": { @@ -417,7 +417,9 @@ ] } } - } + }, + "Handler": "iam-query.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "LambdaIAMDefaultPolicy96DEA124", @@ -496,14 +498,12 @@ ] } }, - "Handler": "iam-query.handler", "Role": { "Fn::GetAtt": [ "testFailServiceRole9FF22F85", "Arn" ] }, - "Runtime": "nodejs12.x", "Environment": { "Variables": { "APPSYNC_ENDPOINT": { @@ -513,7 +513,9 @@ ] } } - } + }, + "Handler": "iam-query.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "testFailServiceRole9FF22F85" diff --git a/packages/@aws-cdk/aws-appsync/test/integ.graphql.expected.json b/packages/@aws-cdk/aws-appsync/test/integ.graphql.expected.json index d540f3777ed00..6f9fd9c12d899 100644 --- a/packages/@aws-cdk/aws-appsync/test/integ.graphql.expected.json +++ b/packages/@aws-cdk/aws-appsync/test/integ.graphql.expected.json @@ -28,7 +28,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" }, "ApiF70053CD": { "Type": "AWS::AppSync::GraphQLApi", @@ -90,7 +92,7 @@ "Type": "NONE" } }, - "ApiQuerygetServiceVersionResolver269A74C1": { + "ApinoneQuerygetServiceVersionResolver336A3C2C": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -198,204 +200,7 @@ } } }, - "ApiorderDsServiceRoleCC2040C0": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "appsync.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - } - } - }, - "ApiorderDsServiceRoleDefaultPolicy3315FCF4": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "dynamodb:BatchGetItem", - "dynamodb:GetRecords", - "dynamodb:GetShardIterator", - "dynamodb:Query", - "dynamodb:GetItem", - "dynamodb:Scan", - "dynamodb:ConditionCheckItem", - "dynamodb:BatchWriteItem", - "dynamodb:PutItem", - "dynamodb:UpdateItem", - "dynamodb:DeleteItem" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::GetAtt": [ - "OrderTable416EB896", - "Arn" - ] - }, - { - "Fn::Join": [ - "", - [ - { - "Fn::GetAtt": [ - "OrderTable416EB896", - "Arn" - ] - }, - "/index/*" - ] - ] - } - ] - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "ApiorderDsServiceRoleDefaultPolicy3315FCF4", - "Roles": [ - { - "Ref": "ApiorderDsServiceRoleCC2040C0" - } - ] - } - }, - "ApiorderDsB50C8AAD": { - "Type": "AWS::AppSync::DataSource", - "Properties": { - "ApiId": { - "Fn::GetAtt": [ - "ApiF70053CD", - "ApiId" - ] - }, - "Name": "Order", - "Type": "AMAZON_DYNAMODB", - "DynamoDBConfig": { - "AwsRegion": { - "Ref": "AWS::Region" - }, - "TableName": { - "Ref": "OrderTable416EB896" - } - }, - "ServiceRoleArn": { - "Fn::GetAtt": [ - "ApiorderDsServiceRoleCC2040C0", - "Arn" - ] - } - } - }, - "ApipaymentDsServiceRole0DAC58D6": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Statement": [ - { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": { - "Service": "appsync.amazonaws.com" - } - } - ], - "Version": "2012-10-17" - } - } - }, - "ApipaymentDsServiceRoleDefaultPolicy528E42B0": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action": [ - "dynamodb:BatchGetItem", - "dynamodb:GetRecords", - "dynamodb:GetShardIterator", - "dynamodb:Query", - "dynamodb:GetItem", - "dynamodb:Scan", - "dynamodb:ConditionCheckItem", - "dynamodb:BatchWriteItem", - "dynamodb:PutItem", - "dynamodb:UpdateItem", - "dynamodb:DeleteItem" - ], - "Effect": "Allow", - "Resource": [ - { - "Fn::Join": [ - "", - [ - "arn:", - { - "Ref": "AWS::Partition" - }, - ":dynamodb:", - { - "Ref": "AWS::Region" - }, - ":", - { - "Ref": "AWS::AccountId" - }, - ":table/PaymentTable" - ] - ] - }, - { - "Ref": "AWS::NoValue" - } - ] - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "ApipaymentDsServiceRoleDefaultPolicy528E42B0", - "Roles": [ - { - "Ref": "ApipaymentDsServiceRole0DAC58D6" - } - ] - } - }, - "ApipaymentDs95C7AC36": { - "Type": "AWS::AppSync::DataSource", - "Properties": { - "ApiId": { - "Fn::GetAtt": [ - "ApiF70053CD", - "ApiId" - ] - }, - "Name": "Payment", - "Type": "AMAZON_DYNAMODB", - "DynamoDBConfig": { - "AwsRegion": { - "Ref": "AWS::Region" - }, - "TableName": "PaymentTable" - }, - "ServiceRoleArn": { - "Fn::GetAtt": [ - "ApipaymentDsServiceRole0DAC58D6", - "Arn" - ] - } - } - }, - "ApiQuerygetCustomersResolver522EE433": { + "ApicustomerDsQuerygetCustomersResolverA74C8A2E": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -416,7 +221,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerResolver007520DC": { + "ApicustomerDsQuerygetCustomerResolver3649A130": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -437,7 +242,7 @@ "ApiSchema510EECD7" ] }, - "ApiMutationaddCustomerResolver53321A05": { + "ApicustomerDsMutationaddCustomerResolver4DE5B517": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -458,7 +263,7 @@ "ApiSchema510EECD7" ] }, - "ApiMutationsaveCustomerResolver85516C23": { + "ApicustomerDsMutationsaveCustomerResolver241DD231": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -479,7 +284,7 @@ "ApiSchema510EECD7" ] }, - "ApiMutationsaveCustomerWithFirstOrderResolver66DBDFD0": { + "ApicustomerDsMutationsaveCustomerWithFirstOrderResolver7DE2CBC8": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -500,7 +305,7 @@ "ApiSchema510EECD7" ] }, - "ApiMutationremoveCustomerResolver8435F803": { + "ApicustomerDsMutationremoveCustomerResolverAD3AE7F5": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -521,7 +326,105 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersEqResolver6DA88A11": { + "ApiorderDsServiceRoleCC2040C0": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "appsync.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "ApiorderDsServiceRoleDefaultPolicy3315FCF4": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "dynamodb:BatchGetItem", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:Query", + "dynamodb:GetItem", + "dynamodb:Scan", + "dynamodb:ConditionCheckItem", + "dynamodb:BatchWriteItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::GetAtt": [ + "OrderTable416EB896", + "Arn" + ] + }, + { + "Fn::Join": [ + "", + [ + { + "Fn::GetAtt": [ + "OrderTable416EB896", + "Arn" + ] + }, + "/index/*" + ] + ] + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApiorderDsServiceRoleDefaultPolicy3315FCF4", + "Roles": [ + { + "Ref": "ApiorderDsServiceRoleCC2040C0" + } + ] + } + }, + "ApiorderDsB50C8AAD": { + "Type": "AWS::AppSync::DataSource", + "Properties": { + "ApiId": { + "Fn::GetAtt": [ + "ApiF70053CD", + "ApiId" + ] + }, + "Name": "Order", + "Type": "AMAZON_DYNAMODB", + "DynamoDBConfig": { + "AwsRegion": { + "Ref": "AWS::Region" + }, + "TableName": { + "Ref": "OrderTable416EB896" + } + }, + "ServiceRoleArn": { + "Fn::GetAtt": [ + "ApiorderDsServiceRoleCC2040C0", + "Arn" + ] + } + } + }, + "ApiorderDsQuerygetCustomerOrdersEqResolverEF9D5350": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -542,7 +445,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersEqResolverA8612570": { + "ApiorderDsQuerygetOrderCustomersEqResolverE58570FF": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -563,7 +466,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersLtResolver284B37E8": { + "ApiorderDsQuerygetCustomerOrdersLtResolver909F3D8F": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -584,7 +487,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersLtResolver618A88A9": { + "ApiorderDsQuerygetOrderCustomersLtResolver77468800": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -605,7 +508,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersLeResolverFB2A506A": { + "ApiorderDsQuerygetCustomerOrdersLeResolverF230A8BE": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -626,7 +529,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersLeResolverFAA205B9": { + "ApiorderDsQuerygetOrderCustomersLeResolver836A0389": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -647,7 +550,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersGtResolver13F90EA5": { + "ApiorderDsQuerygetCustomerOrdersGtResolverF01F806B": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -668,7 +571,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersGtResolver9487ECD9": { + "ApiorderDsQuerygetOrderCustomersGtResolver3197CCFE": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -689,7 +592,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersGeResolver2A181899": { + "ApiorderDsQuerygetCustomerOrdersGeResolver63CAD303": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -710,7 +613,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersGeResolver8441E608": { + "ApiorderDsQuerygetOrderCustomersGeResolver0B78B0B4": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -731,7 +634,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersFilterResolver96245084": { + "ApiorderDsQuerygetCustomerOrdersFilterResolverCD2B8747": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -752,7 +655,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetCustomerOrdersBetweenResolver97B6D708": { + "ApiorderDsQuerygetCustomerOrdersBetweenResolver7DEE368E": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -773,7 +676,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersFilterResolverF1015ABD": { + "ApiorderDsQuerygetOrderCustomersFilterResolver628CC68D": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -794,7 +697,7 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetOrderCustomersBetweenResolver92680CEC": { + "ApiorderDsQuerygetOrderCustomersBetweenResolver2048F3CB": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -815,7 +718,106 @@ "ApiSchema510EECD7" ] }, - "ApiQuerygetPaymentResolver29598AC3": { + "ApipaymentDsServiceRole0DAC58D6": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "appsync.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + } + } + }, + "ApipaymentDsServiceRoleDefaultPolicy528E42B0": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": [ + "dynamodb:BatchGetItem", + "dynamodb:GetRecords", + "dynamodb:GetShardIterator", + "dynamodb:Query", + "dynamodb:GetItem", + "dynamodb:Scan", + "dynamodb:ConditionCheckItem", + "dynamodb:BatchWriteItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":dynamodb:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":table/PaymentTable" + ] + ] + }, + { + "Ref": "AWS::NoValue" + } + ] + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "ApipaymentDsServiceRoleDefaultPolicy528E42B0", + "Roles": [ + { + "Ref": "ApipaymentDsServiceRole0DAC58D6" + } + ] + } + }, + "ApipaymentDs95C7AC36": { + "Type": "AWS::AppSync::DataSource", + "Properties": { + "ApiId": { + "Fn::GetAtt": [ + "ApiF70053CD", + "ApiId" + ] + }, + "Name": "Payment", + "Type": "AMAZON_DYNAMODB", + "DynamoDBConfig": { + "AwsRegion": { + "Ref": "AWS::Region" + }, + "TableName": "PaymentTable" + }, + "ServiceRoleArn": { + "Fn::GetAtt": [ + "ApipaymentDsServiceRole0DAC58D6", + "Arn" + ] + } + } + }, + "ApipaymentDsQuerygetPaymentResolverD172BFC9": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -836,7 +838,7 @@ "ApiSchema510EECD7" ] }, - "ApiMutationsavePaymentResolver03088E76": { + "ApipaymentDsMutationsavePaymentResolverE09FE5BB": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { @@ -896,7 +898,7 @@ } } }, - "ApiMutationdoPostOnAwsResolverEDACEA42": { + "ApidsMutationdoPostOnAwsResolver9583D8A3": { "Type": "AWS::AppSync::Resolver", "Properties": { "ApiId": { diff --git a/packages/@aws-cdk/aws-backup/test/integ.backup.expected.json b/packages/@aws-cdk/aws-backup/test/integ.backup.expected.json index 2ba1356211377..1ad2aefc7c46e 100644 --- a/packages/@aws-cdk/aws-backup/test/integ.backup.expected.json +++ b/packages/@aws-cdk/aws-backup/test/integ.backup.expected.json @@ -24,7 +24,9 @@ "DeletionPolicy": "Delete" }, "FileSystem": { - "Type": "AWS::EFS::FileSystem" + "Type": "AWS::EFS::FileSystem", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "Vault23237E5B": { "Type": "AWS::Backup::BackupVault", diff --git a/packages/@aws-cdk/aws-backup/test/integ.backup.ts b/packages/@aws-cdk/aws-backup/test/integ.backup.ts index bf71de03a1cb8..e04d3ba68671a 100644 --- a/packages/@aws-cdk/aws-backup/test/integ.backup.ts +++ b/packages/@aws-cdk/aws-backup/test/integ.backup.ts @@ -16,7 +16,8 @@ class TestStack extends Stack { removalPolicy: RemovalPolicy.DESTROY, }); - new efs.CfnFileSystem(this, 'FileSystem'); + const fs = new efs.CfnFileSystem(this, 'FileSystem'); + fs.applyRemovalPolicy(RemovalPolicy.DESTROY); const vault = new backup.BackupVault(this, 'Vault', { removalPolicy: RemovalPolicy.DESTROY, diff --git a/packages/@aws-cdk/aws-backup/test/selection.test.ts b/packages/@aws-cdk/aws-backup/test/selection.test.ts index 25b0816721e39..79db9acff4c0b 100644 --- a/packages/@aws-cdk/aws-backup/test/selection.test.ts +++ b/packages/@aws-cdk/aws-backup/test/selection.test.ts @@ -2,7 +2,7 @@ import '@aws-cdk/assert/jest'; import * as dynamodb from '@aws-cdk/aws-dynamodb'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as efs from '@aws-cdk/aws-efs'; -import { Stack } from '@aws-cdk/core'; +import { RemovalPolicy, Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { BackupPlan, BackupResource, BackupSelection } from '../lib'; @@ -124,7 +124,8 @@ test('fromConstruct', () => { class EfsConstruct extends Construct { constructor(scope: Construct, id: string) { super(scope, id); - new efs.CfnFileSystem(this, 'FileSystem'); + const fs = new efs.CfnFileSystem(this, 'FileSystem'); + fs.applyRemovalPolicy(RemovalPolicy.DESTROY); } } class MyConstruct extends Construct { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.expected.json index 8626fa9281ca5..d290134fa1cb6 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stack.expected.json @@ -1,7 +1,9 @@ { "Resources": { "SubscriberQueueC193DC66": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "SubscriberQueuePolicy25A0799E": { "Type": "AWS::SQS::QueuePolicy", @@ -196,7 +198,9 @@ "Ref": "SubscriberQueueC193DC66" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "NestedStack2NestedStackNestedStack2NestedStackResourceFDF82E43": { "Type": "AWS::CloudFormation::Stack", @@ -250,7 +254,9 @@ "Parameters": { "TopicNamePrefix": "Prefix2" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.expected.json index d18d72744be00..45b52a4c8016d 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-assets.expected.json @@ -17,7 +17,7 @@ }, "/", { - "Ref": "AssetParameters28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145S3BucketFDBB032A" + "Ref": "AssetParameters7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aabS3Bucket2E4E0318" }, "/", { @@ -27,7 +27,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145S3VersionKey58263016" + "Ref": "AssetParameters7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aabS3VersionKeyF6AB1DF2" } ] } @@ -40,7 +40,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145S3VersionKey58263016" + "Ref": "AssetParameters7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aabS3VersionKeyF6AB1DF2" } ] } @@ -50,40 +50,42 @@ ] }, "Parameters": { - "referencetonestedstacksassetsAssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aS3BucketE2268D38Ref": { - "Ref": "AssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aS3BucketC5E2D427" + "referencetonestedstacksassetsAssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51S3BucketFE27EEBCRef": { + "Ref": "AssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51S3Bucket8C5997AB" }, - "referencetonestedstacksassetsAssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aS3VersionKeyD31C6796Ref": { - "Ref": "AssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aS3VersionKey31422F11" + "referencetonestedstacksassetsAssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51S3VersionKey24D35F02Ref": { + "Ref": "AssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51S3VersionKey81BEC7FB" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { - "AssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aS3BucketC5E2D427": { + "AssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51S3Bucket8C5997AB": { "Type": "String", - "Description": "S3 bucket for asset \"b13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148a\"" + "Description": "S3 bucket for asset \"bbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51\"" }, - "AssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aS3VersionKey31422F11": { + "AssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51S3VersionKey81BEC7FB": { "Type": "String", - "Description": "S3 key for asset version \"b13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148a\"" + "Description": "S3 key for asset version \"bbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51\"" }, - "AssetParametersb13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148aArtifactHash2897446E": { + "AssetParametersbbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51ArtifactHashB77349F4": { "Type": "String", - "Description": "Artifact hash for asset \"b13aad60258df1fbe5fb1312a7b2f8f25c03b3e07113782f7c12f00e023e148a\"" + "Description": "Artifact hash for asset \"bbe209afddb09a12327bab7a105e085758a29b769b5b4bf5b6320ac41b05fc51\"" }, - "AssetParameters28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145S3BucketFDBB032A": { + "AssetParameters7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aabS3Bucket2E4E0318": { "Type": "String", - "Description": "S3 bucket for asset \"28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145\"" + "Description": "S3 bucket for asset \"7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aab\"" }, - "AssetParameters28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145S3VersionKey58263016": { + "AssetParameters7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aabS3VersionKeyF6AB1DF2": { "Type": "String", - "Description": "S3 key for asset version \"28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145\"" + "Description": "S3 key for asset version \"7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aab\"" }, - "AssetParameters28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145ArtifactHash592B4471": { + "AssetParameters7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aabArtifactHash63670210": { "Type": "String", - "Description": "Artifact hash for asset \"28e3582cfc7c551f42435f44110c499fb2c415fe0f02a02a77139cf43edd1145\"" + "Description": "Artifact hash for asset \"7bd7ccfde94a4ad94f13971f10733ee01020eb6d7538b7a5c2b05966db2c0aab\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi-refs.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi-refs.expected.json index bc546994b8e41..8e1abf0743734 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi-refs.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi-refs.expected.json @@ -20,7 +20,7 @@ }, "/", { - "Ref": "AssetParametersad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95S3BucketDB605F9E" + "Ref": "AssetParameters2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703S3BucketD17502DC" }, "/", { @@ -30,7 +30,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95S3VersionKey26685906" + "Ref": "AssetParameters2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703S3VersionKeyA042251F" } ] } @@ -43,7 +43,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95S3VersionKey26685906" + "Ref": "AssetParameters2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703S3VersionKeyA042251F" } ] } @@ -65,14 +65,16 @@ "referencetonestedstacksmultirefsAssetParameters495a6bc36c13a0adeb3778c921d18ac4a8205f5471108fcc199a291d14855c3aS3VersionKey5F9CF809Ref": { "Ref": "AssetParameters495a6bc36c13a0adeb3778c921d18ac4a8205f5471108fcc199a291d14855c3aS3VersionKey2CCE0573" }, - "referencetonestedstacksmultirefsAssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847S3Bucket8F1E17B9Ref": { - "Ref": "AssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847S3Bucket9A14AA6D" + "referencetonestedstacksmultirefsAssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441S3Bucket119ED767Ref": { + "Ref": "AssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441S3BucketAF9A3A0F" }, - "referencetonestedstacksmultirefsAssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847S3VersionKey9EEEF950Ref": { - "Ref": "AssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847S3VersionKeyF124C0D9" + "referencetonestedstacksmultirefsAssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441S3VersionKeyDCF85FE2Ref": { + "Ref": "AssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441S3VersionKey2F85340C" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { @@ -88,29 +90,29 @@ "Type": "String", "Description": "Artifact hash for asset \"495a6bc36c13a0adeb3778c921d18ac4a8205f5471108fcc199a291d14855c3a\"" }, - "AssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847S3Bucket9A14AA6D": { + "AssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441S3BucketAF9A3A0F": { "Type": "String", - "Description": "S3 bucket for asset \"cc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847\"" + "Description": "S3 bucket for asset \"c2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441\"" }, - "AssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847S3VersionKeyF124C0D9": { + "AssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441S3VersionKey2F85340C": { "Type": "String", - "Description": "S3 key for asset version \"cc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847\"" + "Description": "S3 key for asset version \"c2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441\"" }, - "AssetParameterscc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847ArtifactHashAF64C405": { + "AssetParametersc2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441ArtifactHash5D93ED07": { "Type": "String", - "Description": "Artifact hash for asset \"cc623add53df153cf6a7df1cea4dc90740d7be087472579110754a633ec90847\"" + "Description": "Artifact hash for asset \"c2fbfb6df004b51bb870bd1f5cabda73830a59765a6c766aca0e906ec1e22441\"" }, - "AssetParametersad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95S3BucketDB605F9E": { + "AssetParameters2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703S3BucketD17502DC": { "Type": "String", - "Description": "S3 bucket for asset \"ad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95\"" + "Description": "S3 bucket for asset \"2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703\"" }, - "AssetParametersad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95S3VersionKey26685906": { + "AssetParameters2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703S3VersionKeyA042251F": { "Type": "String", - "Description": "S3 key for asset version \"ad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95\"" + "Description": "S3 key for asset version \"2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703\"" }, - "AssetParametersad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95ArtifactHashAF8D54FC": { + "AssetParameters2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703ArtifactHash8853E261": { "Type": "String", - "Description": "Artifact hash for asset \"ad23da1cfc8b3fd7916c6ffc7debacadf084765e62fab8acf0b8b0a9b0289f95\"" + "Description": "Artifact hash for asset \"2fa66e9dea71b1e05ebeed281df124cbaca34247ae93c767a533b6346cc17703\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.expected.json index 6a10c9252c79a..0145629ff176e 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-multi.expected.json @@ -17,7 +17,7 @@ }, "/", { - "Ref": "AssetParametersf94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8eS3Bucket0211CC54" + "Ref": "AssetParameters686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856S3BucketDF3BC15F" }, "/", { @@ -27,7 +27,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersf94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8eS3VersionKey5D85E7DD" + "Ref": "AssetParameters686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856S3VersionKey1BCA0E57" } ] } @@ -40,7 +40,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersf94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8eS3VersionKey5D85E7DD" + "Ref": "AssetParameters686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856S3VersionKey1BCA0E57" } ] } @@ -57,7 +57,9 @@ "Ref": "AssetParameterse3410ccec04414535f1c8035ce0ea42f59eedf66d0e6d0eec8bc435c4a4e809dS3VersionKey8C8E79CA" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { @@ -73,17 +75,17 @@ "Type": "String", "Description": "Artifact hash for asset \"e3410ccec04414535f1c8035ce0ea42f59eedf66d0e6d0eec8bc435c4a4e809d\"" }, - "AssetParametersf94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8eS3Bucket0211CC54": { + "AssetParameters686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856S3BucketDF3BC15F": { "Type": "String", - "Description": "S3 bucket for asset \"f94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8e\"" + "Description": "S3 bucket for asset \"686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856\"" }, - "AssetParametersf94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8eS3VersionKey5D85E7DD": { + "AssetParameters686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856S3VersionKey1BCA0E57": { "Type": "String", - "Description": "S3 key for asset version \"f94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8e\"" + "Description": "S3 key for asset version \"686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856\"" }, - "AssetParametersf94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8eArtifactHashD0519824": { + "AssetParameters686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856ArtifactHash9043932C": { "Type": "String", - "Description": "Artifact hash for asset \"f94d2259295147a175eeb7f8b31856e4beb5d4d4654f0bf956ee51d5e2ee5d8e\"" + "Description": "Artifact hash for asset \"686794a6d724e01e517bba15106edebf9db8d4bb309f0c60d5ff55a11db4a856\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-nested-export-to-sibling.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-nested-export-to-sibling.expected.json index 3cac1b07eb420..115a1f9130ae3 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-nested-export-to-sibling.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-nested-export-to-sibling.expected.json @@ -50,7 +50,9 @@ ] ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.expected.json index cf2e508a0f8eb..299d5005eff0f 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs1.expected.json @@ -70,7 +70,9 @@ ] ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.expected.json index ee7be9113bdcb..c6e818da02313 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs2.expected.json @@ -50,7 +50,9 @@ ] ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.expected.json b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.expected.json index 80a2f7712026c..2ef738be2c023 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.expected.json +++ b/packages/@aws-cdk/aws-cloudformation/test/integ.nested-stacks-refs3.expected.json @@ -49,7 +49,9 @@ ] ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "Nested2NestedStackNested2NestedStackResource877A1112": { "Type": "AWS::CloudFormation::Stack", @@ -108,7 +110,9 @@ ] } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { diff --git a/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts b/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts index 0a5b8e15977a4..75bf6766c4778 100644 --- a/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts +++ b/packages/@aws-cdk/aws-cloudformation/test/test.nested-stack.ts @@ -130,6 +130,8 @@ export = { Resources: { nestedstackNestedStacknestedstackNestedStackResource71CDD241: { Type: 'AWS::CloudFormation::Stack', + DeletionPolicy: 'Delete', + UpdateReplacePolicy: 'Delete', Properties: { TemplateURL: { 'Fn::Join': [ @@ -718,7 +720,10 @@ export = { }, }); - const middleStackHash = 'b2670b4c0c3fdf1d8fd9b9272bb8bf8173d18c0f67a888ba165cc569a248a84f'; + const middleStackHash = '7c426f7299a739900279ac1ece040397c1913cdf786f5228677b289f4d5e4c48'; + const bucketSuffix = 'C706B101'; + const versionSuffix = '4B193AA5'; + const hashSuffix = 'E28F0693'; // nested1 wires the nested2 template through parameters, so we expect those expect(nested1).to(haveResource('Resource::1')); @@ -735,9 +740,9 @@ export = { AssetParameters8169c6f8aaeaf5e2e8620f5f895ffe2099202ccb4b6889df48fe0967a894235cS3BucketDE3B88D6: { Type: 'String', Description: 'S3 bucket for asset "8169c6f8aaeaf5e2e8620f5f895ffe2099202ccb4b6889df48fe0967a894235c"' }, AssetParameters8169c6f8aaeaf5e2e8620f5f895ffe2099202ccb4b6889df48fe0967a894235cS3VersionKey3A62EFEA: { Type: 'String', Description: 'S3 key for asset version "8169c6f8aaeaf5e2e8620f5f895ffe2099202ccb4b6889df48fe0967a894235c"' }, AssetParameters8169c6f8aaeaf5e2e8620f5f895ffe2099202ccb4b6889df48fe0967a894235cArtifactHash7DC546E0: { Type: 'String', Description: 'Artifact hash for asset "8169c6f8aaeaf5e2e8620f5f895ffe2099202ccb4b6889df48fe0967a894235c"' }, - [`AssetParameters${middleStackHash}S3Bucket3DB431CB`]: { Type: 'String', Description: `S3 bucket for asset "${middleStackHash}"` }, - [`AssetParameters${middleStackHash}S3VersionKeyBFFDABE9`]: { Type: 'String', Description: `S3 key for asset version "${middleStackHash}"` }, - [`AssetParameters${middleStackHash}ArtifactHash8EA52875`]: { Type: 'String', Description: `Artifact hash for asset "${middleStackHash}"` }, + [`AssetParameters${middleStackHash}S3Bucket${bucketSuffix}`]: { Type: 'String', Description: `S3 bucket for asset "${middleStackHash}"` }, + [`AssetParameters${middleStackHash}S3VersionKey${versionSuffix}`]: { Type: 'String', Description: `S3 key for asset version "${middleStackHash}"` }, + [`AssetParameters${middleStackHash}ArtifactHash${hashSuffix}`]: { Type: 'String', Description: `Artifact hash for asset "${middleStackHash}"` }, }); // proxy asset params to nested stack diff --git a/packages/@aws-cdk/aws-cognito/lib/user-pool.ts b/packages/@aws-cdk/aws-cognito/lib/user-pool.ts index d85199ee6507f..eff29527ab4af 100644 --- a/packages/@aws-cdk/aws-cognito/lib/user-pool.ts +++ b/packages/@aws-cdk/aws-cognito/lib/user-pool.ts @@ -1,6 +1,6 @@ import { IRole, PolicyDocument, PolicyStatement, Role, ServicePrincipal } from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; -import { Duration, IResource, Lazy, Names, Resource, Stack, Token } from '@aws-cdk/core'; +import { Duration, IResource, Lazy, Names, RemovalPolicy, Resource, Stack, Token } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { toASCII as punycodeEncode } from 'punycode/'; import { CfnUserPool } from './cognito.generated'; @@ -567,6 +567,13 @@ export interface UserPoolProps { * @default AccountRecovery.PHONE_WITHOUT_MFA_AND_EMAIL */ readonly accountRecovery?: AccountRecovery; + + /** + * Policy to apply when the user pool is removed from the stack + * + * @default RemovalPolicy.RETAIN + */ + readonly removalPolicy?: RemovalPolicy; } /** @@ -756,6 +763,7 @@ export class UserPool extends UserPoolBase { }), accountRecoverySetting: this.accountRecovery(props), }); + userPool.applyRemovalPolicy(props.removalPolicy); this.userPoolId = userPool.ref; this.userPoolArn = userPool.attrArn; diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.expected.json index 6d118b0cf046c..c2c5b4d18b269 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.expected.json @@ -27,7 +27,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "myuserpoolmyuserpoolclientAFB2274E": { "Type": "AWS::Cognito::UserPoolClient", @@ -64,9 +66,25 @@ "COGNITO" ], "WriteAttributes": [ - "address", "birthdate", "custom:attribute_one", "custom:attribute_two", "email", - "family_name", "gender", "given_name", "locale", "middle_name", "name", "nickname", "phone_number", - "picture", "preferred_username", "profile", "updated_at", "website", "zoneinfo" + "address", + "birthdate", + "custom:attribute_one", + "custom:attribute_two", + "email", + "family_name", + "gender", + "given_name", + "locale", + "middle_name", + "name", + "nickname", + "phone_number", + "picture", + "preferred_username", + "profile", + "updated_at", + "website", + "zoneinfo" ] } } diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.ts index 2cd4557cdb48a..d8a058a86d9c8 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-client-explicit-props.ts @@ -1,10 +1,12 @@ -import { App, Stack } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack } from '@aws-cdk/core'; import { OAuthScope, UserPool, ClientAttributes } from '../lib'; const app = new App(); const stack = new Stack(app, 'integ-user-pool-client-explicit-props'); -const userpool = new UserPool(stack, 'myuserpool'); +const userpool = new UserPool(stack, 'myuserpool', { + removalPolicy: RemovalPolicy.DESTROY, +}); userpool.addClient('myuserpoolclient', { userPoolClientName: 'myuserpoolclient', diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json index 5f3a61539ea8a..e9a67d39c9235 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json @@ -27,7 +27,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "UserPoolDomainD0EA232A": { "Type": "AWS::Cognito::UserPoolDomain", @@ -38,6 +40,27 @@ } } }, + "UserPoolDomainCloudFrontDomainNameCustomResourcePolicy7DE54188": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "cognito-idp:DescribeUserPoolDomain", + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "UserPoolDomainCloudFrontDomainNameCustomResourcePolicy7DE54188", + "Roles": [ + { + "Ref": "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2" + } + ] + } + }, "UserPoolDomainCloudFrontDomainNameE213E594": { "Type": "Custom::UserPoolCloudFrontDomainName", "Properties": { @@ -77,11 +100,11 @@ }, "InstallLatestAwsSdk": true }, - "UpdateReplacePolicy": "Delete", - "DeletionPolicy": "Delete", "DependsOn": [ "UserPoolDomainCloudFrontDomainNameCustomResourcePolicy7DE54188" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2": { "Type": "AWS::IAM::Role", @@ -114,29 +137,12 @@ ] } }, - "UserPoolDomainCloudFrontDomainNameCustomResourcePolicy7DE54188": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyDocument": { - "Statement": [ - { - "Action":"cognito-idp:DescribeUserPoolDomain", - "Effect":"Allow", - "Resource": "*" - } - ], - "Version": "2012-10-17" - }, - "PolicyName": "UserPoolDomainCloudFrontDomainNameCustomResourcePolicy7DE54188", - "Roles": [{"Ref":"AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2"}] - } - }, "AWS679f53fac002430cb0da5b7982bd22872D164C4C": { "Type": "AWS::Lambda::Function", "Properties": { "Code": { "S3Bucket": { - "Ref": "AssetParametersd731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557S3BucketA250C084" + "Ref": "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94S3Bucket38F1BB8E" }, "S3Key": { "Fn::Join": [ @@ -149,7 +155,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersd731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557S3VersionKeyDC4F0CD7" + "Ref": "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94S3VersionKeyCCDC67C0" } ] } @@ -162,7 +168,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParametersd731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557S3VersionKeyDC4F0CD7" + "Ref": "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94S3VersionKeyCCDC67C0" } ] } @@ -172,13 +178,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, @@ -203,17 +209,17 @@ } }, "Parameters": { - "AssetParametersd731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557S3BucketA250C084": { + "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94S3Bucket38F1BB8E": { "Type": "String", - "Description": "S3 bucket for asset \"d731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557\"" + "Description": "S3 bucket for asset \"b64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94\"" }, - "AssetParametersd731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557S3VersionKeyDC4F0CD7": { + "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94S3VersionKeyCCDC67C0": { "Type": "String", - "Description": "S3 key for asset version \"d731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557\"" + "Description": "S3 key for asset version \"b64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94\"" }, - "AssetParametersd731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557ArtifactHash5701DE73": { + "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94ArtifactHash782948FC": { "Type": "String", - "Description": "Artifact hash for asset \"d731b1475f16a318a48a76c83d255f7422cfa5f025c5bff93537b8f0b8e94557\"" + "Description": "Artifact hash for asset \"b64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.ts index 7a45e144ffc3c..2c646a52721ae 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.ts @@ -1,5 +1,5 @@ /// !cdk-integ pragma:ignore-assets -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { UserPool } from '../lib'; /* @@ -10,7 +10,9 @@ import { UserPool } from '../lib'; const app = new App(); const stack = new Stack(app, 'integ-user-pool-domain-cfdist'); -const userpool = new UserPool(stack, 'UserPool'); +const userpool = new UserPool(stack, 'UserPool', { + removalPolicy: RemovalPolicy.DESTROY, +}); const domain = userpool.addDomain('Domain', { cognitoDomain: { diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.expected.json index 694cf43b5f5ea..f19f82379b701 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.expected.json @@ -27,7 +27,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "UserPoolDomainD0EA232A": { "Type": "AWS::Cognito::UserPoolDomain", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.ts index 7d55d08fe12bb..7b26359354f9b 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-signinurl.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { UserPool } from '../lib'; /* @@ -10,7 +10,9 @@ import { UserPool } from '../lib'; const app = new App(); const stack = new Stack(app, 'integ-user-pool-domain-signinurl'); -const userpool = new UserPool(stack, 'UserPool'); +const userpool = new UserPool(stack, 'UserPool', { + removalPolicy: RemovalPolicy.DESTROY, +}); const domain = userpool.addDomain('Domain', { cognitoDomain: { diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.expected.json index ed77c3b7baa53..50da9815a769b 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.expected.json @@ -37,15 +37,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "createAuthChallengeServiceRole611710B5", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "createAuthChallenge" + "FunctionName": "createAuthChallenge", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "createAuthChallengeServiceRole611710B5" @@ -101,15 +101,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "customMessageServiceRoleB4AE7F17", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "customMessage" + "FunctionName": "customMessage", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "customMessageServiceRoleB4AE7F17" @@ -165,15 +165,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "defineAuthChallengeServiceRole9E2D15DF", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "defineAuthChallenge" + "FunctionName": "defineAuthChallenge", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "defineAuthChallengeServiceRole9E2D15DF" @@ -229,15 +229,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "postAuthenticationServiceRole5B3B242A", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "postAuthentication" + "FunctionName": "postAuthentication", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "postAuthenticationServiceRole5B3B242A" @@ -293,15 +293,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "postConfirmationServiceRole864BE5F9", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "postConfirmation" + "FunctionName": "postConfirmation", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "postConfirmationServiceRole864BE5F9" @@ -357,15 +357,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "preAuthenticationServiceRole9712F4D8", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "preAuthentication" + "FunctionName": "preAuthentication", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "preAuthenticationServiceRole9712F4D8" @@ -421,15 +421,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "preSignUpServiceRole0A7E91EB", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "preSignUp" + "FunctionName": "preSignUp", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "preSignUpServiceRole0A7E91EB" @@ -485,15 +485,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "preTokenGenerationServiceRole430C3D14", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "preTokenGeneration" + "FunctionName": "preTokenGeneration", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "preTokenGenerationServiceRole430C3D14" @@ -549,15 +549,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "userMigrationServiceRole091766B0", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "userMigration" + "FunctionName": "userMigration", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "userMigrationServiceRole091766B0" @@ -613,15 +613,15 @@ "Code": { "ZipFile": "foo" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "verifyAuthChallengeResponseServiceRole7077884C", "Arn" ] }, - "Runtime": "nodejs12.x", - "FunctionName": "verifyAuthChallengeResponse" + "FunctionName": "verifyAuthChallengeResponse", + "Handler": "index.handler", + "Runtime": "nodejs12.x" }, "DependsOn": [ "verifyAuthChallengeResponseServiceRole7077884C" @@ -843,7 +843,9 @@ "EmailSubject": "verification email subject from the integ test", "SmsMessage": "verification sms message from the integ test. Code is {####}." } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "myuserpoolmyuserpooldomainEE1E11AF": { "Type": "AWS::Cognito::UserPoolDomain", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.ts index 261251e1e2592..1bc35003fa472 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-explicit-props.ts @@ -1,11 +1,12 @@ import { Code, Function, IFunction, Runtime } from '@aws-cdk/aws-lambda'; -import { App, CfnOutput, Duration, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, Duration, RemovalPolicy, Stack } from '@aws-cdk/core'; import { BooleanAttribute, DateTimeAttribute, Mfa, NumberAttribute, StringAttribute, UserPool } from '../lib'; const app = new App(); const stack = new Stack(app, 'integ-user-pool'); const userpool = new UserPool(stack, 'myuserpool', { + removalPolicy: RemovalPolicy.DESTROY, userPoolName: 'MyUserPool', userInvitation: { emailSubject: 'invitation email subject from the integ test', diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.expected.json index e68a262eb7ee3..dd2188ee4e517 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.expected.json @@ -27,7 +27,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "poolclient2623294C": { "Type": "AWS::Cognito::UserPoolClient", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.ts index 7252dfc0a8a40..77b95a5857330 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.amazon.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { ProviderAttribute, UserPool, UserPoolIdentityProviderAmazon } from '../lib'; /* @@ -9,7 +9,9 @@ import { ProviderAttribute, UserPool, UserPoolIdentityProviderAmazon } from '../ const app = new App(); const stack = new Stack(app, 'integ-user-pool-idp-amazon'); -const userpool = new UserPool(stack, 'pool'); +const userpool = new UserPool(stack, 'pool', { + removalPolicy: RemovalPolicy.DESTROY, +}); new UserPoolIdentityProviderAmazon(stack, 'amazon', { userPool: userpool, diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.expected.json index c767ee9d2d260..b90dd7faec0dd 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.expected.json @@ -27,7 +27,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "poolclient2623294C": { "Type": "AWS::Cognito::UserPoolClient", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.ts index fac20b8351d38..f4ea4d077286d 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-idp.google.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { ProviderAttribute, UserPool, UserPoolIdentityProviderGoogle } from '../lib'; /* @@ -9,7 +9,9 @@ import { ProviderAttribute, UserPool, UserPoolIdentityProviderGoogle } from '../ const app = new App(); const stack = new Stack(app, 'integ-user-pool-idp-google'); -const userpool = new UserPool(stack, 'pool'); +const userpool = new UserPool(stack, 'pool', { + removalPolicy: RemovalPolicy.DESTROY, +}); new UserPoolIdentityProviderGoogle(stack, 'google', { userPool: userpool, diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.expected.json index ffc765b879357..36b033a51f2fb 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.expected.json @@ -28,7 +28,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "myuserpoolmyserver50C4D8E9": { "Type": "AWS::Cognito::UserPoolResourceServer", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.ts index 8610d7a3e1296..cd56612c65cd7 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-resource-server.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { OAuthScope, ResourceServerScope, UserPool } from '../lib'; const app = new App(); @@ -14,6 +14,7 @@ const stack = new Stack(app, 'integ-user-pool-resource-server'); */ const userPool = new UserPool(stack, 'myuserpool', { userPoolName: 'MyUserPool', + removalPolicy: RemovalPolicy.DESTROY, }); const readScope = new ResourceServerScope({ scopeName: 'read', scopeDescription: 'read only' }); diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.expected.json index 5cc13052434f2..091b5f4cb7a8a 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.expected.json @@ -87,7 +87,9 @@ "EmailSubject": "integ-test: Verify your account", "SmsMessage": "integ-test: Account verification code is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "myuserpoolclient8A58A3E4": { "Type": "AWS::Cognito::UserPoolClient", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.ts index 12e8c1d354ea3..9118b4c912adf 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-code.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { UserPool, UserPoolClient, VerificationEmailStyle } from '../lib'; /* @@ -15,6 +15,7 @@ const app = new App(); const stack = new Stack(app, 'integ-user-pool-signup-code'); const userpool = new UserPool(stack, 'myuserpool', { + removalPolicy: RemovalPolicy.DESTROY, userPoolName: 'MyUserPool', autoVerify: { email: true, diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.expected.json index 53c9f89ed8031..f5cca975e608b 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.expected.json @@ -85,7 +85,9 @@ "EmailSubjectByLink": "integ-test: Verify your account", "SmsMessage": "integ-test: Account verification code is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "myuserpoolmyuserpooldomainEE1E11AF": { "Type": "AWS::Cognito::UserPoolDomain", diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.ts index 92f0452010f22..b7121720ad940 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-signup-link.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { UserPool, UserPoolClient, VerificationEmailStyle } from '../lib'; /* @@ -15,6 +15,7 @@ const app = new App(); const stack = new Stack(app, 'integ-user-pool-signup-link'); const userpool = new UserPool(stack, 'myuserpool', { + removalPolicy: RemovalPolicy.DESTROY, userPoolName: 'MyUserPool', autoVerify: { email: true, diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool.expected.json index 85214615c050d..a3a50d2f5287b 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool.expected.json @@ -28,7 +28,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool.ts b/packages/@aws-cdk/aws-cognito/test/integ.user-pool.ts index 565a6b1dd549e..5b587b8f94f75 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool.ts +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool.ts @@ -1,4 +1,4 @@ -import { App, CfnOutput, Stack } from '@aws-cdk/core'; +import { App, CfnOutput, RemovalPolicy, Stack } from '@aws-cdk/core'; import { UserPool } from '../lib'; const app = new App(); @@ -6,6 +6,7 @@ const stack = new Stack(app, 'integ-user-pool'); const userpool = new UserPool(stack, 'myuserpool', { userPoolName: 'MyUserPool', + removalPolicy: RemovalPolicy.DESTROY, }); new CfnOutput(stack, 'user-pool-id', { diff --git a/packages/@aws-cdk/aws-cognito/test/user-pool.test.ts b/packages/@aws-cdk/aws-cognito/test/user-pool.test.ts index a2199eecce800..6801e8ada2568 100644 --- a/packages/@aws-cdk/aws-cognito/test/user-pool.test.ts +++ b/packages/@aws-cdk/aws-cognito/test/user-pool.test.ts @@ -1,5 +1,5 @@ import '@aws-cdk/assert/jest'; -import { ABSENT } from '@aws-cdk/assert/lib/assertions/have-resource'; +import { ABSENT, ResourcePart } from '@aws-cdk/assert/lib/assertions/have-resource'; import { Role, ServicePrincipal } from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import { CfnParameter, Duration, Stack, Tags } from '@aws-cdk/core'; @@ -32,6 +32,10 @@ describe('User Pool', () => { SmsConfiguration: ABSENT, lambdaTriggers: ABSENT, }); + + expect(stack).toHaveResource('AWS::Cognito::UserPool', { + DeletionPolicy: 'Retain', + }, ResourcePart.CompleteDefinition); }); test('self sign up option is correctly configured', () => { diff --git a/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts b/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts index 41f69b94789b0..efc304a9487e9 100644 --- a/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts +++ b/packages/@aws-cdk/aws-dynamodb/test/dynamodb.test.ts @@ -3,8 +3,9 @@ import '@aws-cdk/assert/jest'; import * as appscaling from '@aws-cdk/aws-applicationautoscaling'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; -import { App, Aws, CfnDeletionPolicy, Duration, PhysicalName, RemovalPolicy, Stack, Tags } from '@aws-cdk/core'; +import { App, Aws, CfnDeletionPolicy, Duration, PhysicalName, RemovalPolicy, Resource, Stack, Tags } from '@aws-cdk/core'; import { testLegacyBehavior } from 'cdk-build-tools/lib/feature-flag'; +import { Construct } from 'constructs'; import { Attribute, AttributeType, @@ -16,6 +17,7 @@ import { Table, TableEncryption, Operation, + CfnTable, } from '../lib'; /* eslint-disable quote-props */ @@ -2814,6 +2816,29 @@ describe('global', () => { }); }); +test('L1 inside L2 expects removalpolicy to have been set', () => { + // Check that the "stateful L1 validation generation" works. Do it here + // because we know DDB tables are stateful. + const app = new App(); + const stack = new Stack(app, 'Stack'); + + class FakeTableL2 extends Resource { + constructor(scope: Construct, id: string) { + super(scope, id); + + new CfnTable(this, 'Resource', { + keySchema: [{ attributeName: 'hash', keyType: 'S' }], + }); + } + } + + new FakeTableL2(stack, 'Table'); + + expect(() => { + SynthUtils.toCloudFormation(stack); + }).toThrow(/is a stateful resource type/); +}); + function testGrant(expectedActions: string[], invocation: (user: iam.IPrincipal, table: Table) => void) { // GIVEN const stack = new Stack(); diff --git a/packages/@aws-cdk/aws-dynamodb/test/integ.global-replicas-provisioned.expected.json b/packages/@aws-cdk/aws-dynamodb/test/integ.global-replicas-provisioned.expected.json index ec15f88fdfea8..89a9c3807fc21 100644 --- a/packages/@aws-cdk/aws-dynamodb/test/integ.global-replicas-provisioned.expected.json +++ b/packages/@aws-cdk/aws-dynamodb/test/integ.global-replicas-provisioned.expected.json @@ -302,7 +302,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Conditions": { diff --git a/packages/@aws-cdk/aws-dynamodb/test/integ.global.expected.json b/packages/@aws-cdk/aws-dynamodb/test/integ.global.expected.json index 2301663780e86..a66dd3d965ed9 100644 --- a/packages/@aws-cdk/aws-dynamodb/test/integ.global.expected.json +++ b/packages/@aws-cdk/aws-dynamodb/test/integ.global.expected.json @@ -231,7 +231,7 @@ }, "/", { - "Ref": "AssetParameters51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620eS3Bucket58C634A6" + "Ref": "AssetParametersf8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429ceaS3Bucket434BDB62" }, "/", { @@ -241,7 +241,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620eS3VersionKeyE8ACA4C1" + "Ref": "AssetParametersf8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429ceaS3VersionKey01638790" } ] } @@ -254,7 +254,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620eS3VersionKeyE8ACA4C1" + "Ref": "AssetParametersf8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429ceaS3VersionKey01638790" } ] } @@ -264,58 +264,60 @@ ] }, "Parameters": { - "referencetocdkdynamodbglobal20191121AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1S3BucketFE71C2D0Ref": { - "Ref": "AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1S3Bucket492F02B7" + "referencetocdkdynamodbglobal20191121AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714S3Bucket71E24D5BRef": { + "Ref": "AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714S3Bucket1C6779E0" }, - "referencetocdkdynamodbglobal20191121AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1S3VersionKey849A4FA5Ref": { - "Ref": "AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1S3VersionKeyC7F72494" + "referencetocdkdynamodbglobal20191121AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714S3VersionKeyD88E8BACRef": { + "Ref": "AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714S3VersionKey5C1D9275" }, - "referencetocdkdynamodbglobal20191121AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3S3Bucket80086951Ref": { - "Ref": "AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3S3Bucket0EEA1C2E" + "referencetocdkdynamodbglobal20191121AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketC7F3A147Ref": { + "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" }, - "referencetocdkdynamodbglobal20191121AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3S3VersionKeyC3096D21Ref": { - "Ref": "AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3S3VersionKey7BCE18C9" + "referencetocdkdynamodbglobal20191121AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyB6346792Ref": { + "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { - "AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1S3Bucket492F02B7": { + "AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714S3Bucket1C6779E0": { "Type": "String", - "Description": "S3 bucket for asset \"23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1\"" + "Description": "S3 bucket for asset \"f13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714\"" }, - "AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1S3VersionKeyC7F72494": { + "AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714S3VersionKey5C1D9275": { "Type": "String", - "Description": "S3 key for asset version \"23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1\"" + "Description": "S3 key for asset version \"f13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714\"" }, - "AssetParameters23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1ArtifactHash43BB7053": { + "AssetParametersf13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714ArtifactHash477AAEA7": { "Type": "String", - "Description": "Artifact hash for asset \"23c5f8cc1bdef276fc20dbb166d24d1b7d8cb516a5d5822ed0d38feec9631fd1\"" + "Description": "Artifact hash for asset \"f13d472270faaa08099009152a8848a0e7434b14773f3c3f94acca6f6c3ae714\"" }, - "AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3S3Bucket0EEA1C2E": { + "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1": { "Type": "String", - "Description": "S3 bucket for asset \"956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3\"" + "Description": "S3 bucket for asset \"daeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1\"" }, - "AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3S3VersionKey7BCE18C9": { + "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F": { "Type": "String", - "Description": "S3 key for asset version \"956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3\"" + "Description": "S3 key for asset version \"daeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1\"" }, - "AssetParameters956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3ArtifactHash2CBB11D2": { + "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1ArtifactHashA521A16F": { "Type": "String", - "Description": "Artifact hash for asset \"956c2f92ddbde06f551fdf914445c679dcadb21c6e8d1ee9c9632144ef5a2ad3\"" + "Description": "Artifact hash for asset \"daeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1\"" }, - "AssetParameters51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620eS3Bucket58C634A6": { + "AssetParametersf8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429ceaS3Bucket434BDB62": { "Type": "String", - "Description": "S3 bucket for asset \"51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620e\"" + "Description": "S3 bucket for asset \"f8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429cea\"" }, - "AssetParameters51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620eS3VersionKeyE8ACA4C1": { + "AssetParametersf8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429ceaS3VersionKey01638790": { "Type": "String", - "Description": "S3 key for asset version \"51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620e\"" + "Description": "S3 key for asset version \"f8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429cea\"" }, - "AssetParameters51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620eArtifactHashDF827F41": { + "AssetParametersf8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429ceaArtifactHashD0E61C22": { "Type": "String", - "Description": "Artifact hash for asset \"51ac5fed1b824803906219cb11f0c17572739bd4fb019d961cdc1fbbfefc620e\"" + "Description": "Artifact hash for asset \"f8cfc24954f0c95960d9a93888c01bf5e95802f26bfa5dc6fde5c913a1429cea\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ec2/lib/volume.ts b/packages/@aws-cdk/aws-ec2/lib/volume.ts index 43ee12deea5c0..2cf6f61fa41f3 100644 --- a/packages/@aws-cdk/aws-ec2/lib/volume.ts +++ b/packages/@aws-cdk/aws-ec2/lib/volume.ts @@ -2,7 +2,7 @@ import * as crypto from 'crypto'; import { AccountRootPrincipal, Grant, IGrantable } from '@aws-cdk/aws-iam'; import { IKey, ViaServicePrincipal } from '@aws-cdk/aws-kms'; -import { IResource, Resource, Size, SizeRoundingBehavior, Stack, Token, Tags, Names } from '@aws-cdk/core'; +import { IResource, Resource, Size, SizeRoundingBehavior, Stack, Token, Tags, Names, RemovalPolicy } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { CfnVolume } from './ec2.generated'; import { IInstance } from './instance'; @@ -426,6 +426,13 @@ export interface VolumeProps { * @default None -- Required for io1 and io2 volumes. The default for gp3 volumes is 3,000 IOPS if omitted. */ readonly iops?: number; + + /** + * Policy to apply when the volume is removed from the stack + * + * @default RemovalPolicy.RETAIN + */ + readonly removalPolicy?: RemovalPolicy; } /** @@ -600,6 +607,7 @@ export class Volume extends VolumeBase { snapshotId: props.snapshotId, volumeType: props.volumeType ?? EbsDeviceVolumeType.GENERAL_PURPOSE_SSD, }); + resource.applyRemovalPolicy(props.removalPolicy); this.volumeId = resource.ref; this.availabilityZone = props.availabilityZone; diff --git a/packages/@aws-cdk/aws-ec2/test/volume.test.ts b/packages/@aws-cdk/aws-ec2/test/volume.test.ts index 4e5da04a38976..edd0323bc84ef 100644 --- a/packages/@aws-cdk/aws-ec2/test/volume.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/volume.test.ts @@ -41,7 +41,9 @@ describe('volume', () => { VolumeType: 'gp2', }, ResourcePart.Properties)); - + cdkExpect(stack).to(haveResource('AWS::EC2::Volume', { + DeletionPolicy: 'Retain', + }, ResourcePart.CompleteDefinition)); }); test('fromVolumeAttributes', () => { diff --git a/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.expected.json b/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.expected.json index 779ad22187591..f86d0e5fea7ab 100644 --- a/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.expected.json +++ b/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.expected.json @@ -49,7 +49,9 @@ ] ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Parameters": { @@ -66,4 +68,4 @@ "Description": "Artifact hash for asset \"41589ef1a760129e41441e85e58fe02db5f019ed532b8a4a20729f3245b0593b\"" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-isolated.expected.json b/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-isolated.expected.json index d19d9c6a9fbb9..b1d88ed107154 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-isolated.expected.json +++ b/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-isolated.expected.json @@ -668,7 +668,9 @@ "Type": "AWS::SQS::Queue", "Properties": { "MessageRetentionPeriod": 1209600 - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "IsolatedQueueServiceEcsProcessingQueueCCE172F1": { "Type": "AWS::SQS::Queue", @@ -682,7 +684,9 @@ }, "maxReceiveCount": 3 } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "IsolatedQueueServiceQueueProcessingTaskDefTaskRoleCFCB7511": { "Type": "AWS::IAM::Role", diff --git a/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-public.expected.json b/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-public.expected.json index 104e2f2e6f45f..fd8f791e3a868 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-public.expected.json +++ b/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service-public.expected.json @@ -518,7 +518,9 @@ "Type": "AWS::SQS::Queue", "Properties": { "MessageRetentionPeriod": 1209600 - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "PublicQueueServiceEcsProcessingQueue84CD309D": { "Type": "AWS::SQS::Queue", @@ -532,7 +534,9 @@ }, "maxReceiveCount": 3 } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "PublicQueueServiceQueueProcessingTaskDefTaskRole172D980F": { "Type": "AWS::IAM::Role", diff --git a/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service.expected.json b/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service.expected.json index 3fd9825b7db3b..889eeefcd985e 100644 --- a/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service.expected.json +++ b/packages/@aws-cdk/aws-ecs-patterns/test/fargate/integ.queue-processing-fargate-service.expected.json @@ -359,7 +359,9 @@ "Type": "AWS::SQS::Queue", "Properties": { "MessageRetentionPeriod": 1209600 - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "QueueProcessingServiceEcsProcessingQueue552F0B37": { "Type": "AWS::SQS::Queue", @@ -373,7 +375,9 @@ }, "maxReceiveCount": 3 } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "QueueProcessingServiceQueueProcessingTaskDefTaskRole782B79A6": { "Type": "AWS::IAM::Role", diff --git a/packages/@aws-cdk/aws-ecs/.gitignore b/packages/@aws-cdk/aws-ecs/.gitignore index 255c76b856cb1..52228730a371f 100644 --- a/packages/@aws-cdk/aws-ecs/.gitignore +++ b/packages/@aws-cdk/aws-ecs/.gitignore @@ -16,4 +16,5 @@ nyc.config.js *.snk !.eslintrc.js -junit.xml \ No newline at end of file +junit.xml +!jest.config.js \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/.npmignore b/packages/@aws-cdk/aws-ecs/.npmignore index 40fbede1f02dc..6c1b9b8c69ec6 100644 --- a/packages/@aws-cdk/aws-ecs/.npmignore +++ b/packages/@aws-cdk/aws-ecs/.npmignore @@ -23,4 +23,5 @@ tsconfig.json # exclude cdk artifacts **/cdk.out junit.xml -test/ \ No newline at end of file +test/ +jest.config.js \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/jest.config.js b/packages/@aws-cdk/aws-ecs/jest.config.js new file mode 100644 index 0000000000000..f5d5c4c8ad18f --- /dev/null +++ b/packages/@aws-cdk/aws-ecs/jest.config.js @@ -0,0 +1,2 @@ +const baseConfig = require('../../../tools/cdk-build-tools/config/jest.config'); +module.exports = baseConfig; \ No newline at end of file diff --git a/packages/@aws-cdk/aws-ecs/package.json b/packages/@aws-cdk/aws-ecs/package.json index d74f2d5eddb1c..63390a8417837 100644 --- a/packages/@aws-cdk/aws-ecs/package.json +++ b/packages/@aws-cdk/aws-ecs/package.json @@ -54,6 +54,7 @@ }, "cdk-build": { "cloudformation": "AWS::ECS", + "jest": "true", "env": { "AWSLINT_BASE_CONSTRUCT": true } @@ -78,7 +79,7 @@ "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "cfn2ts": "0.0.0", - "nodeunit": "^0.11.3", + "nodeunit-shim": "0.0.0", "pkglint": "0.0.0", "proxyquire": "^2.1.3" }, diff --git a/packages/@aws-cdk/aws-ecs/test/test.app-mesh-proxy-configuration.ts b/packages/@aws-cdk/aws-ecs/test/app-mesh-proxy-configuration.test.ts similarity index 98% rename from packages/@aws-cdk/aws-ecs/test/test.app-mesh-proxy-configuration.ts rename to packages/@aws-cdk/aws-ecs/test/app-mesh-proxy-configuration.test.ts index 1633d90234ee0..69f3d30e9b865 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.app-mesh-proxy-configuration.ts +++ b/packages/@aws-cdk/aws-ecs/test/app-mesh-proxy-configuration.test.ts @@ -1,9 +1,9 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; -export = { +nodeunitShim({ 'correctly sets all appMeshProxyConfiguration'(test: Test) { // GIVEN const stack = new cdk.Stack(); @@ -204,4 +204,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.aws-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/aws-log-driver.test.ts similarity index 98% rename from packages/@aws-cdk/aws-ecs/test/test.aws-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/aws-log-driver.test.ts index a4d5c9af9c53d..d36fb943e8b2d 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.aws-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/aws-log-driver.test.ts @@ -1,14 +1,14 @@ import { expect, haveResource, haveResourceLike } from '@aws-cdk/assert'; import * as logs from '@aws-cdk/aws-logs'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.FargateTaskDefinition(stack, 'TaskDefinition'); @@ -154,4 +154,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts b/packages/@aws-cdk/aws-ecs/test/container-definition.test.ts similarity index 81% rename from packages/@aws-cdk/aws-ecs/test/test.container-definition.ts rename to packages/@aws-cdk/aws-ecs/test/container-definition.test.ts index e994a9174f51d..9b5ac7a746fd0 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.container-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/container-definition.test.ts @@ -1,16 +1,17 @@ +import '@aws-cdk/assert/jest'; import * as path from 'path'; -import { expect, haveResource, haveResourceLike, InspectionFailure } from '@aws-cdk/assert'; +import { InspectionFailure } from '@aws-cdk/assert'; import * as ecr_assets from '@aws-cdk/aws-ecr-assets'; import * as s3 from '@aws-cdk/aws-s3'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import * as ssm from '@aws-cdk/aws-ssm'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { testFutureBehavior } from 'cdk-build-tools/lib/feature-flag'; import * as ecs from '../lib'; -export = { - 'When creating a Task Definition': { - 'add a container using default props'(test: Test) { +describe('container definition', () => { + describe('When creating a Task Definition', () => { + test('add a container using default props', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -22,7 +23,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Essential: true, @@ -31,12 +32,12 @@ export = { Name: 'Container', }, ], - })); + }); + - test.done(); - }, + }); - 'add a container using all props'(test: Test) { + test('add a container using all props', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -85,7 +86,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Command: [ @@ -219,31 +220,31 @@ export = { WorkingDirectory: 'a/b/c', }, ], - })); + }); - test.done(); - }, - 'throws when MemoryLimit is less than MemoryReservationLimit'(test: Test) { + }); + + test('throws when MemoryLimit is less than MemoryReservationLimit', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); // THEN - test.throws(() => { + expect(() => { new ecs.ContainerDefinition(stack, 'Container', { image: ecs.ContainerImage.fromRegistry('/aws/aws-example-app'), taskDefinition, memoryLimitMiB: 512, memoryReservationMiB: 1024, }); - }, /MemoryLimitMiB should not be less than MemoryReservationMiB./); + }).toThrow(/MemoryLimitMiB should not be less than MemoryReservationMiB./); + - test.done(); - }, + }); - 'With network mode AwsVpc': { - 'throws when Host port is different from container port'(test: Test) { + describe('With network mode AwsVpc', () => { + test('throws when Host port is different from container port', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -256,17 +257,17 @@ export = { }); // THEN - test.throws(() => { + expect(() => { container.addPortMappings({ containerPort: 8080, hostPort: 8081, }); - }); + }).toThrow(); - test.done(); - }, - 'Host port is the same as container port'(test: Test) { + }); + + test('Host port is the same as container port', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -284,10 +285,10 @@ export = { }); // THEN no exception raised - test.done(); - }, - 'Host port can be empty '(test: Test) { + }); + + test('Host port can be empty ', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -305,12 +306,12 @@ export = { }); // THEN no exception raised - test.done(); - }, - }, - 'With network mode Host ': { - 'throws when Host port is different from container port'(test: Test) { + }); + }); + + describe('With network mode Host ', () => { + test('throws when Host port is different from container port', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -323,17 +324,17 @@ export = { }); // THEN - test.throws(() => { + expect(() => { container.addPortMappings({ containerPort: 8080, hostPort: 8081, }); - }); + }).toThrow(); - test.done(); - }, - 'when host port is the same as container port'(test: Test) { + }); + + test('when host port is the same as container port', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -351,10 +352,10 @@ export = { }); // THEN no exception raised - test.done(); - }, - 'Host port can be empty '(test: Test) { + }); + + test('Host port can be empty ', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -372,10 +373,10 @@ export = { }); // THEN no exception raised - test.done(); - }, - 'errors when adding links'(test: Test) { + }); + + test('errors when adding links', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -393,16 +394,16 @@ export = { }); // THEN - test.throws(() => { + expect(() => { container.addLink(logger); - }); + }).toThrow(); - test.done(); - }, - }, - 'With network mode Bridge': { - 'when Host port is empty '(test: Test) { + }); + }); + + describe('With network mode Bridge', () => { + test('when Host port is empty ', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -419,10 +420,10 @@ export = { }); // THEN no exception raises - test.done(); - }, - 'when Host port is not empty '(test: Test) { + }); + + test('when Host port is not empty ', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -440,10 +441,10 @@ export = { }); // THEN no exception raises - test.done(); - }, - 'allows adding links'(test: Test) { + }); + + test('allows adding links', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -463,12 +464,12 @@ export = { // THEN container.addLink(logger); - test.done(); - }, - }, - 'With network mode NAT': { - 'produces undefined CF networkMode property'(test: Test) { + }); + }); + + describe('With network mode NAT', () => { + test('produces undefined CF networkMode property', () => { // GIVEN const stack = new cdk.Stack(); @@ -479,22 +480,22 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', (props: any, inspection: InspectionFailure) => { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', (props: any, inspection: InspectionFailure) => { if (props.NetworkMode === undefined) { return true; } inspection.failureReason = 'CF template should not have NetworkMode defined for a task definition that relies on NAT network mode.'; return false; - })); + }); - test.done(); - }, - }, - }, - 'Container Port': { - 'should return the first container port in PortMappings'(test: Test) { + }); + }); + }); + + describe('Container Port', () => { + test('should return the first container port in PortMappings', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -518,11 +519,11 @@ export = { // THEN const expected = 8080; - test.equal(actual, expected, 'containerPort should return the first container port in PortMappings'); - test.done(); - }, + expect(actual).toEqual(expected); - 'throws when calling containerPort with no PortMappings'(test: Test) { + }); + + test('throws when calling containerPort with no PortMappings', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -535,19 +536,19 @@ export = { }); // THEN - test.throws(() => { + expect(() => { const actual = container.containerPort; const expected = 8080; - test.equal(actual, expected); - }, /Container MyContainer hasn't defined any ports. Call addPortMappings()./); + expect(actual).toEqual(expected); + }).toThrow(/Container MyContainer hasn't defined any ports. Call addPortMappings()./); + - test.done(); - }, - }, + }); + }); - 'Ingress Port': { - 'With network mode AwsVpc': { - 'Ingress port should be the same as container port'(test: Test) { + describe('Ingress Port', () => { + describe('With network mode AwsVpc', () => { + test('Ingress port should be the same as container port', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -567,11 +568,11 @@ export = { // THEN const expected = 8080; - test.equal(actual, expected, 'Ingress port should be the same as container port'); - test.done(); - }, + expect(actual).toEqual(expected); - 'throws when calling ingressPort with no PortMappings'(test: Test) { + }); + + test('throws when calling ingressPort with no PortMappings', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -584,18 +585,18 @@ export = { }); // THEN - test.throws(() => { + expect(() => { const actual = container.ingressPort; const expected = 8080; - test.equal(actual, expected); - }, /Container MyContainer hasn't defined any ports. Call addPortMappings()./); + expect(actual).toEqual(expected); + }).toThrow(/Container MyContainer hasn't defined any ports. Call addPortMappings()./); - test.done(); - }, - }, - 'With network mode Host ': { - 'Ingress port should be the same as container port'(test: Test) { + }); + }); + + describe('With network mode Host ', () => { + test('Ingress port should be the same as container port', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -615,13 +616,13 @@ export = { // THEN const expected = 8080; - test.equal(actual, expected); - test.done(); - }, - }, + expect(actual).toEqual( expected); - 'With network mode Bridge': { - 'Ingress port should be the same as host port if supplied'(test: Test) { + }); + }); + + describe('With network mode Bridge', () => { + test('Ingress port should be the same as host port if supplied', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -642,11 +643,11 @@ export = { // THEN const expected = 8081; - test.equal(actual, expected); - test.done(); - }, + expect(actual).toEqual( expected); + + }); - 'Ingress port should be 0 if not supplied'(test: Test) { + test('Ingress port should be 0 if not supplied', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef', { @@ -666,13 +667,13 @@ export = { // THEN const expected = 0; - test.equal(actual, expected); - test.done(); - }, - }, - }, + expect(actual).toEqual(expected); + + }); + }); + }); - 'can add environment variables to the container definition'(test: Test) { + test('can add environment variables to the container definition', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -687,7 +688,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Environment: [{ @@ -696,15 +697,14 @@ export = { }], }, ], - })); + }); - test.done(); - }, + }); - 'Environment Files': { - 'with EC2 task definitions': { - 'can add asset environment file to the container definition'(test: Test) { + describe('Environment Files', () => { + describe('with EC2 task definitions', () => { + test('can add asset environment file to the container definition', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -717,7 +717,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { EnvironmentFiles: [{ @@ -763,11 +763,11 @@ export = { }], }, ], - })); + }); - test.done(); - }, - 'can add s3 bucket environment file to the container definition'(test: Test) { + + }); + test('can add s3 bucket environment file to the container definition', () => { // GIVEN const stack = new cdk.Stack(); const bucket = new s3.Bucket(stack, 'Bucket', { @@ -783,7 +783,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { EnvironmentFiles: [{ @@ -803,13 +803,13 @@ export = { }], }, ], - })); + }); - test.done(); - }, - }, - 'with Fargate task definitions': { - 'can add asset environment file to the container definition'(test: Test) { + + }); + }); + describe('with Fargate task definitions', () => { + test('can add asset environment file to the container definition', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef'); @@ -822,7 +822,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { EnvironmentFiles: [{ @@ -868,11 +868,11 @@ export = { }], }, ], - })); + }); - test.done(); - }, - 'can add s3 bucket environment file to the container definition'(test: Test) { + + }); + test('can add s3 bucket environment file to the container definition', () => { // GIVEN const stack = new cdk.Stack(); const bucket = new s3.Bucket(stack, 'Bucket', { @@ -888,7 +888,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { EnvironmentFiles: [{ @@ -908,15 +908,15 @@ export = { }], }, ], - })); + }); - test.done(); - }, - }, - }, - 'Given GPU count parameter': { - 'will add resource requirements to container definition'(test: Test) { + }); + }); + }); + + describe('Given GPU count parameter', () => { + test('will add resource requirements to container definition', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -929,7 +929,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'test', @@ -941,13 +941,13 @@ export = { ], }, ], - })); + }); - test.done(); - }, - }, - 'can add secret environment variables to the container definition'(test: Test) { + }); + }); + + test('can add secret environment variables to the container definition', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -969,7 +969,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Secrets: [ @@ -1005,9 +1005,9 @@ export = { ], }, ], - })); + }); - expect(stack).to(haveResourceLike('AWS::IAM::Policy', { + expect(stack).toHaveResourceLike('AWS::IAM::Policy', { PolicyDocument: { Statement: [ { @@ -1052,13 +1052,12 @@ export = { ], Version: '2012-10-17', }, - })); + }); - test.done(); - }, + }); - 'use a specific secret JSON key as environment variable'(test: Test) { + test('use a specific secret JSON key as environment variable', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1075,7 +1074,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Secrets: [ @@ -1096,13 +1095,12 @@ export = { ], }, ], - })); + }); - test.done(); - }, + }); - 'use a specific secret JSON field as environment variable for a Fargate task'(test: Test) { + test('use a specific secret JSON field as environment variable for a Fargate task', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.FargateTaskDefinition(stack, 'TaskDef'); @@ -1119,7 +1117,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Secrets: [ @@ -1140,12 +1138,12 @@ export = { ], }, ], - })); + }); + - test.done(); - }, + }); - 'can add AWS logging to container definition'(test: Test) { + test('can add AWS logging to container definition', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1158,7 +1156,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { LogConfiguration: { @@ -1171,9 +1169,9 @@ export = { }, }, ], - })); + }); - expect(stack).to(haveResource('AWS::IAM::Policy', { + expect(stack).toHaveResource('AWS::IAM::Policy', { PolicyDocument: { Statement: [ { @@ -1184,12 +1182,12 @@ export = { ], Version: '2012-10-17', }, - })); + }); - test.done(); - }, - 'can set Health Check with defaults'(test: Test) { + }); + + test('can set Health Check with defaults', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1205,7 +1203,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { HealthCheck: { @@ -1216,12 +1214,12 @@ export = { }, }, ], - })); + }); - test.done(); - }, - 'throws when setting Health Check with no commands'(test: Test) { + }); + + test('throws when setting Health Check with no commands', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1236,8 +1234,8 @@ export = { }); // THEN - test.throws(() => { - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(() => { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { HealthCheck: { @@ -1248,13 +1246,13 @@ export = { }, }, ], - })); - }, /At least one argument must be supplied for health check command./); + }); + }).toThrow(/At least one argument must be supplied for health check command./); - test.done(); - }, - 'can specify Health Check values in shell form'(test: Test) { + }); + + test('can specify Health Check values in shell form', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1273,7 +1271,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { HealthCheck: { @@ -1285,12 +1283,12 @@ export = { }, }, ], - })); + }); - test.done(); - }, - 'can specify Health Check values in array form starting with CMD-SHELL'(test: Test) { + }); + + test('can specify Health Check values in array form starting with CMD-SHELL', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1309,7 +1307,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { HealthCheck: { @@ -1321,12 +1319,12 @@ export = { }, }, ], - })); + }); + - test.done(); - }, + }); - 'can specify Health Check values in array form starting with CMD'(test: Test) { + test('can specify Health Check values in array form starting with CMD', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1345,7 +1343,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { HealthCheck: { @@ -1357,12 +1355,12 @@ export = { }, }, ], - })); + }); + - test.done(); - }, + }); - 'can specify private registry credentials'(test: Test) { + test('can specify private registry credentials', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1379,7 +1377,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'user-x/my-app', @@ -1388,9 +1386,9 @@ export = { }, }, ], - })); + }); - expect(stack).to(haveResourceLike('AWS::IAM::Policy', { + expect(stack).toHaveResourceLike('AWS::IAM::Policy', { PolicyDocument: { Statement: [ { @@ -1403,13 +1401,13 @@ export = { }, ], }, - })); + }); - test.done(); - }, - '_linkContainer works properly': { - 'when the props passed in is an essential container'(test: Test) { + }); + + describe('_linkContainer works properly', () => { + test('when the props passed in is an essential container', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1422,12 +1420,12 @@ export = { }); // THEN - test.equal(taskDefinition.defaultContainer, container); + expect(taskDefinition.defaultContainer).toEqual( container); + - test.done(); - }, + }); - 'when the props passed in is not an essential container'(test: Test) { + test('when the props passed in is not an essential container', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1440,14 +1438,14 @@ export = { }); // THEN - test.equal(taskDefinition.defaultContainer, undefined); + expect(taskDefinition.defaultContainer).toEqual( undefined); + - test.done(); - }, - }, + }); + }); - 'Can specify linux parameters': { - 'with only required properties set, it correctly sets default properties'(test: Test) { + describe('Can specify linux parameters', () => { + test('with only required properties set, it correctly sets default properties', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1462,7 +1460,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'test', @@ -1471,12 +1469,12 @@ export = { }, }, ], - })); + }); - test.done(); - }, - 'before calling addContainer'(test: Test) { + }); + + test('before calling addContainer', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1497,7 +1495,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'test', @@ -1511,12 +1509,12 @@ export = { }, }, ], - })); + }); - test.done(); - }, - 'after calling addContainer'(test: Test) { + }); + + test('after calling addContainer', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1539,7 +1537,7 @@ export = { linuxParameters.dropCapabilities(ecs.Capability.SETUID); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'test', @@ -1553,12 +1551,12 @@ export = { }, }, ], - })); + }); + - test.done(); - }, + }); - 'with one or more host devices'(test: Test) { + test('with one or more host devices', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1580,7 +1578,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'test', @@ -1595,12 +1593,12 @@ export = { }, }, ], - })); + }); - test.done(); - }, - 'with the tmpfs mount for a container'(test: Test) { + }); + + test('with the tmpfs mount for a container', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1623,7 +1621,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Image: 'test', @@ -1639,19 +1637,14 @@ export = { }, }, ], - })); + }); - test.done(); - }, - }, - 'can use a DockerImageAsset directly for a container image'(test: Test) { - // GIVEN - const app = new cdk.App({ - context: { - '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true, - }, }); + }); + + testFutureBehavior('can use a DockerImageAsset directly for a container image', { '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true }, cdk.App, (app) => { + // GIVEN const stack = new cdk.Stack(app, 'Stack'); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); const asset = new ecr_assets.DockerImageAsset(stack, 'MyDockerImage', { @@ -1665,7 +1658,7 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Essential: true, @@ -1678,7 +1671,7 @@ export = { { Ref: 'AWS::Region' }, '.', { Ref: 'AWS::URLSuffix' }, - '/aws-cdk/assets:b2c69bfbfe983b634456574587443159b3b7258849856a118ad3d2772238f1a5', + '/aws-cdk/assets:d3fe8de91df2c894af1e8579a7836fb42895f9d2e30c7547ebdff4010f09c6d4', ], ], }, @@ -1686,8 +1679,8 @@ export = { Name: 'default', }, ], - })); - expect(stack).to(haveResource('AWS::IAM::Policy', { + }); + expect(stack).toHaveResource('AWS::IAM::Policy', { PolicyDocument: { Statement: [ { @@ -1712,17 +1705,12 @@ export = { ], Version: '2012-10-17', }, - })); - test.done(); - }, + }); - 'docker image asset options can be used when using container image'(test: Test) { + }); + + testFutureBehavior('docker image asset options can be used when using container image', { '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true }, cdk.App, (app) => { // GIVEN - const app = new cdk.App({ - context: { - '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true, - }, - }); const stack = new cdk.Stack(app, 'MyStack'); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); @@ -1737,16 +1725,16 @@ export = { // THEN const asm = app.synth(); - test.deepEqual(asm.getStackArtifact(stack.artifactId).assets[0], { + expect(asm.getStackArtifact(stack.artifactId).assets[0]).toEqual({ repositoryName: 'aws-cdk/assets', - imageTag: 'ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', - id: 'ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', + imageTag: '9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', + id: '9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', packaging: 'container-image', - path: 'asset.ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', - sourceHash: 'ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', + path: 'asset.9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', + sourceHash: '9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', target: 'build-target', file: 'index.py', }); - test.done(); - }, -}; + + }); +}); diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/test.cross-stack.ts b/packages/@aws-cdk/aws-ecs/test/ec2/cross-stack.test.ts similarity index 97% rename from packages/@aws-cdk/aws-ecs/test/ec2/test.cross-stack.ts rename to packages/@aws-cdk/aws-ecs/test/ec2/cross-stack.test.ts index 5eb7c61a6d346..12d908957fc88 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/test.cross-stack.ts +++ b/packages/@aws-cdk/aws-ecs/test/ec2/cross-stack.test.ts @@ -2,7 +2,7 @@ import { expect, haveResource } from '@aws-cdk/assert'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2'; import { App, Stack } from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../../lib'; // Test various cross-stack Cluster/Service/ALB scenario's @@ -13,7 +13,7 @@ let stack2: Stack; let cluster: ecs.Cluster; let service: ecs.Ec2Service; -export = { +nodeunitShim({ 'setUp'(cb: () => void) { app = new App(); @@ -89,7 +89,7 @@ export = { test.done(); }, -}; +}); function expectIngress(stack: Stack) { expect(stack).to(haveResource('AWS::EC2::SecurityGroupIngress', { diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts b/packages/@aws-cdk/aws-ecs/test/ec2/ec2-service.test.ts similarity index 99% rename from packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts rename to packages/@aws-cdk/aws-ecs/test/ec2/ec2-service.test.ts index c4b2816234595..2279245aebaa4 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/ec2/ec2-service.test.ts @@ -4,12 +4,12 @@ import * as elb from '@aws-cdk/aws-elasticloadbalancing'; import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2'; import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../../lib'; import { DeploymentControllerType, LaunchType, PropagatedTagSource } from '../../lib/base/base-service'; import { PlacementConstraint, PlacementStrategy } from '../../lib/placement'; -export = { +nodeunitShim({ 'When creating an EC2 Service': { 'with only required properties set, it correctly sets default properties'(test: Test) { // GIVEN @@ -2269,4 +2269,4 @@ export = { test.done(); }, }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-task-definition.ts b/packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts similarity index 83% rename from packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-task-definition.ts rename to packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts index 9264c47e4550c..f48e6e42b52f6 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/test.ec2-task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts @@ -1,33 +1,33 @@ +import '@aws-cdk/assert/jest'; import * as path from 'path'; -import { expect, haveResource, haveResourceLike } from '@aws-cdk/assert'; import { Protocol } from '@aws-cdk/aws-ec2'; import { Repository } from '@aws-cdk/aws-ecr'; import * as iam from '@aws-cdk/aws-iam'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import * as ssm from '@aws-cdk/aws-ssm'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { testFutureBehavior } from 'cdk-build-tools/lib/feature-flag'; import * as ecs from '../../lib'; -export = { - 'When creating an ECS TaskDefinition': { - 'with only required properties set, it correctly sets default properties'(test: Test) { +describe('ec2 task definition', () => { + describe('When creating an ECS TaskDefinition', () => { + test('with only required properties set, it correctly sets default properties', () => { // GIVEN const stack = new cdk.Stack(); new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', NetworkMode: ecs.NetworkMode.BRIDGE, RequiresCompatibilities: ['EC2'], - })); + }); // test error if no container defs? - test.done(); - }, - 'with all properties set'(test: Test) { + }); + + test('with all properties set', () => { // GIVEN const stack = new cdk.Stack(); new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -55,7 +55,7 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { ExecutionRoleArn: { 'Fn::GetAtt': [ 'ExecutionRole605A040B', @@ -89,12 +89,12 @@ export = { Name: 'scratch', }, ], - })); + }); - test.done(); - }, - 'correctly sets placement constraint'(test: Test) { + }); + + test('correctly sets placement constraint', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); @@ -103,7 +103,7 @@ export = { taskDefinition.addPlacementConstraint(ecs.PlacementConstraint.memberOf('attribute:ecs.instance-type =~ t2.*')); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { PlacementConstraints: [ { Expression: 'attribute:ecs.instance-type =~ t2.*', @@ -111,12 +111,12 @@ export = { }, ], - })); + }); - test.done(); - }, - 'correctly sets network mode'(test: Test) { + }); + + test('correctly sets network mode', () => { // GIVEN const stack = new cdk.Stack(); new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -124,14 +124,14 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { NetworkMode: ecs.NetworkMode.AWS_VPC, - })); + }); + - test.done(); - }, + }); - 'correctly sets ipc mode'(test: Test) { + test('correctly sets ipc mode', () => { // GIVEN const stack = new cdk.Stack(); new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -139,14 +139,14 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { IpcMode: ecs.IpcMode.TASK, - })); + }); + - test.done(); - }, + }); - 'correctly sets pid mode'(test: Test) { + test('correctly sets pid mode', () => { // GIVEN const stack = new cdk.Stack(); new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -154,14 +154,14 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { PidMode: ecs.PidMode.HOST, - })); + }); + - test.done(); - }, + }); - 'correctly sets containers'(test: Test) { + test('correctly sets containers', () => { // GIVEN const stack = new cdk.Stack(); @@ -193,7 +193,7 @@ export = { })); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', ContainerDefinitions: [{ Essential: true, @@ -219,9 +219,9 @@ export = { }, ], }], - })); + }); - expect(stack).to(haveResource('AWS::IAM::Policy', { + expect(stack).toHaveResource('AWS::IAM::Policy', { PolicyDocument: { Version: '2012-10-17', Statement: [ @@ -232,12 +232,12 @@ export = { }, ], }, - })); + }); - test.done(); - }, - 'all container definition options defined'(test: Test) { + }); + + test('all container definition options defined', () => { // GIVEN const stack = new cdk.Stack(); @@ -287,7 +287,7 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', ContainerDefinitions: [ { @@ -434,12 +434,12 @@ export = { WorkingDirectory: 'app/', }, ], - })); + }); - test.done(); - }, - 'correctly sets containers from ECR repository using all props'(test: Test) { + }); + + test('correctly sets containers from ECR repository using all props', () => { // GIVEN const stack = new cdk.Stack(); @@ -460,16 +460,16 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECR::Repository', { + expect(stack).toHaveResource('AWS::ECR::Repository', { LifecyclePolicy: { // eslint-disable-next-line max-len LifecyclePolicyText: '{"rules":[{"rulePriority":10,"selection":{"tagStatus":"tagged","tagPrefixList":["abc"],"countType":"imageCountMoreThan","countNumber":1},"action":{"type":"expire"}}]}', RegistryId: '123456789101', }, RepositoryName: 'project-a/amazon-ecs-sample', - })); + }); - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', ContainerDefinitions: [{ Essential: true, @@ -525,12 +525,12 @@ export = { }, Name: 'web', }], - })); + }); + - test.done(); - }, + }); - 'correctly sets containers from ECR repository using default props'(test: Test) { + test('correctly sets containers from ECR repository using default props', () => { // GIVEN const stack = new cdk.Stack(); @@ -543,12 +543,12 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECR::Repository', {})); + expect(stack).toHaveResource('AWS::ECR::Repository', {}); + - test.done(); - }, + }); - 'warns when setting containers from ECR repository using fromRegistry method'(test: Test) { + test('warns when setting containers from ECR repository using fromRegistry method', () => { // GIVEN const stack = new cdk.Stack(); @@ -561,11 +561,11 @@ export = { }); // THEN - test.deepEqual(container.node.metadata[0].data, "Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'."); - test.done(); - }, + expect(container.node.metadata[0].data).toEqual("Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'."); - 'warns when setting containers from ECR repository by creating a RepositoryImage class'(test: Test) { + }); + + test('warns when setting containers from ECR repository by creating a RepositoryImage class', () => { // GIVEN const stack = new cdk.Stack(); @@ -580,18 +580,13 @@ export = { }); // THEN - test.deepEqual(container.node.metadata[0].data, "Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'."); + expect(container.node.metadata[0].data).toEqual("Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'."); + - test.done(); - }, + }); - 'correctly sets containers from asset using default props'(test: Test) { + testFutureBehavior('correctly sets containers from asset using default props', { '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true }, cdk.App, (app) => { // GIVEN - const app = new cdk.App({ - context: { - '@aws-cdk/aws-ecr-assets:dockerIgnoreSupport': true, - }, - }); const stack = new cdk.Stack(app, 'Stack'); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); @@ -603,7 +598,7 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { Family: 'StackEc2TaskDefF03698CF', ContainerDefinitions: [ { @@ -623,7 +618,7 @@ export = { { Ref: 'AWS::URLSuffix', }, - '/aws-cdk/assets:b2c69bfbfe983b634456574587443159b3b7258849856a118ad3d2772238f1a5', + '/aws-cdk/assets:d3fe8de91df2c894af1e8579a7836fb42895f9d2e30c7547ebdff4010f09c6d4', ], ], }, @@ -631,12 +626,12 @@ export = { Name: 'web', }, ], - })); + }); + - test.done(); - }, + }); - 'correctly sets containers from asset using all props'(test: Test) { + test('correctly sets containers from asset using all props', () => { // GIVEN const stack = new cdk.Stack(); @@ -649,10 +644,10 @@ export = { memoryLimitMiB: 512, }); - test.done(); - }, - 'correctly sets scratch space'(test: Test) { + }); + + test('correctly sets scratch space', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); @@ -670,7 +665,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', ContainerDefinitions: [{ MountPoints: [ @@ -687,11 +682,11 @@ export = { }, Name: 'scratch', }], - })); + }); - test.done(); - }, - 'correctly sets container dependenices'(test: Test) { + + }); + test('correctly sets container dependenices', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); @@ -721,7 +716,7 @@ export = { ); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', ContainerDefinitions: [{ Name: 'dependency1', @@ -740,11 +735,11 @@ export = { ContainerName: 'dependency2', }], }], - })); + }); + - test.done(); - }, - 'correctly sets links'(test: Test) { + }); + test('correctly sets links', () => { const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -770,7 +765,7 @@ export = { container.addLink(linkedContainer2); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [ { Links: [ @@ -786,12 +781,12 @@ export = { Name: 'linked2', }, ], - })); + }); + - test.done(); - }, + }); - 'correctly set policy statement to the task IAM role'(test: Test) { + test('correctly set policy statement to the task IAM role', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); @@ -803,7 +798,7 @@ export = { })); // THEN - expect(stack).to(haveResource('AWS::IAM::Policy', { + expect(stack).toHaveResource('AWS::IAM::Policy', { PolicyDocument: { Version: '2012-10-17', Statement: [ @@ -814,11 +809,11 @@ export = { }, ], }, - })); + }); + - test.done(); - }, - 'correctly sets volumes from'(test: Test) { + }); + test('correctly sets volumes from', () => { const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', {}); @@ -834,7 +829,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { ContainerDefinitions: [{ VolumesFrom: [ { @@ -843,12 +838,12 @@ export = { }, ], }], - })); + }); - test.done(); - }, - 'correctly set policy statement to the task execution IAM role'(test: Test) { + }); + + test('correctly set policy statement to the task execution IAM role', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); @@ -860,7 +855,7 @@ export = { })); // THEN - expect(stack).to(haveResource('AWS::IAM::Policy', { + expect(stack).toHaveResource('AWS::IAM::Policy', { PolicyDocument: { Version: '2012-10-17', Statement: [ @@ -871,12 +866,12 @@ export = { }, ], }, - })); + }); + - test.done(); - }, + }); - 'correctly sets volumes'(test: Test) { + test('correctly sets volumes', () => { // GIVEN const stack = new cdk.Stack(); const volume = { @@ -904,7 +899,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', ContainerDefinitions: [{ MountPoints: [ @@ -921,12 +916,12 @@ export = { }, Name: 'scratch', }], - })); + }); - test.done(); - }, - 'correctly sets placement constraints'(test: Test) { + }); + + test('correctly sets placement constraints', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -941,19 +936,19 @@ export = { }); // THEN - expect(stack).to(haveResource('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResource('AWS::ECS::TaskDefinition', { PlacementConstraints: [ { Expression: 'attribute:ecs.instance-type =~ t2.*', Type: 'memberOf', }, ], - })); + }); - test.done(); - }, - 'correctly sets taskRole'(test: Test) { + }); + + test('correctly sets taskRole', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef', { @@ -968,27 +963,27 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { TaskRoleArn: stack.resolve(taskDefinition.taskRole.roleArn), - })); + }); - test.done(); - }, - 'automatically sets taskRole by default'(test: Test) { + }); + + test('automatically sets taskRole by default', () => { // GIVEN const stack = new cdk.Stack(); const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'Ec2TaskDef'); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { TaskRoleArn: stack.resolve(taskDefinition.taskRole.roleArn), - })); + }); + - test.done(); - }, + }); - 'correctly sets dockerVolumeConfiguration'(test: Test) { + test('correctly sets dockerVolumeConfiguration', () => { // GIVEN const stack = new cdk.Stack(); const volume = { @@ -1012,7 +1007,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', Volumes: [{ Name: 'scratch', @@ -1024,12 +1019,12 @@ export = { }, }, }], - })); + }); + - test.done(); - }, + }); - 'correctly sets efsVolumeConfiguration'(test: Test) { + test('correctly sets efsVolumeConfiguration', () => { // GIVEN const stack = new cdk.Stack(); const volume = { @@ -1049,7 +1044,7 @@ export = { }); // THEN - expect(stack).to(haveResourceLike('AWS::ECS::TaskDefinition', { + expect(stack).toHaveResourceLike('AWS::ECS::TaskDefinition', { Family: 'Ec2TaskDef', Volumes: [{ Name: 'scratch', @@ -1057,13 +1052,13 @@ export = { FileSystemId: 'local', }, }], - })); + }); - test.done(); - }, - }, - 'throws when setting proxyConfiguration without networkMode AWS_VPC'(test: Test) { + }); + }); + + test('throws when setting proxyConfiguration without networkMode AWS_VPC', () => { // GIVEN const stack = new cdk.Stack(); @@ -1079,10 +1074,10 @@ export = { }); // THEN - test.throws(() => { + expect(() => { new ecs.Ec2TaskDefinition(stack, 'TaskDef', { networkMode: ecs.NetworkMode.BRIDGE, proxyConfiguration }); - }, /ProxyConfiguration can only be used with AwsVpc network mode, got: bridge/); + }).toThrow(/ProxyConfiguration can only be used with AwsVpc network mode, got: bridge/); + - test.done(); - }, -}; + }); +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts b/packages/@aws-cdk/aws-ecs/test/ecs-cluster.test.ts similarity index 99% rename from packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts rename to packages/@aws-cdk/aws-ecs/test/ecs-cluster.test.ts index 7741c6b5bdb9f..119e6d11a93ce 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.ecs-cluster.ts +++ b/packages/@aws-cdk/aws-ecs/test/ecs-cluster.test.ts @@ -9,10 +9,10 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as kms from '@aws-cdk/aws-kms'; import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; -export = { +nodeunitShim({ 'When creating an ECS Cluster': { 'with no properties set, it correctly sets default properties'(test: Test) { // GIVEN @@ -1731,4 +1731,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.environment-file.ts b/packages/@aws-cdk/aws-ecs/test/environment-file.test.ts similarity index 96% rename from packages/@aws-cdk/aws-ecs/test/test.environment-file.ts rename to packages/@aws-cdk/aws-ecs/test/environment-file.test.ts index a0d6fc29d3aed..e80651cbbd65b 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.environment-file.ts +++ b/packages/@aws-cdk/aws-ecs/test/environment-file.test.ts @@ -1,11 +1,11 @@ import * as path from 'path'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; /* eslint-disable dot-notation */ -export = { +nodeunitShim({ 'ecs.EnvironmentFile.fromAsset': { 'fails if asset is not a single file'(test: Test) { // GIVEN @@ -45,7 +45,7 @@ export = { test.done(); }, }, -}; +}); function defineContainerDefinition(stack: cdk.Stack, environmentFile: ecs.EnvironmentFile) { const taskDefinition = new ecs.Ec2TaskDefinition(stack, 'TaskDef'); diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-service.test.ts similarity index 99% rename from packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts rename to packages/@aws-cdk/aws-ecs/test/fargate/fargate-service.test.ts index ebb36580d19ba..acddf713d6d0a 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-service.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-service.test.ts @@ -6,11 +6,11 @@ import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import * as cloudmap from '@aws-cdk/aws-servicediscovery'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../../lib'; import { DeploymentControllerType, LaunchType } from '../../lib/base/base-service'; -export = { +nodeunitShim({ 'When creating a Fargate Service': { 'with only required properties set, it correctly sets default properties'(test: Test) { // GIVEN @@ -1935,4 +1935,4 @@ export = { test.done(); }, }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-task-definition.test.ts similarity index 97% rename from packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts rename to packages/@aws-cdk/aws-ecs/test/fargate/fargate-task-definition.test.ts index 99aeb6da886f9..00ec0028ef1a3 100644 --- a/packages/@aws-cdk/aws-ecs/test/fargate/test.fargate-task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/fargate/fargate-task-definition.test.ts @@ -1,10 +1,10 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../../lib'; -export = { +nodeunitShim({ 'When creating an Fargate TaskDefinition': { 'with only required properties set, it correctly sets default properties'(test: Test) { // GIVEN @@ -114,4 +114,4 @@ export = { test.done(); }, }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.firelens-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/firelens-log-driver.test.ts similarity index 98% rename from packages/@aws-cdk/aws-ecs/test/test.firelens-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/firelens-log-driver.test.ts index 3a1fb264d6b34..99a1c6b935b64 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.firelens-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/firelens-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -229,4 +229,4 @@ export = { test.done(); }, }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.fluentd-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/fluentd-log-driver.test.ts similarity index 97% rename from packages/@aws-cdk/aws-ecs/test/test.fluentd-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/fluentd-log-driver.test.ts index 5d451ec365683..a317699d1075d 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.fluentd-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/fluentd-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -138,4 +138,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.gelf-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/gelf-log-driver.test.ts similarity index 95% rename from packages/@aws-cdk/aws-ecs/test/test.gelf-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/gelf-log-driver.test.ts index f62941f010f59..7907b0532b0ac 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.gelf-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/gelf-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -68,4 +68,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/images/test.tag-parameter-container-image.ts b/packages/@aws-cdk/aws-ecs/test/images/tag-parameter-container-image.test.ts similarity index 91% rename from packages/@aws-cdk/aws-ecs/test/images/test.tag-parameter-container-image.ts rename to packages/@aws-cdk/aws-ecs/test/images/tag-parameter-container-image.test.ts index 2a96c471b1417..d0fe101252e26 100644 --- a/packages/@aws-cdk/aws-ecs/test/images/test.tag-parameter-container-image.ts +++ b/packages/@aws-cdk/aws-ecs/test/images/tag-parameter-container-image.test.ts @@ -1,10 +1,10 @@ import { SynthUtils } from '@aws-cdk/assert'; import * as ecr from '@aws-cdk/aws-ecr'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../../lib'; -export = { +nodeunitShim({ 'TagParameter container image': { 'throws an error when tagParameterName() is used without binding the image'(test: Test) { // GIVEN @@ -22,4 +22,4 @@ export = { test.done(); }, }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.journald-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/journald-log-driver.test.ts similarity index 96% rename from packages/@aws-cdk/aws-ecs/test/test.journald-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/journald-log-driver.test.ts index f71d796b6d380..31bec4a42e47f 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.journald-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/journald-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -86,4 +86,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.json-file-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/json-file-log-driver.test.ts similarity index 96% rename from packages/@aws-cdk/aws-ecs/test/test.json-file-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/json-file-log-driver.test.ts index c7e3f6acec377..e75ff398eeb03 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.json-file-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/json-file-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -86,4 +86,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.splunk-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/splunk-log-driver.test.ts similarity index 97% rename from packages/@aws-cdk/aws-ecs/test/test.splunk-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/splunk-log-driver.test.ts index 960f3b749f183..c8afd01daade1 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.splunk-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/splunk-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -103,4 +103,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.syslog-log-driver.ts b/packages/@aws-cdk/aws-ecs/test/syslog-log-driver.test.ts similarity index 96% rename from packages/@aws-cdk/aws-ecs/test/test.syslog-log-driver.ts rename to packages/@aws-cdk/aws-ecs/test/syslog-log-driver.test.ts index cde1a2a6b1b63..b14c05a5b3234 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.syslog-log-driver.ts +++ b/packages/@aws-cdk/aws-ecs/test/syslog-log-driver.test.ts @@ -1,13 +1,13 @@ import { expect, haveResourceLike } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; let stack: cdk.Stack; let td: ecs.TaskDefinition; const image = ecs.ContainerImage.fromRegistry('test-image'); -export = { +nodeunitShim({ 'setUp'(cb: () => void) { stack = new cdk.Stack(); td = new ecs.Ec2TaskDefinition(stack, 'TaskDefinition'); @@ -86,4 +86,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-ecs/test/test.task-definition.ts b/packages/@aws-cdk/aws-ecs/test/task-definition.test.ts similarity index 88% rename from packages/@aws-cdk/aws-ecs/test/test.task-definition.ts rename to packages/@aws-cdk/aws-ecs/test/task-definition.test.ts index 299e2f81b0651..34a7306106d66 100644 --- a/packages/@aws-cdk/aws-ecs/test/test.task-definition.ts +++ b/packages/@aws-cdk/aws-ecs/test/task-definition.test.ts @@ -1,9 +1,9 @@ import { expect, haveResource } from '@aws-cdk/assert'; import * as cdk from '@aws-cdk/core'; -import { Test } from 'nodeunit'; +import { nodeunitShim, Test } from 'nodeunit-shim'; import * as ecs from '../lib'; -export = { +nodeunitShim({ 'A task definition with both compatibilities defaults to networkmode AwsVpc'(test: Test) { // GIVEN const stack = new cdk.Stack(); @@ -22,4 +22,4 @@ export = { test.done(); }, -}; +}); diff --git a/packages/@aws-cdk/aws-eks/README.md b/packages/@aws-cdk/aws-eks/README.md index ee758461b986f..59909c9ea9a0b 100644 --- a/packages/@aws-cdk/aws-eks/README.md +++ b/packages/@aws-cdk/aws-eks/README.md @@ -466,6 +466,8 @@ const cluster = new eks.Cluster(this, 'hello-eks', { }); ``` +The default value is `eks.EndpointAccess.PUBLIC_AND_PRIVATE`. Which means the cluster endpoint is accessible from outside of your VPC, but worker node traffic and `kubectl` commands issued by this library stay within your VPC. + ### VPC Support You can specify the VPC of the cluster using the `vpc` and `vpcSubnets` properties: @@ -634,8 +636,6 @@ $ aws eks update-kubeconfig --name cluster-xxxxx --role-arn arn:aws:iam::1122334 Added new context arn:aws:eks:rrrrr:112233445566:cluster/cluster-xxxxx to /home/boom/.kube/config ``` -The default value is `eks.EndpointAccess.PUBLIC_AND_PRIVATE`. Which means the cluster endpoint is accessible from outside of your VPC, but worker node traffic and `kubectl` commands issued by this library stay within your VPC. - ### Encryption When you create an Amazon EKS cluster, envelope encryption of Kubernetes secrets using the AWS Key Management Service (AWS KMS) can be enabled. diff --git a/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts b/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts index 3a184fa153b1c..4f3647d40a432 100644 --- a/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts +++ b/packages/@aws-cdk/aws-eks/lib/kubectl-provider.ts @@ -102,6 +102,7 @@ export class KubectlProvider extends NestedStack { onEventHandler: handler, vpc: cluster.kubectlPrivateSubnets ? cluster.vpc : undefined, vpcSubnets: cluster.kubectlPrivateSubnets ? { subnets: cluster.kubectlPrivateSubnets } : undefined, + securityGroups: cluster.kubectlSecurityGroup ? [cluster.kubectlSecurityGroup] : undefined, }); this.serviceToken = provider.serviceToken; diff --git a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-handlers-vpc.expected.json b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-handlers-vpc.expected.json index e15fc8ae19bea..e7e1f394cdc7f 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-handlers-vpc.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-handlers-vpc.expected.json @@ -1179,7 +1179,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B": { "Type": "AWS::CloudFormation::Stack", @@ -1194,7 +1196,7 @@ }, "/", { - "Ref": "AssetParameters3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9S3Bucket7930790A" + "Ref": "AssetParameters93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82S3Bucket8670C328" }, "/", { @@ -1204,7 +1206,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9S3VersionKey648E56F4" + "Ref": "AssetParameters93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82S3VersionKeyCEFB3AF5" } ] } @@ -1217,7 +1219,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9S3VersionKey648E56F4" + "Ref": "AssetParameters93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82S3VersionKeyCEFB3AF5" } ] } @@ -1272,9 +1274,6 @@ "referencetoawscdkekshandlersinvpctestAssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyCE91E7FDRef": { "Ref": "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyF55A2EA9" }, - "referencetoawscdkekshandlersinvpctestEksAllHandlersInVpcStackDefaultVpcE40EA7ACRef": { - "Ref": "EksAllHandlersInVpcStackDefaultVpcBE11D4AE" - }, "referencetoawscdkekshandlersinvpctestAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3Bucket9D7E9998Ref": { "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" }, @@ -1282,7 +1281,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { @@ -1400,17 +1401,17 @@ "Type": "String", "Description": "Artifact hash for asset \"70396475d85a52e5c6ccad77894979d07433a207ea3c2668b929f3e70ffde081\"" }, - "AssetParameters3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9S3Bucket7930790A": { + "AssetParameters93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82S3Bucket8670C328": { "Type": "String", - "Description": "S3 bucket for asset \"3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9\"" + "Description": "S3 bucket for asset \"93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82\"" }, - "AssetParameters3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9S3VersionKey648E56F4": { + "AssetParameters93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82S3VersionKeyCEFB3AF5": { "Type": "String", - "Description": "S3 key for asset version \"3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9\"" + "Description": "S3 key for asset version \"93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82\"" }, - "AssetParameters3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9ArtifactHash66195F00": { + "AssetParameters93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82ArtifactHashBEC324DA": { "Type": "String", - "Description": "Artifact hash for asset \"3a065cef8968eb7f7e62ccb379c68400a56c31aceb97265d4e8f5f4620452db9\"" + "Description": "Artifact hash for asset \"93bb4c1c6bbced2c1adce602d7643d5475c6e463f4f57f4cd863e064d82a3d82\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-private-endpoint.expected.json b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-private-endpoint.expected.json index 61915b6442bd0..acbe47374bead 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-private-endpoint.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster-private-endpoint.expected.json @@ -1100,7 +1100,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B": { "Type": "AWS::CloudFormation::Stack", @@ -1115,7 +1117,7 @@ }, "/", { - "Ref": "AssetParameterseb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519S3Bucket686DCA97" + "Ref": "AssetParameters8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7cS3BucketFEA5F85E" }, "/", { @@ -1125,7 +1127,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameterseb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519S3VersionKey7EDC0140" + "Ref": "AssetParameters8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7cS3VersionKey226CF52C" } ] } @@ -1138,7 +1140,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameterseb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519S3VersionKey7EDC0140" + "Ref": "AssetParameters8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7cS3VersionKey226CF52C" } ] } @@ -1193,9 +1195,6 @@ "referencetoawscdkeksclusterprivateendpointtestAssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKey548D79B4Ref": { "Ref": "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyF55A2EA9" }, - "referencetoawscdkeksclusterprivateendpointtestVpcFCD064BFRef": { - "Ref": "Vpc8378EB38" - }, "referencetoawscdkeksclusterprivateendpointtestAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3Bucket7DDAFC04Ref": { "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" }, @@ -1203,7 +1202,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { @@ -1321,17 +1322,17 @@ "Type": "String", "Description": "Artifact hash for asset \"75667ab2bbef2c8efc57fb73bf352f345af1d471fb09cb11f5b7bc27d009b609\"" }, - "AssetParameterseb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519S3Bucket686DCA97": { + "AssetParameters8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7cS3BucketFEA5F85E": { "Type": "String", - "Description": "S3 bucket for asset \"eb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519\"" + "Description": "S3 bucket for asset \"8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7c\"" }, - "AssetParameterseb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519S3VersionKey7EDC0140": { + "AssetParameters8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7cS3VersionKey226CF52C": { "Type": "String", - "Description": "S3 key for asset version \"eb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519\"" + "Description": "S3 key for asset version \"8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7c\"" }, - "AssetParameterseb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519ArtifactHashE5817DEB": { + "AssetParameters8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7cArtifactHashA6BF0EB3": { "Type": "String", - "Description": "Artifact hash for asset \"eb49ce353c5ff251ebe2c3225fe00fb3e9a68fcd8b10207e63a36bfc6e981519\"" + "Description": "Artifact hash for asset \"8d4ffe9194a1ca97e2e9377049ddbeb3adbdaa984c8a90c08a5d8d6b328bdf7c\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json index 45306f411eb84..c157211d73f87 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.eks-cluster.expected.json @@ -3862,7 +3862,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B": { "Type": "AWS::CloudFormation::Stack", @@ -3877,7 +3879,7 @@ }, "/", { - "Ref": "AssetParameters9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabcS3BucketF9C7C3C5" + "Ref": "AssetParameterse00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3S3Bucket5829AD66" }, "/", { @@ -3887,7 +3889,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabcS3VersionKey950894D5" + "Ref": "AssetParameterse00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3S3VersionKey44FDB4A8" } ] } @@ -3900,7 +3902,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabcS3VersionKey950894D5" + "Ref": "AssetParameterse00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3S3VersionKey44FDB4A8" } ] } @@ -3955,9 +3957,6 @@ "referencetoawscdkeksclustertestAssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKey1CADE360Ref": { "Ref": "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyF55A2EA9" }, - "referencetoawscdkeksclustertestVpc9A302ADDRef": { - "Ref": "Vpc8378EB38" - }, "referencetoawscdkeksclustertestAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3Bucket0815E7B5Ref": { "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" }, @@ -3965,7 +3964,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "LaunchTemplate": { "Type": "AWS::EC2::LaunchTemplate", @@ -4709,17 +4710,17 @@ "Type": "String", "Description": "Artifact hash for asset \"264acf17cbf0c643f47bec1f4dbaed805e3bd1bad3f018c093d16fb936227daa\"" }, - "AssetParameters9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabcS3BucketF9C7C3C5": { + "AssetParameterse00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3S3Bucket5829AD66": { "Type": "String", - "Description": "S3 bucket for asset \"9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabc\"" + "Description": "S3 bucket for asset \"e00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3\"" }, - "AssetParameters9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabcS3VersionKey950894D5": { + "AssetParameterse00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3S3VersionKey44FDB4A8": { "Type": "String", - "Description": "S3 key for asset version \"9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabc\"" + "Description": "S3 key for asset version \"e00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3\"" }, - "AssetParameters9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabcArtifactHash5984E3CE": { + "AssetParameterse00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3ArtifactHashB6A3908A": { "Type": "String", - "Description": "Artifact hash for asset \"9f954a0baf5cb008231906c33569617ace43f4b2c804d16d0d4bae15fe9dfabc\"" + "Description": "Artifact hash for asset \"e00474136b86298d67c0ad626f1dafe622c51168233097531c5ba6791d43aba3\"" }, "SsmParameterValueawsserviceeksoptimizedami119amazonlinux2recommendedimageidC96584B6F00A464EAD1953AFF4B05118Parameter": { "Type": "AWS::SSM::Parameter::Value", @@ -4738,4 +4739,4 @@ "Default": "/aws/service/eks/optimized-ami/1.19/amazon-linux-2-gpu/recommended/image_id" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-eks/test/integ.fargate-cluster.expected.json b/packages/@aws-cdk/aws-eks/test/integ.fargate-cluster.expected.json index bae69481f9ded..441cac51ffd69 100644 --- a/packages/@aws-cdk/aws-eks/test/integ.fargate-cluster.expected.json +++ b/packages/@aws-cdk/aws-eks/test/integ.fargate-cluster.expected.json @@ -1177,7 +1177,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B": { "Type": "AWS::CloudFormation::Stack", @@ -1192,7 +1194,7 @@ }, "/", { - "Ref": "AssetParameters37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13S3BucketDCD73A4E" + "Ref": "AssetParametersedcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23S3Bucket586F6135" }, "/", { @@ -1202,7 +1204,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13S3VersionKey796F5C1B" + "Ref": "AssetParametersedcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23S3VersionKey6EFBFC1D" } ] } @@ -1215,7 +1217,7 @@ "Fn::Split": [ "||", { - "Ref": "AssetParameters37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13S3VersionKey796F5C1B" + "Ref": "AssetParametersedcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23S3VersionKey6EFBFC1D" } ] } @@ -1270,9 +1272,6 @@ "referencetoawscdkeksfargateclustertestAssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyFE6D1F78Ref": { "Ref": "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyF55A2EA9" }, - "referencetoawscdkeksfargateclustertestFargateClusterDefaultVpcBD3C976FRef": { - "Ref": "FargateClusterDefaultVpcE69D3A13" - }, "referencetoawscdkeksfargateclustertestAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3Bucket8EEF0922Ref": { "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" }, @@ -1280,7 +1279,9 @@ "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" } } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { @@ -1398,17 +1399,17 @@ "Type": "String", "Description": "Artifact hash for asset \"3d252d05ccf0ae2934dd20707e8a709b466b2b8ea00c04ee8735667f90b17ac1\"" }, - "AssetParameters37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13S3BucketDCD73A4E": { + "AssetParametersedcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23S3Bucket586F6135": { "Type": "String", - "Description": "S3 bucket for asset \"37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13\"" + "Description": "S3 bucket for asset \"edcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23\"" }, - "AssetParameters37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13S3VersionKey796F5C1B": { + "AssetParametersedcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23S3VersionKey6EFBFC1D": { "Type": "String", - "Description": "S3 key for asset version \"37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13\"" + "Description": "S3 key for asset version \"edcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23\"" }, - "AssetParameters37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13ArtifactHash8F2277C1": { + "AssetParametersedcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23ArtifactHashB34EB8FE": { "Type": "String", - "Description": "Artifact hash for asset \"37d93b8a35af568f83ecce5e05c6f06adaa06c68b84dfad9c3d82f57cd54ff13\"" + "Description": "Artifact hash for asset \"edcd50bb250cf7cf664a737720e623ad66ada9b9e609205686c476e516cf2f23\"" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-eks/test/test.cluster.ts b/packages/@aws-cdk/aws-eks/test/test.cluster.ts index b0d042a266a77..4318a714e4ddb 100644 --- a/packages/@aws-cdk/aws-eks/test/test.cluster.ts +++ b/packages/@aws-cdk/aws-eks/test/test.cluster.ts @@ -2083,6 +2083,27 @@ export = { }, + 'kubectl provider passes security group to provider'(test: Test) { + + const { stack } = testFixture(); + + new eks.Cluster(stack, 'Cluster1', { + version: CLUSTER_VERSION, + prune: false, + endpointAccess: eks.EndpointAccess.PRIVATE, + kubectlEnvironment: { + Foo: 'Bar', + }, + }); + + // the kubectl provider is inside a nested stack. + const nested = stack.node.tryFindChild('@aws-cdk/aws-eks.KubectlProvider') as cdk.NestedStack; + test.deepEqual(expect(nested).value.Resources.ProviderframeworkonEvent83C1D0A7.Properties.VpcConfig.SecurityGroupIds, + [{ Ref: 'referencetoStackCluster18DFEAC17ClusterSecurityGroupId' }]); + + test.done(); + }, + 'kubectl provider passes environment to lambda'(test: Test) { const { stack } = testFixture(); diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/test/integ.cognito.lit.expected.json b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/test/integ.cognito.lit.expected.json index 7aeccb623d6dd..206ab8458383d 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/test/integ.cognito.lit.expected.json +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2-actions/test/integ.cognito.lit.expected.json @@ -450,22 +450,28 @@ "LoadBalancerArn": { "Ref": "LB8A12904C" }, - "Port": 443, - "Protocol": "HTTPS", "Certificates": [ { "CertificateArn": "" } - ] + ], + "Port": 443, + "Protocol": "HTTPS" } }, "UserPool6BA7E5F2": { "Type": "AWS::Cognito::UserPool", "Properties": { - "AccountRecoverySetting": { + "AccountRecoverySetting": { "RecoveryMechanisms": [ - { "Name": "verified_phone_number", "Priority": 1 }, - { "Name": "verified_email", "Priority": 2 } + { + "Name": "verified_phone_number", + "Priority": 1 + }, + { + "Name": "verified_email", + "Priority": 2 + } ] }, "AdminCreateUserConfig": { @@ -480,7 +486,9 @@ "EmailSubject": "Verify your new account", "SmsMessage": "The verification code to your new account is {####}" } - } + }, + "UpdateReplacePolicy": "Retain", + "DeletionPolicy": "Retain" }, "Client4A7F64DF": { "Type": "AWS::Cognito::UserPoolClient", @@ -544,4 +552,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts index 28728e6cdf58f..905ea5360f139 100644 --- a/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts +++ b/packages/@aws-cdk/aws-elasticsearch/lib/domain.ts @@ -569,6 +569,13 @@ export interface DomainProps { */ readonly enableVersionUpgrade?: boolean; + /** + * Policy to apply when the domain is removed from the stack + * + * @default RemovalPolicy.RETAIN + */ + readonly removalPolicy?: cdk.RemovalPolicy; + /** * To configure a custom domain configure these options * @@ -1663,6 +1670,7 @@ export class Domain extends DomainBase implements IDomain { } : undefined, }); + this.domain.applyRemovalPolicy(props.removalPolicy); if (props.enableVersionUpgrade) { this.domain.cfnOptions.updatePolicy = { diff --git a/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts b/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts index 98a6f350d6f34..afd5bf6b45430 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/domain.test.ts @@ -30,6 +30,16 @@ const readWriteActions = [ ...writeActions, ]; +test('default removalpolicy is retain', () => { + new Domain(stack, 'Domain', { + version: ElasticsearchVersion.V7_1, + }); + + expect(stack).toHaveResource('AWS::Elasticsearch::Domain', { + DeletionPolicy: 'Retain', + }, assert.ResourcePart.CompleteDefinition); +}); + test('grants kms permissions if needed', () => { const key = new kms.Key(stack, 'Key'); diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json index dac2d95d68b54..84333cb6005d7 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.expected.json @@ -44,7 +44,9 @@ "NodeToNodeEncryptionOptions": { "Enabled": true } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.ts b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.ts index 5baf8f4e1b99d..828a5c9fe75e7 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.advancedsecurity.ts @@ -1,5 +1,5 @@ import { User } from '@aws-cdk/aws-iam'; -import { App, Stack, StackProps } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack, StackProps } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as es from '../lib'; @@ -10,6 +10,7 @@ class TestStack extends Stack { const user = new User(this, 'User'); new es.Domain(this, 'Domain', { + removalPolicy: RemovalPolicy.DESTROY, version: es.ElasticsearchVersion.V7_1, fineGrainedAccessControl: { masterUserArn: user.userArn, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json index 1da03e98c1984..309d8c2831e8d 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.expected.json @@ -221,7 +221,9 @@ "DependsOn": [ "DomainESLogGroupPolicyc82ca7bfe2f2589b859ebab89e88da2efd284adfadCustomResourcePolicy0B41F6DF", "DomainESLogGroupPolicyc82ca7bfe2f2589b859ebab89e88da2efd284adfadA70E756D" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DomainESAccessPolicyCustomResourcePolicy9747FC42": { "Type": "AWS::IAM::Policy", @@ -420,13 +422,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.ts b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.ts index 57152d5c70d5c..24bb07e4660ff 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.custom-kms-key.ts @@ -1,7 +1,7 @@ import { EbsDeviceVolumeType } from '@aws-cdk/aws-ec2'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; -import { App, Stack, StackProps } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack, StackProps } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as es from '../lib'; @@ -12,6 +12,7 @@ class TestStack extends Stack { const key = new kms.Key(this, 'Key'); const domainProps: es.DomainProps = { + removalPolicy: RemovalPolicy.DESTROY, version: es.ElasticsearchVersion.V7_1, ebs: { volumeSize: 10, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json index e43b6bb5f62e6..e510eb3534625 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.expected.json @@ -183,7 +183,9 @@ "DependsOn": [ "Domain1ESLogGroupPolicyc8858d5dba055f677469d76cb6ad538fd732ba69a6CustomResourcePolicy24436E05", "Domain1ESLogGroupPolicyc8858d5dba055f677469d76cb6ad538fd732ba69a6D8BDCF36" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "Domain1ESAccessPolicyCustomResourcePolicyC04432B6": { "Type": "AWS::IAM::Policy", @@ -352,13 +354,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, @@ -549,7 +551,9 @@ "DependsOn": [ "Domain2ESLogGroupPolicyc8405238e455eeabd840cf6933e1814efc51d2de71CustomResourcePolicy77691A33", "Domain2ESLogGroupPolicyc8405238e455eeabd840cf6933e1814efc51d2de71F1DE93A1" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "Domain2ESAccessPolicyCustomResourcePolicy8EED1F24": { "Type": "AWS::IAM::Policy", diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ts b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ts index 4a6232d3ab130..448896e321957 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ts @@ -1,6 +1,6 @@ import { EbsDeviceVolumeType } from '@aws-cdk/aws-ec2'; import * as iam from '@aws-cdk/aws-iam'; -import { App, Stack, StackProps } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack, StackProps } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as es from '../lib'; @@ -9,6 +9,7 @@ class TestStack extends Stack { super(scope, id, props); const domainProps: es.DomainProps = { + removalPolicy: RemovalPolicy.DESTROY, version: es.ElasticsearchVersion.V7_1, ebs: { volumeSize: 10, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.expected.json index c24aeb2f30740..702d302029600 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.expected.json @@ -34,7 +34,9 @@ "NodeToNodeEncryptionOptions": { "Enabled": false } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.ts b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.ts index 259f43fe0cef2..c7c581252fc7e 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.ultrawarm.ts @@ -1,4 +1,4 @@ -import { App, Stack, StackProps } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack, StackProps } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as es from '../lib'; @@ -7,6 +7,7 @@ class TestStack extends Stack { super(scope, id, props); new es.Domain(this, 'Domain', { + removalPolicy: RemovalPolicy.DESTROY, version: es.ElasticsearchVersion.V7_1, capacity: { masterNodes: 2, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json index b55ac9e14df69..065e569573421 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.expected.json @@ -58,7 +58,9 @@ "NodeToNodeEncryptionOptions": { "Enabled": true } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DomainESAccessPolicyCustomResourcePolicy9747FC42": { "Type": "AWS::IAM::Policy", @@ -255,13 +257,13 @@ ] } }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "AWS679f53fac002430cb0da5b7982bd2287ServiceRoleC1EA0FF2", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs12.x", "Timeout": 120 }, diff --git a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.ts b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.ts index 8844e5937305c..5e7fb2787972d 100644 --- a/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.ts +++ b/packages/@aws-cdk/aws-elasticsearch/test/integ.elasticsearch.unsignedbasicauth.ts @@ -1,4 +1,4 @@ -import { App, Stack, StackProps } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack, StackProps } from '@aws-cdk/core'; import { Construct } from 'constructs'; import * as es from '../lib'; @@ -7,6 +7,7 @@ class TestStack extends Stack { super(scope, id, props); new es.Domain(this, 'Domain', { + removalPolicy: RemovalPolicy.DESTROY, version: es.ElasticsearchVersion.V7_1, useUnsignedBasicAuth: true, }); diff --git a/packages/@aws-cdk/aws-events-targets/test/codebuild/integ.project-events.expected.json b/packages/@aws-cdk/aws-events-targets/test/codebuild/integ.project-events.expected.json index c9efaffc51134..007503de08383 100644 --- a/packages/@aws-cdk/aws-events-targets/test/codebuild/integ.project-events.expected.json +++ b/packages/@aws-cdk/aws-events-targets/test/codebuild/integ.project-events.expected.json @@ -340,7 +340,9 @@ } }, "MyQueueE6CA6235": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "MyQueuePolicy6BBEDDAC": { "Type": "AWS::SQS::QueuePolicy", @@ -422,4 +424,4 @@ } } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-events-targets/test/sns/integ.sns-event-rule-target.expected.json b/packages/@aws-cdk/aws-events-targets/test/sns/integ.sns-event-rule-target.expected.json index f4aea52c23274..37a78f010d792 100644 --- a/packages/@aws-cdk/aws-events-targets/test/sns/integ.sns-event-rule-target.expected.json +++ b/packages/@aws-cdk/aws-events-targets/test/sns/integ.sns-event-rule-target.expected.json @@ -45,7 +45,9 @@ } }, "MyQueueE6CA6235": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "MyQueuePolicy6BBEDDAC": { "Type": "AWS::SQS::QueuePolicy", diff --git a/packages/@aws-cdk/aws-events-targets/test/sqs/integ.sqs-event-rule-target.expected.json b/packages/@aws-cdk/aws-events-targets/test/sqs/integ.sqs-event-rule-target.expected.json index 645845bc1f44b..eebbc3a996344 100644 --- a/packages/@aws-cdk/aws-events-targets/test/sqs/integ.sqs-event-rule-target.expected.json +++ b/packages/@aws-cdk/aws-events-targets/test/sqs/integ.sqs-event-rule-target.expected.json @@ -19,7 +19,9 @@ } }, "MyQueueE6CA6235": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "MyQueuePolicy6BBEDDAC": { "Type": "AWS::SQS::QueuePolicy", diff --git a/packages/@aws-cdk/aws-fsx/lib/file-system.ts b/packages/@aws-cdk/aws-fsx/lib/file-system.ts index 22b4f64d8cd3b..d19c0e7686151 100644 --- a/packages/@aws-cdk/aws-fsx/lib/file-system.ts +++ b/packages/@aws-cdk/aws-fsx/lib/file-system.ts @@ -1,6 +1,6 @@ import { Connections, IConnectable, ISecurityGroup, IVpc } from '@aws-cdk/aws-ec2'; import { IKey } from '@aws-cdk/aws-kms'; -import { Resource } from '@aws-cdk/core'; +import { RemovalPolicy, Resource } from '@aws-cdk/core'; /** * Interface to implement FSx File Systems. @@ -52,6 +52,13 @@ export interface FileSystemProps { * For SCRATCH_2 and PERSISTENT_1 types, valid values are 1,200, 2,400, then continuing in increments of 2,400 GiB. */ readonly storageCapacityGiB: number; + + /** + * Policy to apply when the file system is removed from the stack + * + * @default RemovalPolicy.RETAIN + */ + readonly removalPolicy?: RemovalPolicy; } /** diff --git a/packages/@aws-cdk/aws-fsx/lib/lustre-file-system.ts b/packages/@aws-cdk/aws-fsx/lib/lustre-file-system.ts index 9d27da5bca3cd..2206bb31dfad3 100644 --- a/packages/@aws-cdk/aws-fsx/lib/lustre-file-system.ts +++ b/packages/@aws-cdk/aws-fsx/lib/lustre-file-system.ts @@ -198,6 +198,7 @@ export class LustreFileSystem extends FileSystemBase { securityGroupIds: [securityGroup.securityGroupId], storageCapacity: props.storageCapacityGiB, }); + this.fileSystem.applyRemovalPolicy(props.removalPolicy); this.fileSystemId = this.fileSystem.ref; this.dnsName = `${this.fileSystemId}.fsx.${this.stack.region}.${Aws.URL_SUFFIX}`; diff --git a/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.expected.json b/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.expected.json index 0164e2f1f0067..c5826b996a6bf 100644 --- a/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.expected.json +++ b/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.expected.json @@ -593,7 +593,9 @@ } ], "StorageCapacity": 1200 - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "instInstanceSecurityGroup54790689": { "Type": "AWS::EC2::SecurityGroup", diff --git a/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.ts b/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.ts index 00b32cea3b297..5202df62b2d08 100644 --- a/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.ts +++ b/packages/@aws-cdk/aws-fsx/test/integ.lustre-file-system.ts @@ -1,5 +1,5 @@ import { AmazonLinuxGeneration, AmazonLinuxImage, Instance, InstanceClass, InstanceSize, InstanceType, SubnetType, Vpc } from '@aws-cdk/aws-ec2'; -import { App, Stack } from '@aws-cdk/core'; +import { App, RemovalPolicy, Stack } from '@aws-cdk/core'; import { LustreDeploymentType, LustreFileSystem } from '../lib'; const app = new App(); @@ -17,6 +17,7 @@ const fs = new LustreFileSystem(stack, 'FsxLustreFileSystem', { storageCapacityGiB: storageCapacity, vpc, vpcSubnet: vpc.privateSubnets[0], + removalPolicy: RemovalPolicy.DESTROY, }); const inst = new Instance(stack, 'inst', { diff --git a/packages/@aws-cdk/aws-fsx/test/lustre-file-system.test.ts b/packages/@aws-cdk/aws-fsx/test/lustre-file-system.test.ts index 43541cd858fce..fe0159a212140 100644 --- a/packages/@aws-cdk/aws-fsx/test/lustre-file-system.test.ts +++ b/packages/@aws-cdk/aws-fsx/test/lustre-file-system.test.ts @@ -1,5 +1,5 @@ import { strictEqual } from 'assert'; -import { expect as expectCDK, haveResource } from '@aws-cdk/assert'; +import { expect as expectCDK, haveResource, ResourcePart } from '@aws-cdk/assert'; import { ISubnet, Port, SecurityGroup, Subnet, Vpc } from '@aws-cdk/aws-ec2'; import { Key } from '@aws-cdk/aws-kms'; import { Aws, Stack, Token } from '@aws-cdk/core'; @@ -40,6 +40,10 @@ describe('FSx for Lustre File System', () => { strictEqual( fileSystem.dnsName, `${fileSystem.fileSystemId}.fsx.${stack.region}.${Aws.URL_SUFFIX}`); + + expectCDK(stack).to(haveResource('AWS::FSx::FileSystem', { + DeletionPolicy: 'Retain', + }, ResourcePart.CompleteDefinition)); }); test('file system is created correctly when security group is provided', () => { diff --git a/packages/@aws-cdk/aws-kms/lib/key.ts b/packages/@aws-cdk/aws-kms/lib/key.ts index b63830370c471..b556e1aaa5f19 100644 --- a/packages/@aws-cdk/aws-kms/lib/key.ts +++ b/packages/@aws-cdk/aws-kms/lib/key.ts @@ -285,7 +285,7 @@ export interface KeyProps { /** * Custom policy document to attach to the KMS key. * - * NOTE - If the '@aws-cdk/aws-kms:defaultKeyPolicies' feature flag is set (the default for new projects), + * NOTE - If the `@aws-cdk/aws-kms:defaultKeyPolicies` feature flag is set (the default for new projects), * this policy will *override* the default key policy and become the only key policy for the key. If the * feature flag is not set, this policy will be appended to the default key policy. * @@ -322,12 +322,12 @@ export interface KeyProps { * to how it works for other AWS resources). This matches the default behavior * when creating KMS keys via the API or console. * - * If the '@aws-cdk/aws-kms:defaultKeyPolicies' feature flag is set (the default for new projects), + * If the `@aws-cdk/aws-kms:defaultKeyPolicies` feature flag is set (the default for new projects), * this flag will always be treated as 'true' and does not need to be explicitly set. * - * @default - false, unless the '@aws-cdk/aws-kms:defaultKeyPolicies' feature flag is set. + * @default - false, unless the `@aws-cdk/aws-kms:defaultKeyPolicies` feature flag is set. * @see https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam - * @deprecated redundant with the '@aws-cdk/aws-kms:defaultKeyPolicies' feature flag + * @deprecated redundant with the `@aws-cdk/aws-kms:defaultKeyPolicies` feature flag */ readonly trustAccountIdentities?: boolean; @@ -471,7 +471,7 @@ export class Key extends KeyBase { * Grants the account admin privileges -- not full account access -- plus the GenerateDataKey action. * The GenerateDataKey action was added for interop with S3 in https://github.com/aws/aws-cdk/issues/3458. * - * This policy is discouraged and deprecated by the '@aws-cdk/aws-kms:defaultKeyPolicies' feature flag. + * This policy is discouraged and deprecated by the `@aws-cdk/aws-kms:defaultKeyPolicies` feature flag. * * @link https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default * @deprecated diff --git a/packages/@aws-cdk/aws-lambda-destinations/test/integ.destinations.expected.json b/packages/@aws-cdk/aws-lambda-destinations/test/integ.destinations.expected.json index c9c1d8cd64563..510fe8cef21a8 100644 --- a/packages/@aws-cdk/aws-lambda-destinations/test/integ.destinations.expected.json +++ b/packages/@aws-cdk/aws-lambda-destinations/test/integ.destinations.expected.json @@ -4,7 +4,9 @@ "Type": "AWS::SNS::Topic" }, "Queue4A7E3555": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "SnsSqsServiceRole869866F7": { "Type": "AWS::IAM::Role", @@ -80,13 +82,13 @@ "Code": { "ZipFile": "exports.handler = async (event) => {\n if (event === 'OK') return 'success';\n throw new Error('failure');\n };" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "SnsSqsServiceRole869866F7", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ @@ -165,13 +167,13 @@ "Code": { "ZipFile": "exports.handler = async (event) => {\n console.log(event);\n };" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "OnSuccesServiceRole75E399CF", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ @@ -246,13 +248,13 @@ "Code": { "ZipFile": "exports.handler = async (event) => {\n if (event === 'OK') return 'success';\n throw new Error('failure');\n };" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "EventBusLambdaServiceRole9BC8901F", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ diff --git a/packages/@aws-cdk/aws-lambda-event-sources/test/integ.kinesiswithdlq.expected.json b/packages/@aws-cdk/aws-lambda-event-sources/test/integ.kinesiswithdlq.expected.json index 0e57bd7dc85d1..4d0a6c1a54707 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/test/integ.kinesiswithdlq.expected.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/test/integ.kinesiswithdlq.expected.json @@ -93,13 +93,13 @@ "Code": { "ZipFile": "exports.handler = async function handler(event) {\n // eslint-disable-next-line no-console\n console.log('event:', JSON.stringify(event, undefined, 2));\n throw new Error();\n}" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "FServiceRole3AC82EE1", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ @@ -110,12 +110,6 @@ "FKinesisEventSourcelambdaeventsourcekinesiswithdlqSD357FCB87EEA8CB4": { "Type": "AWS::Lambda::EventSourceMapping", "Properties": { - "EventSourceArn": { - "Fn::GetAtt": [ - "S509448A1", - "Arn" - ] - }, "FunctionName": { "Ref": "FC4345940" }, @@ -130,6 +124,12 @@ } } }, + "EventSourceArn": { + "Fn::GetAtt": [ + "S509448A1", + "Arn" + ] + }, "MaximumRetryAttempts": 0, "StartingPosition": "TRIM_HORIZON" } @@ -154,7 +154,9 @@ } }, "Q63C6E3AB": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } }, "Outputs": { diff --git a/packages/@aws-cdk/aws-lambda-event-sources/test/integ.sqs.expected.json b/packages/@aws-cdk/aws-lambda-event-sources/test/integ.sqs.expected.json index e0bc8e07fece0..9f5565aff21d6 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/test/integ.sqs.expected.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/test/integ.sqs.expected.json @@ -69,13 +69,13 @@ "Code": { "ZipFile": "exports.handler = async function handler(event) {\n console.log('event:', JSON.stringify(event, undefined, 2));\n return { event };\n}" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "FServiceRole3AC82EE1", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ @@ -86,20 +86,22 @@ "FSqsEventSourcelambdaeventsourcesqsQ67DE9201754EC819": { "Type": "AWS::Lambda::EventSourceMapping", "Properties": { + "FunctionName": { + "Ref": "FC4345940" + }, + "BatchSize": 5, "EventSourceArn": { "Fn::GetAtt": [ "Q63C6E3AB", "Arn" ] - }, - "FunctionName": { - "Ref": "FC4345940" - }, - "BatchSize": 5 + } } }, "Q63C6E3AB": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-lambda-nodejs/README.md b/packages/@aws-cdk/aws-lambda-nodejs/README.md index bfaa99eb0b243..f35062120fb9d 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/README.md +++ b/packages/@aws-cdk/aws-lambda-nodejs/README.md @@ -162,13 +162,17 @@ It is possible to run additional commands by specifying the `commandHooks` prop: ```ts new lambda.NodejsFunction(this, 'my-handler-with-commands', { - commandHooks: { - // Copy a file so that it will be included in the bundled asset - afterBundling(inputDir: string, outputDir: string): string[] { - return [`cp ${inputDir}/my-binary.node ${outputDir}`]; + bundling: { + commandHooks: { + // Copy a file so that it will be included in the bundled asset + afterBundling(inputDir: string, outputDir: string): string[] { + return [`cp ${inputDir}/my-binary.node ${outputDir}`]; + } + // ... } // ... } + }); ``` diff --git a/packages/@aws-cdk/aws-lambda-nodejs/package.json b/packages/@aws-cdk/aws-lambda-nodejs/package.json index 80692a578bb9b..7c137c69bd494 100644 --- a/packages/@aws-cdk/aws-lambda-nodejs/package.json +++ b/packages/@aws-cdk/aws-lambda-nodejs/package.json @@ -68,7 +68,7 @@ "cdk-build-tools": "0.0.0", "cdk-integ-tools": "0.0.0", "delay": "5.0.0", - "esbuild": "^0.8.49", + "esbuild": "^0.8.50", "pkglint": "0.0.0" }, "dependencies": { diff --git a/packages/@aws-cdk/aws-rds/lib/cluster.ts b/packages/@aws-cdk/aws-rds/lib/cluster.ts index e0f2618a2fdf2..a3f06555afdb9 100644 --- a/packages/@aws-cdk/aws-rds/lib/cluster.ts +++ b/packages/@aws-cdk/aws-rds/lib/cluster.ts @@ -10,7 +10,7 @@ import { IClusterEngine } from './cluster-engine'; import { DatabaseClusterAttributes, IDatabaseCluster } from './cluster-ref'; import { Endpoint } from './endpoint'; import { IParameterGroup } from './parameter-group'; -import { applyRemovalPolicy, DEFAULT_PASSWORD_EXCLUDE_CHARS, defaultDeletionProtection, renderCredentials, setupS3ImportExport } from './private/util'; +import { DEFAULT_PASSWORD_EXCLUDE_CHARS, defaultDeletionProtection, renderCredentials, setupS3ImportExport, helperRemovalPolicy, renderUnless } from './private/util'; import { BackupProps, Credentials, InstanceProps, PerformanceInsightRetention, RotationSingleUserOptions, RotationMultiUserOptions } from './props'; import { DatabaseProxy, DatabaseProxyOptions, ProxyTarget } from './proxy'; import { CfnDBCluster, CfnDBClusterProps, CfnDBInstance } from './rds.generated'; @@ -310,7 +310,7 @@ abstract class DatabaseClusterNew extends DatabaseClusterBase { description: `Subnets for ${id} database`, vpc: props.instanceProps.vpc, vpcSubnets: props.instanceProps.vpcSubnets, - removalPolicy: props.removalPolicy === RemovalPolicy.RETAIN ? props.removalPolicy : undefined, + removalPolicy: renderUnless(helperRemovalPolicy(props.removalPolicy), RemovalPolicy.DESTROY), }); this.securityGroups = props.instanceProps.securityGroups ?? [ @@ -512,7 +512,7 @@ export class DatabaseCluster extends DatabaseClusterNew { defaultPort: ec2.Port.tcp(this.clusterEndpoint.port), }); - applyRemovalPolicy(cluster, props.removalPolicy); + cluster.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.SNAPSHOT); if (secret) { this.secret = secret.attach(this); @@ -608,7 +608,7 @@ export class DatabaseClusterFromSnapshot extends DatabaseClusterNew { defaultPort: ec2.Port.tcp(this.clusterEndpoint.port), }); - applyRemovalPolicy(cluster, props.removalPolicy); + cluster.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.SNAPSHOT); setLogRetention(this, props); createInstances(this, props, this.subnetGroup); @@ -712,13 +712,11 @@ function createInstances(cluster: DatabaseClusterNew, props: DatabaseClusterBase deleteAutomatedBackups: props.instanceProps.deleteAutomatedBackups, }); - // If removalPolicy isn't explicitly set, - // it's Snapshot for Cluster. - // Because of that, in this case, - // we can safely use the CFN default of Delete for DbInstances with dbClusterIdentifier set. - if (props.removalPolicy) { - applyRemovalPolicy(instance, props.removalPolicy); - } + // For instances that are part of a cluster: + // + // Cluster DESTROY or SNAPSHOT -> DESTROY (snapshot is good enough to recreate) + // Cluster RETAIN -> RETAIN (otherwise cluster state will disappear) + instance.applyRemovalPolicy(helperRemovalPolicy(props.removalPolicy)); // We must have a dependency on the NAT gateway provider here to create // things in the right order. diff --git a/packages/@aws-cdk/aws-rds/lib/instance.ts b/packages/@aws-cdk/aws-rds/lib/instance.ts index cb4c3d3487a8c..f6bbe5481a112 100644 --- a/packages/@aws-cdk/aws-rds/lib/instance.ts +++ b/packages/@aws-cdk/aws-rds/lib/instance.ts @@ -12,7 +12,7 @@ import { Endpoint } from './endpoint'; import { IInstanceEngine } from './instance-engine'; import { IOptionGroup } from './option-group'; import { IParameterGroup } from './parameter-group'; -import { applyRemovalPolicy, DEFAULT_PASSWORD_EXCLUDE_CHARS, defaultDeletionProtection, engineDescription, renderCredentials, setupS3ImportExport } from './private/util'; +import { DEFAULT_PASSWORD_EXCLUDE_CHARS, defaultDeletionProtection, engineDescription, renderCredentials, setupS3ImportExport, helperRemovalPolicy, renderUnless } from './private/util'; import { Credentials, PerformanceInsightRetention, RotationMultiUserOptions, RotationSingleUserOptions, SnapshotCredentials } from './props'; import { DatabaseProxy, DatabaseProxyOptions, ProxyTarget } from './proxy'; import { CfnDBInstance, CfnDBInstanceProps } from './rds.generated'; @@ -642,7 +642,7 @@ abstract class DatabaseInstanceNew extends DatabaseInstanceBase implements IData description: `Subnet group for ${this.node.id} database`, vpc: this.vpc, vpcSubnets: this.vpcPlacement, - removalPolicy: props.removalPolicy === RemovalPolicy.RETAIN ? props.removalPolicy : undefined, + removalPolicy: renderUnless(helperRemovalPolicy(props.removalPolicy), RemovalPolicy.DESTROY), }); const securityGroups = props.securityGroups || [new ec2.SecurityGroup(this, 'SecurityGroup', { @@ -976,7 +976,7 @@ export class DatabaseInstance extends DatabaseInstanceSource implements IDatabas const portAttribute = Token.asNumber(instance.attrEndpointPort); this.instanceEndpoint = new Endpoint(instance.attrEndpointAddress, portAttribute); - applyRemovalPolicy(instance, props.removalPolicy); + instance.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.SNAPSHOT); if (secret) { this.secret = secret.attach(this); @@ -1052,7 +1052,7 @@ export class DatabaseInstanceFromSnapshot extends DatabaseInstanceSource impleme const portAttribute = Token.asNumber(instance.attrEndpointPort); this.instanceEndpoint = new Endpoint(instance.attrEndpointAddress, portAttribute); - applyRemovalPolicy(instance, props.removalPolicy); + instance.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.SNAPSHOT); if (secret) { this.secret = secret.attach(this); @@ -1128,7 +1128,7 @@ export class DatabaseInstanceReadReplica extends DatabaseInstanceNew implements const portAttribute = Token.asNumber(instance.attrEndpointPort); this.instanceEndpoint = new Endpoint(instance.attrEndpointAddress, portAttribute); - applyRemovalPolicy(instance, props.removalPolicy); + instance.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.SNAPSHOT); this.setLogRetention(); } diff --git a/packages/@aws-cdk/aws-rds/lib/private/util.ts b/packages/@aws-cdk/aws-rds/lib/private/util.ts index b7a67889483eb..aceb18eb41e51 100644 --- a/packages/@aws-cdk/aws-rds/lib/private/util.ts +++ b/packages/@aws-cdk/aws-rds/lib/private/util.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as s3 from '@aws-cdk/aws-s3'; -import { CfnDeletionPolicy, CfnResource, RemovalPolicy } from '@aws-cdk/core'; +import { RemovalPolicy } from '@aws-cdk/core'; import { DatabaseSecret } from '../database-secret'; import { IEngine } from '../engine'; import { Credentials } from '../props'; @@ -76,17 +76,6 @@ export function engineDescription(engine: IEngine) { return engine.engineType + (engine.engineVersion?.fullVersion ? `-${engine.engineVersion.fullVersion}` : ''); } -export function applyRemovalPolicy(cfnDatabase: CfnResource, removalPolicy?: RemovalPolicy): void { - if (!removalPolicy) { - // the default DeletionPolicy is 'Snapshot', which is fine, - // but we should also make it 'Snapshot' for UpdateReplace policy - cfnDatabase.cfnOptions.updateReplacePolicy = CfnDeletionPolicy.SNAPSHOT; - } else { - // just apply whatever removal policy the customer explicitly provided - cfnDatabase.applyRemovalPolicy(removalPolicy); - } -} - /** * By default, deletion protection is disabled. * Enable if explicitly provided or if the RemovalPolicy has been set to RETAIN @@ -118,3 +107,28 @@ export function renderCredentials(scope: Construct, engine: IEngine, credentials return renderedCredentials; } + +/** + * The RemovalPolicy that should be applied to a "helper" resource, if the base resource has the given removal policy + * + * - For Clusters, this determines the RemovalPolicy for Instances/SubnetGroups. + * - For Instances, this determines the RemovalPolicy for SubnetGroups. + * + * If the basePolicy is: + * + * DESTROY or SNAPSHOT -> DESTROY (snapshot is good enough to recreate) + * RETAIN -> RETAIN (anything else will lose data or fail to deploy) + * (undefined) -> DESTROY (base policy is assumed to be SNAPSHOT) + */ +export function helperRemovalPolicy(basePolicy?: RemovalPolicy): RemovalPolicy { + return basePolicy === RemovalPolicy.RETAIN + ? RemovalPolicy.RETAIN + : RemovalPolicy.DESTROY; +} + +/** + * Return a given value unless it's the same as another value + */ +export function renderUnless(value: A, suppressValue: A): A | undefined { + return value === suppressValue ? undefined : value; +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/lib/serverless-cluster.ts b/packages/@aws-cdk/aws-rds/lib/serverless-cluster.ts index 39258de8c7748..90438cbaa1c79 100644 --- a/packages/@aws-cdk/aws-rds/lib/serverless-cluster.ts +++ b/packages/@aws-cdk/aws-rds/lib/serverless-cluster.ts @@ -8,7 +8,7 @@ import { IClusterEngine } from './cluster-engine'; import { Endpoint } from './endpoint'; import { IParameterGroup } from './parameter-group'; import { DATA_API_ACTIONS } from './perms'; -import { applyRemovalPolicy, defaultDeletionProtection, DEFAULT_PASSWORD_EXCLUDE_CHARS, renderCredentials } from './private/util'; +import { defaultDeletionProtection, DEFAULT_PASSWORD_EXCLUDE_CHARS, renderCredentials } from './private/util'; import { Credentials, RotationMultiUserOptions, RotationSingleUserOptions } from './props'; import { CfnDBCluster } from './rds.generated'; import { ISubnetGroup, SubnetGroup } from './subnet-group'; @@ -468,7 +468,7 @@ export class ServerlessCluster extends ServerlessClusterBase { defaultPort: ec2.Port.tcp(this.clusterEndpoint.port), }); - applyRemovalPolicy(cluster, props.removalPolicy); + cluster.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.SNAPSHOT); if (secret) { this.secret = secret.attach(this); diff --git a/packages/@aws-cdk/aws-rds/test/cluster.test.ts b/packages/@aws-cdk/aws-rds/test/cluster.test.ts index ec7c36129b30d..6bfda0f1cfa50 100644 --- a/packages/@aws-cdk/aws-rds/test/cluster.test.ts +++ b/packages/@aws-cdk/aws-rds/test/cluster.test.ts @@ -39,14 +39,14 @@ nodeunitShim({ MasterUserPassword: 'tooshort', VpcSecurityGroupIds: [{ 'Fn::GetAtt': ['DatabaseSecurityGroup5C91FDCB', 'GroupId'] }], }, - DeletionPolicy: ABSENT, + DeletionPolicy: 'Snapshot', UpdateReplacePolicy: 'Snapshot', }, ResourcePart.CompleteDefinition)); expect(stack).to(countResources('AWS::RDS::DBInstance', 2)); expect(stack).to(haveResource('AWS::RDS::DBInstance', { - DeletionPolicy: ABSENT, - UpdateReplacePolicy: ABSENT, + DeletionPolicy: 'Delete', + UpdateReplacePolicy: 'Delete', }, ResourcePart.CompleteDefinition)); test.done(); @@ -1674,7 +1674,7 @@ nodeunitShim({ VpcSecurityGroupIds: [{ 'Fn::GetAtt': ['DatabaseSecurityGroup5C91FDCB', 'GroupId'] }], SnapshotIdentifier: 'mySnapshot', }, - DeletionPolicy: ABSENT, + DeletionPolicy: 'Snapshot', UpdateReplacePolicy: 'Snapshot', }, ResourcePart.CompleteDefinition)); @@ -1840,6 +1840,42 @@ nodeunitShim({ }, }); +test.each([ + [cdk.RemovalPolicy.RETAIN, 'Retain', 'Retain', 'Retain'], + [cdk.RemovalPolicy.SNAPSHOT, 'Snapshot', 'Delete', ABSENT], + [cdk.RemovalPolicy.DESTROY, 'Delete', 'Delete', ABSENT], +])('if Cluster RemovalPolicy is \'%s\', the DBCluster has DeletionPolicy \'%s\', the DBInstance has \'%s\' and the DBSubnetGroup has \'%s\'', (clusterRemovalPolicy, clusterValue, instanceValue, subnetValue) => { + const stack = new cdk.Stack(); + + // WHEN + new DatabaseCluster(stack, 'Cluster', { + credentials: { username: 'admin' }, + engine: DatabaseClusterEngine.AURORA, + instanceProps: { + instanceType: ec2.InstanceType.of(ec2.InstanceClass.M5, ec2.InstanceSize.LARGE), + vpc: new ec2.Vpc(stack, 'Vpc'), + }, + removalPolicy: clusterRemovalPolicy, + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::RDS::DBCluster', { + DeletionPolicy: clusterValue, + UpdateReplacePolicy: clusterValue, + }, ResourcePart.CompleteDefinition)); + + expect(stack).to(haveResourceLike('AWS::RDS::DBInstance', { + DeletionPolicy: instanceValue, + UpdateReplacePolicy: instanceValue, + }, ResourcePart.CompleteDefinition)); + + expect(stack).to(haveResourceLike('AWS::RDS::DBSubnetGroup', { + DeletionPolicy: subnetValue, + UpdateReplacePolicy: subnetValue, + }, ResourcePart.CompleteDefinition)); +}); + + function testStack() { const stack = new cdk.Stack(undefined, undefined, { env: { account: '12345', region: 'us-test-1' } }); stack.node.setContext('availability-zones:12345:us-test-1', ['us-test-1a', 'us-test-1b']); diff --git a/packages/@aws-cdk/aws-rds/test/database-secretmanager.test.ts b/packages/@aws-cdk/aws-rds/test/database-secretmanager.test.ts index 760a16e228cd7..d307c0f05cec6 100644 --- a/packages/@aws-cdk/aws-rds/test/database-secretmanager.test.ts +++ b/packages/@aws-cdk/aws-rds/test/database-secretmanager.test.ts @@ -1,4 +1,4 @@ -import { ABSENT, expect, haveResource, ResourcePart } from '@aws-cdk/assert'; +import { expect, haveResource, ResourcePart } from '@aws-cdk/assert'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import * as cdk from '@aws-cdk/core'; @@ -41,7 +41,7 @@ nodeunitShim({ }, ], }, - DeletionPolicy: ABSENT, + DeletionPolicy: 'Snapshot', UpdateReplacePolicy: 'Snapshot', }, ResourcePart.CompleteDefinition)); diff --git a/packages/@aws-cdk/aws-rds/test/instance.test.ts b/packages/@aws-cdk/aws-rds/test/instance.test.ts index 8c4e4460f65f1..625dfa7074ae3 100644 --- a/packages/@aws-cdk/aws-rds/test/instance.test.ts +++ b/packages/@aws-cdk/aws-rds/test/instance.test.ts @@ -114,7 +114,7 @@ nodeunitShim({ }, ], }, - DeletionPolicy: ABSENT, + DeletionPolicy: 'Snapshot', UpdateReplacePolicy: 'Snapshot', }, ResourcePart.CompleteDefinition)); @@ -1243,3 +1243,30 @@ nodeunitShim({ test.done(); }, }); + +test.each([ + [cdk.RemovalPolicy.RETAIN, 'Retain', 'Retain'], + [cdk.RemovalPolicy.SNAPSHOT, 'Snapshot', ABSENT], + [cdk.RemovalPolicy.DESTROY, 'Delete', ABSENT], +])('if Instance RemovalPolicy is \'%s\', the instance has DeletionPolicy \'%s\' and the DBSubnetGroup has \'%s\'', (instanceRemovalPolicy, instanceValue, subnetValue) => { + // WHEN + new rds.DatabaseInstance(stack, 'Instance', { + engine: rds.DatabaseInstanceEngine.mysql({ + version: rds.MysqlEngineVersion.VER_8_0_19, + }), + vpc, + vpcSubnets: { subnetType: ec2.SubnetType.PUBLIC }, + removalPolicy: instanceRemovalPolicy, + }); + + // THEN + expect(stack).to(haveResourceLike('AWS::RDS::DBInstance', { + DeletionPolicy: instanceValue, + UpdateReplacePolicy: instanceValue, + }, ResourcePart.CompleteDefinition)); + + expect(stack).to(haveResourceLike('AWS::RDS::DBSubnetGroup', { + DeletionPolicy: subnetValue, + UpdateReplacePolicy: subnetValue, + }, ResourcePart.CompleteDefinition)); +}); diff --git a/packages/@aws-cdk/aws-rds/test/integ.cluster-rotation.lit.expected.json b/packages/@aws-cdk/aws-rds/test/integ.cluster-rotation.lit.expected.json index 05293187edb33..74a0642b875c8 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.cluster-rotation.lit.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.cluster-rotation.lit.expected.json @@ -706,7 +706,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" }, "DatabaseInstance1844F58FD": { "Type": "AWS::RDS::DBInstance", @@ -724,7 +725,9 @@ "VPCPrivateSubnet1DefaultRouteAE1D6490", "VPCPrivateSubnet2DefaultRouteF4F5CFD2", "VPCPrivateSubnet3DefaultRoute27F311AE" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DatabaseInstance2AA380DEE": { "Type": "AWS::RDS::DBInstance", @@ -742,7 +745,9 @@ "VPCPrivateSubnet1DefaultRouteAE1D6490", "VPCPrivateSubnet2DefaultRouteF4F5CFD2", "VPCPrivateSubnet3DefaultRoute27F311AE" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DatabaseRotationSingleUserSecurityGroupAC6E0E73": { "Type": "AWS::EC2::SecurityGroup", diff --git a/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json b/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json index 6cafa81fad6a5..3ee9358bebc33 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.cluster-s3.expected.json @@ -652,7 +652,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" }, "DatabaseInstance1844F58FD": { "Type": "AWS::RDS::DBInstance", @@ -670,7 +671,9 @@ "DependsOn": [ "VPCPublicSubnet1DefaultRoute91CEF279", "VPCPublicSubnet2DefaultRouteB7481BBA" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DatabaseInstance2AA380DEE": { "Type": "AWS::RDS::DBInstance", @@ -688,7 +691,9 @@ "DependsOn": [ "VPCPublicSubnet1DefaultRoute91CEF279", "VPCPublicSubnet2DefaultRouteB7481BBA" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json b/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json index 25f2149bf8a0c..04a2157aba0a8 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.cluster.expected.json @@ -484,7 +484,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" }, "DatabaseInstance1844F58FD": { "Type": "AWS::RDS::DBInstance", @@ -502,7 +503,9 @@ "DependsOn": [ "VPCPublicSubnet1DefaultRoute91CEF279", "VPCPublicSubnet2DefaultRouteB7481BBA" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DatabaseInstance2AA380DEE": { "Type": "AWS::RDS::DBInstance", @@ -520,7 +523,9 @@ "DependsOn": [ "VPCPublicSubnet1DefaultRoute91CEF279", "VPCPublicSubnet2DefaultRouteB7481BBA" - ] + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/test/integ.instance-from-generated-password.expected.json b/packages/@aws-cdk/aws-rds/test/integ.instance-from-generated-password.expected.json index a01587728dac5..ca2ee08c781ad 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.instance-from-generated-password.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.instance-from-generated-password.expected.json @@ -619,7 +619,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/test/integ.instance-s3.expected.json b/packages/@aws-cdk/aws-rds/test/integ.instance-s3.expected.json index 49c70139f3394..2b144dedcc3aa 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.instance-s3.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.instance-s3.expected.json @@ -613,4 +613,4 @@ "DeletionPolicy": "Delete" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/test/integ.instance.lit.expected.json b/packages/@aws-cdk/aws-rds/test/integ.instance.lit.expected.json index ca91f92e62644..8a05969830f29 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.instance.lit.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.instance.lit.expected.json @@ -694,7 +694,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" }, "InstanceLogRetentiontrace487771C8": { "Type": "Custom::LogRetention", @@ -832,7 +833,6 @@ ] }, "functionName": "awscdkrdsinstanceInstanceRotationSingleUserAFE3C214", - "excludeCharacters": " %+~`#$&*()|[]{}:;<>?!'/@\"\\", "vpcSubnetIds": { "Fn::Join": [ "", @@ -852,7 +852,8 @@ "InstanceRotationSingleUserSecurityGroupF3FB5C25", "GroupId" ] - } + }, + "excludeCharacters": " %+~`#$&*()|[]{}:;<>?!'/@\"\\" } } }, @@ -1094,13 +1095,13 @@ "Code": { "ZipFile": "exports.handler = (event) => console.log(event);" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "FunctionServiceRole675BB04A", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ @@ -1122,4 +1123,4 @@ "Description": "Artifact hash for asset \"884431e2bc651d2b61bd699a29dc9684b0f66911f06bd3ed0635f854bf18e147\"" } } -} +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/test/integ.proxy.expected.json b/packages/@aws-cdk/aws-rds/test/integ.proxy.expected.json index 52aab8716ba8c..a18c5f5843512 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.proxy.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.proxy.expected.json @@ -495,7 +495,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" }, "dbProxyIAMRole662F3AB8": { "Type": "AWS::IAM::Role", diff --git a/packages/@aws-cdk/aws-rds/test/integ.serverless-cluster.expected.json b/packages/@aws-cdk/aws-rds/test/integ.serverless-cluster.expected.json index 3d392f574621e..752eae1b22894 100644 --- a/packages/@aws-cdk/aws-rds/test/integ.serverless-cluster.expected.json +++ b/packages/@aws-cdk/aws-rds/test/integ.serverless-cluster.expected.json @@ -432,7 +432,8 @@ } ] }, - "UpdateReplacePolicy": "Snapshot" + "UpdateReplacePolicy": "Snapshot", + "DeletionPolicy": "Snapshot" } } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-rds/test/serverless-cluster.test.ts b/packages/@aws-cdk/aws-rds/test/serverless-cluster.test.ts index 257d23d9ffec2..e370ff915cb6c 100644 --- a/packages/@aws-cdk/aws-rds/test/serverless-cluster.test.ts +++ b/packages/@aws-cdk/aws-rds/test/serverless-cluster.test.ts @@ -1,4 +1,4 @@ -import { ABSENT, expect, haveResource, haveResourceLike, ResourcePart, SynthUtils } from '@aws-cdk/assert'; +import { expect, haveResource, haveResourceLike, ResourcePart, SynthUtils } from '@aws-cdk/assert'; import * as ec2 from '@aws-cdk/aws-ec2'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; @@ -44,7 +44,7 @@ nodeunitShim({ }, ], }, - DeletionPolicy: ABSENT, + DeletionPolicy: 'Snapshot', UpdateReplacePolicy: 'Snapshot', }, ResourcePart.CompleteDefinition)); @@ -105,7 +105,7 @@ nodeunitShim({ }, ], }, - DeletionPolicy: ABSENT, + DeletionPolicy: 'Snapshot', UpdateReplacePolicy: 'Snapshot', }, ResourcePart.CompleteDefinition)); test.done(); diff --git a/packages/@aws-cdk/aws-s3-deployment/README.md b/packages/@aws-cdk/aws-s3-deployment/README.md index e7f21b1f54b88..b0bb1e2d9ebd5 100644 --- a/packages/@aws-cdk/aws-s3-deployment/README.md +++ b/packages/@aws-cdk/aws-s3-deployment/README.md @@ -156,39 +156,15 @@ import * as origins from '@aws-cdk/aws-cloudfront-origins'; const bucket = new s3.Bucket(this, 'Destination'); -// Option 1 (Stable): Handles buckets whether or not they are configured for website hosting. +// Handles buckets whether or not they are configured for website hosting. const distribution = new cloudfront.Distribution(this, 'Distribution', { defaultBehavior: { origin: new origins.S3Origin(bucket) }, }); -// Option 2 (Stable): Use this if the bucket has website hosting enabled. -const distribution_for_website_bucket = new cloudfront.CloudFrontWebDistribution(this, 'DistributionForWebBucket', { - originConfigs: [ - { - customOriginSource: { - domainName: bucket.bucketWebsiteDomainName, - }, - behaviors : [ {isDefaultBehavior: true}] - } - ] -}); - -// Option 3 (Stable): Use this version if the bucket does not have website hosting enabled. -const distribution_for_bucket = new cloudfront.CloudFrontWebDistribution(this, 'DistributionForBucket', { - originConfigs: [ - { - s3OriginSource: { - s3BucketSource: bucket - }, - behaviors : [ {isDefaultBehavior: true}] - } - ] -}); - new s3deploy.BucketDeployment(this, 'DeployWithInvalidation', { sources: [s3deploy.Source.asset('./website-dist')], destinationBucket: bucket, - distribution, // or distribution_for_website_bucket or distribution_for_bucket + distribution, distributionPaths: ['/images/*.png'], }); ``` diff --git a/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json b/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json index dee4dafe9e74b..0da38cd2026c5 100644 --- a/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json +++ b/packages/@aws-cdk/aws-s3-notifications/test/sqs/integ.bucket-notifications.expected.json @@ -53,7 +53,9 @@ ] }, "MyQueueE6CA6235": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "MyQueuePolicy6BBEDDAC": { "Type": "AWS::SQS::QueuePolicy", @@ -325,7 +327,9 @@ "Arn" ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "EncryptedQueuePolicy8AEB1708": { "Type": "AWS::SQS::QueuePolicy", diff --git a/packages/@aws-cdk/aws-s3/lib/bucket.ts b/packages/@aws-cdk/aws-s3/lib/bucket.ts index 601308052526d..79c28d98b8e0d 100644 --- a/packages/@aws-cdk/aws-s3/lib/bucket.ts +++ b/packages/@aws-cdk/aws-s3/lib/bucket.ts @@ -1161,8 +1161,8 @@ export interface BucketProps { * * @see https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html * - * @default false New buckets and objects don't allow public access, but users can modify bucket - * policies or object permissions to allow public access. + * + * @default - CloudFormation defaults will apply. New buckets and objects don't allow public access, but users can modify bucket policies or object permissions to allow public access */ readonly blockPublicAccess?: BlockPublicAccess; diff --git a/packages/@aws-cdk/aws-s3/test/bucket.test.ts b/packages/@aws-cdk/aws-s3/test/bucket.test.ts index b54957f32d500..0fb1bffa3726f 100644 --- a/packages/@aws-cdk/aws-s3/test/bucket.test.ts +++ b/packages/@aws-cdk/aws-s3/test/bucket.test.ts @@ -2406,4 +2406,4 @@ describe('bucket', () => { autoDeleteObjects: true, })).toThrow(/Cannot use \'autoDeleteObjects\' property on a bucket without setting removal policy to \'DESTROY\'/); }); -}); +}); \ No newline at end of file diff --git a/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-lambda.expected.json b/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-lambda.expected.json index 38367e9204de2..d20fe9bf9a8db 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-lambda.expected.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-lambda.expected.json @@ -40,13 +40,13 @@ "Code": { "ZipFile": "exports.handler = function handler(event, _context, callback) {\n /* eslint-disable no-console */\n console.log('====================================================');\n console.log(JSON.stringify(event, undefined, 2));\n console.log('====================================================');\n return callback(undefined, event);\n}" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "EchoServiceRoleBE28060B", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ @@ -93,7 +93,9 @@ } }, "DeadLetterQueue9F481546": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DeadLetterQueuePolicyB1FB890C": { "Type": "AWS::SQS::QueuePolicy", @@ -167,13 +169,13 @@ "Code": { "ZipFile": "exports.handler = function handler(event, _context, callback) {\n /* eslint-disable no-console */\n console.log('====================================================');\n console.log(JSON.stringify(event, undefined, 2));\n console.log('====================================================');\n return callback(undefined, event);\n}" }, - "Handler": "index.handler", "Role": { "Fn::GetAtt": [ "FilteredServiceRole16D9DDC1", "Arn" ] }, + "Handler": "index.handler", "Runtime": "nodejs10.x" }, "DependsOn": [ diff --git a/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-sqs.lit.expected.json b/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-sqs.lit.expected.json index ea6b8345f0469..f9b68ad7da9ca 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-sqs.lit.expected.json +++ b/packages/@aws-cdk/aws-sns-subscriptions/test/integ.sns-sqs.lit.expected.json @@ -4,7 +4,9 @@ "Type": "AWS::SNS::Topic" }, "MyQueueE6CA6235": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "MyQueuePolicy6BBEDDAC": { "Type": "AWS::SQS::QueuePolicy", @@ -66,8 +68,8 @@ }, "DeadLetterQueue9F481546": { "Type": "AWS::SQS::Queue", - "Properties": { - } + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "DeadLetterQueuePolicyB1FB890C": { "Type": "AWS::SQS::QueuePolicy", diff --git a/packages/@aws-cdk/aws-sns-subscriptions/test/subs.test.ts b/packages/@aws-cdk/aws-sns-subscriptions/test/subs.test.ts index b2da0de8099b3..4bd8646176d08 100644 --- a/packages/@aws-cdk/aws-sns-subscriptions/test/subs.test.ts +++ b/packages/@aws-cdk/aws-sns-subscriptions/test/subs.test.ts @@ -82,6 +82,8 @@ test('url subscription with user provided dlq', () => { }, 'DeadLetterQueue9F481546': { 'Type': 'AWS::SQS::Queue', + 'DeletionPolicy': 'Delete', + 'UpdateReplacePolicy': 'Delete', 'Properties': { 'MessageRetentionPeriod': 1209600, 'QueueName': 'MySubscription_DLQ', @@ -248,6 +250,8 @@ test('queue subscription', () => { }, 'MyQueueE6CA6235': { 'Type': 'AWS::SQS::Queue', + 'DeletionPolicy': 'Delete', + 'UpdateReplacePolicy': 'Delete', }, 'MyQueuePolicy6BBEDDAC': { 'Type': 'AWS::SQS::QueuePolicy', @@ -325,6 +329,8 @@ test('queue subscription with user provided dlq', () => { }, 'MyQueueE6CA6235': { 'Type': 'AWS::SQS::Queue', + 'DeletionPolicy': 'Delete', + 'UpdateReplacePolicy': 'Delete', }, 'MyQueuePolicy6BBEDDAC': { 'Type': 'AWS::SQS::QueuePolicy', @@ -386,6 +392,8 @@ test('queue subscription with user provided dlq', () => { }, 'DeadLetterQueue9F481546': { 'Type': 'AWS::SQS::Queue', + 'DeletionPolicy': 'Delete', + 'UpdateReplacePolicy': 'Delete', 'Properties': { 'MessageRetentionPeriod': 1209600, 'QueueName': 'MySubscription_DLQ', @@ -745,6 +753,8 @@ test('multiple subscriptions', () => { }, 'MyQueueE6CA6235': { 'Type': 'AWS::SQS::Queue', + 'DeletionPolicy': 'Delete', + 'UpdateReplacePolicy': 'Delete', }, 'MyQueuePolicy6BBEDDAC': { 'Type': 'AWS::SQS::QueuePolicy', diff --git a/packages/@aws-cdk/aws-sqs/lib/queue.ts b/packages/@aws-cdk/aws-sqs/lib/queue.ts index 63b466de84421..1c3067c7a70d6 100644 --- a/packages/@aws-cdk/aws-sqs/lib/queue.ts +++ b/packages/@aws-cdk/aws-sqs/lib/queue.ts @@ -1,5 +1,5 @@ import * as kms from '@aws-cdk/aws-kms'; -import { Duration, Stack, Token } from '@aws-cdk/core'; +import { Duration, RemovalPolicy, Stack, Token } from '@aws-cdk/core'; import { Construct } from 'constructs'; import { IQueue, QueueAttributes, QueueBase } from './queue-base'; import { CfnQueue } from './sqs.generated'; @@ -137,6 +137,18 @@ export interface QueueProps { * @default false */ readonly contentBasedDeduplication?: boolean; + + /** + * Policy to apply when the user pool is removed from the stack + * + * Even though queues are technically stateful, their contents are transient and it + * is common to add and remove Queues while rearchitecting your application. The + * default is therefore `DESTROY`. Change it to `RETAIN` if the messages are so + * valuable that accidentally losing them would be unacceptable. + * + * @default RemovalPolicy.DESTROY + */ + readonly removalPolicy?: RemovalPolicy; } /** @@ -273,6 +285,7 @@ export class Queue extends QueueBase { receiveMessageWaitTimeSeconds: props.receiveMessageWaitTime && props.receiveMessageWaitTime.toSeconds(), visibilityTimeout: props.visibilityTimeout && props.visibilityTimeout.toSeconds(), }); + queue.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.DESTROY); this.queueArn = this.getResourceArnAttribute(queue.attrArn, { service: 'sqs', diff --git a/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json b/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json index 30c3a8a66bfac..c310198cfcae6 100644 --- a/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json +++ b/packages/@aws-cdk/aws-sqs/test/integ.sqs.expected.json @@ -1,7 +1,9 @@ { "Resources": { "DeadLetterQueue9F481546": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "Queue4A7E3555": { "Type": "AWS::SQS::Queue", @@ -16,7 +18,9 @@ }, "maxReceiveCount": 5 } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "EncryptionKey1B843E66": { "Type": "AWS::KMS::Key", @@ -63,7 +67,9 @@ "Arn" ] } - } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "Role1ABCC5F0": { "Type": "AWS::IAM::Role", diff --git a/packages/@aws-cdk/aws-sqs/test/test.sqs.ts b/packages/@aws-cdk/aws-sqs/test/test.sqs.ts index 87e38c2dcf2ca..ea0233578c5a6 100644 --- a/packages/@aws-cdk/aws-sqs/test/test.sqs.ts +++ b/packages/@aws-cdk/aws-sqs/test/test.sqs.ts @@ -1,4 +1,4 @@ -import { expect, haveResource } from '@aws-cdk/assert'; +import { expect, haveResource, ResourcePart } from '@aws-cdk/assert'; import * as iam from '@aws-cdk/aws-iam'; import * as kms from '@aws-cdk/aws-kms'; import { CfnParameter, Duration, Stack, App } from '@aws-cdk/core'; @@ -18,10 +18,16 @@ export = { 'Resources': { 'Queue4A7E3555': { 'Type': 'AWS::SQS::Queue', + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, }, }); + expect(stack).to(haveResource('AWS::SQS::Queue', { + DeletionPolicy: 'Delete', + }, ResourcePart.CompleteDefinition)); + test.done(); }, 'with a dead letter queue'(test: Test) { @@ -33,6 +39,8 @@ export = { 'Resources': { 'DLQ581697C4': { 'Type': 'AWS::SQS::Queue', + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, 'Queue4A7E3555': { 'Type': 'AWS::SQS::Queue', @@ -47,6 +55,8 @@ export = { 'maxReceiveCount': 3, }, }, + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, }, }); @@ -99,6 +109,8 @@ export = { 'Ref': 'myretentionperiod', }, }, + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, }, }); @@ -119,6 +131,8 @@ export = { 'Resources': { 'MyQueueE6CA6235': { 'Type': 'AWS::SQS::Queue', + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, 'MyQueuePolicy6BBEDDAC': { 'Type': 'AWS::SQS::QueuePolicy', @@ -311,6 +325,8 @@ export = { 'Properties': { 'KmsMasterKeyId': 'alias/aws/sqs', }, + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, }, }); @@ -378,6 +394,8 @@ export = { 'QueueName': 'MyQueue.fifo', 'FifoQueue': true, }, + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, }, }); @@ -400,6 +418,8 @@ export = { 'Properties': { 'FifoQueue': true, }, + 'UpdateReplacePolicy': 'Delete', + 'DeletionPolicy': 'Delete', }, }, }); diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md index 80e1dab5ef73f..e7616028054fd 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/README.md +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/README.md @@ -54,6 +54,8 @@ This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aw - [Cancel Step](#cancel-step) - [Modify Instance Fleet](#modify-instance-fleet) - [Modify Instance Group](#modify-instance-group) +- [EKS](#eks) + - [Call](#call) - [Glue](#glue) - [Glue DataBrew](#glue-databrew) - [Lambda](#lambda) @@ -664,6 +666,37 @@ new tasks.EmrModifyInstanceGroupByName(stack, 'Task', { }); ``` +## EKS + +Step Functions supports Amazon EKS through the service integration pattern. +The service integration APIs correspond to Amazon EKS APIs. + +[Read more](https://docs.aws.amazon.com/step-functions/latest/dg/connect-eks.html) about the differences when using these service integrations. + +### Call + +Read and write Kubernetes resource objects via a Kubernetes API endpoint. +Corresponds to the [`call`](https://docs.aws.amazon.com/step-functions/latest/dg/connect-eks.html) API in Step Functions Connector. + +The following code snippet includes a Task state that uses eks:call to list the pods. + +```ts +import * as eks from '@aws-cdk/aws-eks'; +import * as sfn from '@aws-cdk/aws-stepfunctions'; +import * as tasks from '@aws-cdk/aws-stepfunctions-tasks'; + +const myEksCluster = new eks.Cluster(this, 'my sample cluster', { + version: eks.KubernetesVersion.V1_18, + clusterName: 'myEksCluster', + }); + +new tasks.EksCall(stack, 'Call a EKS Endpoint', { + cluster: myEksCluster, + httpMethod: MethodType.GET, + httpPath: '/api/v1/namespaces/default/pods', +}); +``` + ## Glue Step Functions supports [AWS Glue](https://docs.aws.amazon.com/step-functions/latest/dg/connect-glue.html) through the service integration pattern. @@ -811,7 +844,7 @@ Step Functions supports [AWS SageMaker](https://docs.aws.amazon.com/step-functio You can call the [`CreateTrainingJob`](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html) API from a `Task` state. ```ts -new sfn.SagemakerTrainTask(this, 'TrainSagemaker', { +new sfn.SageMakerCreateTrainingJob(this, 'TrainSagemaker', { trainingJobName: sfn.JsonPath.stringAt('$.JobName'), role, algorithmSpecification: { @@ -846,7 +879,7 @@ new sfn.SagemakerTrainTask(this, 'TrainSagemaker', { You can call the [`CreateTransformJob`](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html) API from a `Task` state. ```ts -new sfn.SagemakerTransformTask(this, 'Batch Inference', { +new sfn.SageMakerCreateTransformJob(this, 'Batch Inference', { transformJobName: 'MyTransformJob', modelName: 'MyModelName', modelClientOptions: { diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/eks/call.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/eks/call.ts new file mode 100644 index 0000000000000..8cbf3fcca5886 --- /dev/null +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/eks/call.ts @@ -0,0 +1,137 @@ +import * as eks from '@aws-cdk/aws-eks'; +import * as iam from '@aws-cdk/aws-iam'; +import * as sfn from '@aws-cdk/aws-stepfunctions'; +import { Construct } from 'constructs'; +import { integrationResourceArn, validatePatternSupported } from '../private/task-utils'; + +/** + * Properties for calling a EKS endpoint with EksCall + * @experimental + */ +export interface EksCallProps extends sfn.TaskStateBaseProps { + + /** + * The EKS cluster + */ + readonly cluster: eks.ICluster; + + /** + * HTTP method ("GET", "POST", "PUT", ...) part of HTTP request + */ + readonly httpMethod: HttpMethods; + + /** + * HTTP path of the Kubernetes REST API operation + * For example: /api/v1/namespaces/default/pods + */ + readonly httpPath: string; + + /** + * Query Parameters part of HTTP request + * @default - no query parameters + */ + readonly queryParameters?: { [key: string]: string[] }; + + /** + * Request body part of HTTP request + * @default - No request body + */ + readonly requestBody?: sfn.TaskInput; +} + +/** + * Call a EKS endpoint as a Task + * + * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-eks.html + * @experimental + */ +export class EksCall extends sfn.TaskStateBase { + + private static readonly SUPPORTED_INTEGRATION_PATTERNS: sfn.IntegrationPattern[] = [ + sfn.IntegrationPattern.REQUEST_RESPONSE, + ]; + + /** No policies are required due to eks:call is an Http service integration and does not call and EKS API directly + * @see https://docs.aws.amazon.com/step-functions/latest/dg/connect-eks.html#connect-eks-permissions + */ + protected readonly taskMetrics?: sfn.TaskMetricsConfig; + protected readonly taskPolicies?: iam.PolicyStatement[]; + + private readonly integrationPattern: sfn.IntegrationPattern; + + private readonly clusterEndpoint: string; + private readonly clusterCertificateAuthorityData: string; + + constructor(scope: Construct, id: string, private readonly props: EksCallProps) { + super(scope, id, props); + this.integrationPattern = props.integrationPattern ?? sfn.IntegrationPattern.REQUEST_RESPONSE; + + validatePatternSupported(this.integrationPattern, EksCall.SUPPORTED_INTEGRATION_PATTERNS); + + try { + this.clusterEndpoint = this.props.cluster.clusterEndpoint; + } catch (e) { + throw new Error('The "clusterEndpoint" property must be specified when using an imported Cluster.'); + } + + try { + this.clusterCertificateAuthorityData = this.props.cluster.clusterCertificateAuthorityData; + } catch (e) { + throw new Error('The "clusterCertificateAuthorityData" property must be specified when using an imported Cluster.'); + } + } + + /** + * Provides the EKS Call service integration task configuration + * @internal + */ + protected _renderTask(): any { + return { + Resource: integrationResourceArn('eks', 'call', this.integrationPattern), + Parameters: sfn.FieldUtils.renderObject({ + ClusterName: this.props.cluster.clusterName, + CertificateAuthority: this.clusterCertificateAuthorityData, + Endpoint: this.clusterEndpoint, + Method: this.props.httpMethod, + Path: this.props.httpPath, + QueryParameters: this.props.queryParameters, + RequestBody: this.props.requestBody?.value, + }), + }; + } +} + +/** + * Method type of a EKS call + */ +export enum HttpMethods { + /** + * Retrieve data from a server at the specified resource + */ + GET = 'GET', + + /** + * Send data to the API endpoint to create or update a resource + */ + POST = 'POST', + + /** + * Send data to the API endpoint to update or create a resource + */ + PUT = 'PUT', + + /** + * Delete the resource at the specified endpoint + */ + DELETE = 'DELETE', + + /** + * Apply partial modifications to the resource + */ + PATCH = 'PATCH', + + /** + * Retrieve data from a server at the specified resource without the response body + */ + HEAD = 'HEAD' +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/index.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/index.ts index 84b790beff216..32e684f6d1adf 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/lib/index.ts +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/lib/index.ts @@ -44,3 +44,4 @@ export * from './athena/stop-query-execution'; export * from './athena/get-query-execution'; export * from './athena/get-query-results'; export * from './databrew/start-job-run'; +export * from './eks/call'; diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json index 362805abcf32c..a64d0dc20c352 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/package.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/package.json @@ -82,6 +82,7 @@ "@aws-cdk/aws-ecr": "0.0.0", "@aws-cdk/aws-ecr-assets": "0.0.0", "@aws-cdk/aws-ecs": "0.0.0", + "@aws-cdk/aws-eks": "0.0.0", "@aws-cdk/aws-glue": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", @@ -104,6 +105,7 @@ "@aws-cdk/aws-ecr": "0.0.0", "@aws-cdk/aws-ecr-assets": "0.0.0", "@aws-cdk/aws-ecs": "0.0.0", + "@aws-cdk/aws-eks": "0.0.0", "@aws-cdk/aws-glue": "0.0.0", "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kms": "0.0.0", diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/call.test.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/call.test.ts new file mode 100644 index 0000000000000..fd7c9f7cb0dd7 --- /dev/null +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/call.test.ts @@ -0,0 +1,234 @@ +import * as eks from '@aws-cdk/aws-eks'; +import * as sfn from '@aws-cdk/aws-stepfunctions'; +import { Stack } from '@aws-cdk/core'; +import { EksCall, HttpMethods } from '../../lib/eks/call'; + +let stack: Stack; +let cluster: eks.Cluster; + +beforeEach(() => { + //GIVEN + stack = new Stack(); + cluster = new eks.Cluster(stack, 'Cluster', { + version: eks.KubernetesVersion.V1_18, + clusterName: 'eksCluster', + }); +}); + +test('Call an EKS endpoint', () => { + // WHEN + const task = new EksCall(stack, 'Call', { + cluster: cluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromObject({ + Body: 'requestBody', + }), + }); + + // THEN + expect(stack.resolve(task.toStateJson())).toEqual({ + Type: 'Task', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { + Ref: 'AWS::Partition', + }, + ':states:::eks:call', + ], + ], + }, + End: true, + Parameters: { + ClusterName: { + Ref: 'Cluster9EE0221C', + }, + CertificateAuthority: { + 'Fn::GetAtt': [ + 'Cluster9EE0221C', + 'CertificateAuthorityData', + ], + }, + Endpoint: { + 'Fn::GetAtt': [ + 'Cluster9EE0221C', + 'Endpoint', + ], + }, + Method: 'GET', + Path: 'path', + RequestBody: { + Body: 'requestBody', + }, + }, + }); +}); + +test('Call an EKS endpoint with requestBody as a string', () => { + // WHEN + const task = new EksCall(stack, 'Call', { + cluster: cluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromText('requestBody'), + }); + + // THEN + expect(stack.resolve(task.toStateJson())).toEqual({ + Type: 'Task', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { + Ref: 'AWS::Partition', + }, + ':states:::eks:call', + ], + ], + }, + End: true, + Parameters: { + ClusterName: { + Ref: 'Cluster9EE0221C', + }, + CertificateAuthority: { + 'Fn::GetAtt': [ + 'Cluster9EE0221C', + 'CertificateAuthorityData', + ], + }, + Endpoint: { + 'Fn::GetAtt': [ + 'Cluster9EE0221C', + 'Endpoint', + ], + }, + Method: 'GET', + Path: 'path', + RequestBody: 'requestBody', + }, + }); +}); + +test('Call an EKS endpoint with requestBody supply through path', () => { + // WHEN + const task = new EksCall(stack, 'Call', { + cluster: cluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromJsonPathAt('$.Request.Body'), + }); + + // THEN + expect(stack.resolve(task.toStateJson())).toEqual({ + Type: 'Task', + Resource: { + 'Fn::Join': [ + '', + [ + 'arn:', + { + Ref: 'AWS::Partition', + }, + ':states:::eks:call', + ], + ], + }, + End: true, + Parameters: { + 'ClusterName': { + Ref: 'Cluster9EE0221C', + }, + 'CertificateAuthority': { + 'Fn::GetAtt': [ + 'Cluster9EE0221C', + 'CertificateAuthorityData', + ], + }, + 'Endpoint': { + 'Fn::GetAtt': [ + 'Cluster9EE0221C', + 'Endpoint', + ], + }, + 'Method': 'GET', + 'Path': 'path', + 'RequestBody.$': '$.Request.Body', + }, + }); +}); + +test('Task throws if RUN_JOB is supplied as service integration pattern', () => { + expect(() => { + new EksCall(stack, 'Call', { + cluster: cluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromObject({ + RequestBody: 'requestBody', + }), + integrationPattern: sfn.IntegrationPattern.RUN_JOB, + }); + }).toThrow( + /Unsupported service integration pattern. Supported Patterns: REQUEST_RESPONSE. Received: RUN_JOB/, + ); +}); + +test('Task throws if WAIT_FOR_TASK_TOKEN is supplied as service integration pattern', () => { + expect(() => { + new EksCall(stack, 'Call', { + cluster: cluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromObject({ + RequestBody: 'requestBody', + }), + integrationPattern: sfn.IntegrationPattern.WAIT_FOR_TASK_TOKEN, + }); + }).toThrow( + /Unsupported service integration pattern. Supported Patterns: REQUEST_RESPONSE. Received: WAIT_FOR_TASK_TOKEN/, + ); +}); + +test('Task throws if cluster supplied does not have clusterEndpoint configured', () => { + const importedCluster = eks.Cluster.fromClusterAttributes(stack, 'InvalidCluster', { + clusterName: 'importedCluster', + clusterCertificateAuthorityData: 'clusterCertificateAuthorityData', + }); + expect(() => { + new EksCall(stack, 'Call', { + cluster: importedCluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromObject({ + RequestBody: 'requestBody', + }), + }); + }).toThrow( + /The "clusterEndpoint" property must be specified when using an imported Cluster./, + ); +}); + +test('Task throws if cluster supplied does not have clusterCertificateAuthorityData configured', () => { + const importedCluster = eks.Cluster.fromClusterAttributes(stack, 'InvalidCluster', { + clusterName: 'importedCluster', + clusterEndpoint: 'clusterEndpoint', + }); + expect(() => { + new EksCall(stack, 'Call', { + cluster: importedCluster, + httpMethod: HttpMethods.GET, + httpPath: 'path', + requestBody: sfn.TaskInput.fromObject({ + RequestBody: 'requestBody', + }), + }); + }).toThrow( + /The "clusterCertificateAuthorityData" property must be specified when using an imported Cluster./, + ); +}); \ No newline at end of file diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.expected.json b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.expected.json new file mode 100644 index 0000000000000..23ad4160b9f7b --- /dev/null +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.expected.json @@ -0,0 +1,1580 @@ +{ + "Resources": { + "EksClusterDefaultVpcB24550B2": { + "Type": "AWS::EC2::VPC", + "Properties": { + "CidrBlock": "10.0.0.0/16", + "EnableDnsHostnames": true, + "EnableDnsSupport": true, + "InstanceTenancy": "default", + "Tags": [ + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": "10.0.0.0/19", + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "AvailabilityZone": "test-region-1a", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet1" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet1RouteTable163DE10A": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet1" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet1RouteTableAssociation36D085C2": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPublicSubnet1RouteTable163DE10A" + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047" + } + } + }, + "EksClusterDefaultVpcPublicSubnet1DefaultRouteCE5F6EF3": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPublicSubnet1RouteTable163DE10A" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "EksClusterDefaultVpcIGWCA6A3220" + } + }, + "DependsOn": [ + "EksClusterDefaultVpcVPCGW0E4A5673" + ] + }, + "EksClusterDefaultVpcPublicSubnet1EIPF53713C9": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet1" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet1NATGateway548C2CDF": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "EksClusterDefaultVpcPublicSubnet1EIPF53713C9", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet1" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": "10.0.32.0/19", + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "AvailabilityZone": "test-region-1b", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet2" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet2RouteTable1027E4DE": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet2" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet2RouteTableAssociation39E2ABB3": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPublicSubnet2RouteTable1027E4DE" + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D" + } + } + }, + "EksClusterDefaultVpcPublicSubnet2DefaultRoute8B910E5C": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPublicSubnet2RouteTable1027E4DE" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "EksClusterDefaultVpcIGWCA6A3220" + } + }, + "DependsOn": [ + "EksClusterDefaultVpcVPCGW0E4A5673" + ] + }, + "EksClusterDefaultVpcPublicSubnet2EIP16D41D80": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet2" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet2NATGateway869DDCBF": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "EksClusterDefaultVpcPublicSubnet2EIP16D41D80", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet2" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": "10.0.64.0/19", + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "AvailabilityZone": "test-region-1c", + "MapPublicIpOnLaunch": true, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Public" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Public" + }, + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet3" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet3RouteTableEBB51B8A": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet3" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet3RouteTableAssociationFE466321": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPublicSubnet3RouteTableEBB51B8A" + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1" + } + } + }, + "EksClusterDefaultVpcPublicSubnet3DefaultRoute1F5BE861": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPublicSubnet3RouteTableEBB51B8A" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": { + "Ref": "EksClusterDefaultVpcIGWCA6A3220" + } + }, + "DependsOn": [ + "EksClusterDefaultVpcVPCGW0E4A5673" + ] + }, + "EksClusterDefaultVpcPublicSubnet3EIPF8D34EDE": { + "Type": "AWS::EC2::EIP", + "Properties": { + "Domain": "vpc", + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet3" + } + ] + } + }, + "EksClusterDefaultVpcPublicSubnet3NATGatewayC35C74D3": { + "Type": "AWS::EC2::NatGateway", + "Properties": { + "AllocationId": { + "Fn::GetAtt": [ + "EksClusterDefaultVpcPublicSubnet3EIPF8D34EDE", + "AllocationId" + ] + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PublicSubnet3" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": "10.0.96.0/19", + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "AvailabilityZone": "test-region-1a", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "kubernetes.io/role/internal-elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PrivateSubnet1" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet1RouteTable9104CFAB": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/internal-elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PrivateSubnet1" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet1RouteTableAssociationCC31B65B": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet1RouteTable9104CFAB" + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F" + } + } + }, + "EksClusterDefaultVpcPrivateSubnet1DefaultRoute790DE5CF": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet1RouteTable9104CFAB" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "EksClusterDefaultVpcPublicSubnet1NATGateway548C2CDF" + } + } + }, + "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": "10.0.128.0/19", + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "AvailabilityZone": "test-region-1b", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "kubernetes.io/role/internal-elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PrivateSubnet2" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet2RouteTable04B34031": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/internal-elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PrivateSubnet2" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet2RouteTableAssociation86243837": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet2RouteTable04B34031" + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71" + } + } + }, + "EksClusterDefaultVpcPrivateSubnet2DefaultRoute99A19B21": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet2RouteTable04B34031" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "EksClusterDefaultVpcPublicSubnet2NATGateway869DDCBF" + } + } + }, + "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07": { + "Type": "AWS::EC2::Subnet", + "Properties": { + "CidrBlock": "10.0.160.0/19", + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "AvailabilityZone": "test-region-1c", + "MapPublicIpOnLaunch": false, + "Tags": [ + { + "Key": "aws-cdk:subnet-name", + "Value": "Private" + }, + { + "Key": "aws-cdk:subnet-type", + "Value": "Private" + }, + { + "Key": "kubernetes.io/role/internal-elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PrivateSubnet3" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet3RouteTableA8F449F1": { + "Type": "AWS::EC2::RouteTable", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "Tags": [ + { + "Key": "kubernetes.io/role/internal-elb", + "Value": "1" + }, + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc/PrivateSubnet3" + } + ] + } + }, + "EksClusterDefaultVpcPrivateSubnet3RouteTableAssociationCE2741BE": { + "Type": "AWS::EC2::SubnetRouteTableAssociation", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet3RouteTableA8F449F1" + }, + "SubnetId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07" + } + } + }, + "EksClusterDefaultVpcPrivateSubnet3DefaultRouteDC2E9DE0": { + "Type": "AWS::EC2::Route", + "Properties": { + "RouteTableId": { + "Ref": "EksClusterDefaultVpcPrivateSubnet3RouteTableA8F449F1" + }, + "DestinationCidrBlock": "0.0.0.0/0", + "NatGatewayId": { + "Ref": "EksClusterDefaultVpcPublicSubnet3NATGatewayC35C74D3" + } + } + }, + "EksClusterDefaultVpcIGWCA6A3220": { + "Type": "AWS::EC2::InternetGateway", + "Properties": { + "Tags": [ + { + "Key": "Name", + "Value": "aws-stepfunctions-tasks-eks-call-integ/EksCluster/DefaultVpc" + } + ] + } + }, + "EksClusterDefaultVpcVPCGW0E4A5673": { + "Type": "AWS::EC2::VPCGatewayAttachment", + "Properties": { + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + }, + "InternetGatewayId": { + "Ref": "EksClusterDefaultVpcIGWCA6A3220" + } + } + }, + "EksClusterRoleC84B376F": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": "eks.amazonaws.com" + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AmazonEKSClusterPolicy" + ] + ] + } + ] + } + }, + "EksClusterControlPlaneSecurityGroup9257A6D0": { + "Type": "AWS::EC2::SecurityGroup", + "Properties": { + "GroupDescription": "EKS Control Plane Security Group", + "SecurityGroupEgress": [ + { + "CidrIp": "0.0.0.0/0", + "Description": "Allow all outbound traffic by default", + "IpProtocol": "-1" + } + ], + "VpcId": { + "Ref": "EksClusterDefaultVpcB24550B2" + } + } + }, + "EksClusterCreationRole75AABE42": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + } + } + ], + "Version": "2012-10-17" + } + }, + "DependsOn": [ + "EksClusterDefaultVpcIGWCA6A3220", + "EksClusterDefaultVpcPrivateSubnet1DefaultRoute790DE5CF", + "EksClusterDefaultVpcPrivateSubnet1RouteTable9104CFAB", + "EksClusterDefaultVpcPrivateSubnet1RouteTableAssociationCC31B65B", + "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F", + "EksClusterDefaultVpcPrivateSubnet2DefaultRoute99A19B21", + "EksClusterDefaultVpcPrivateSubnet2RouteTable04B34031", + "EksClusterDefaultVpcPrivateSubnet2RouteTableAssociation86243837", + "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71", + "EksClusterDefaultVpcPrivateSubnet3DefaultRouteDC2E9DE0", + "EksClusterDefaultVpcPrivateSubnet3RouteTableA8F449F1", + "EksClusterDefaultVpcPrivateSubnet3RouteTableAssociationCE2741BE", + "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07", + "EksClusterDefaultVpcPublicSubnet1DefaultRouteCE5F6EF3", + "EksClusterDefaultVpcPublicSubnet1EIPF53713C9", + "EksClusterDefaultVpcPublicSubnet1NATGateway548C2CDF", + "EksClusterDefaultVpcPublicSubnet1RouteTable163DE10A", + "EksClusterDefaultVpcPublicSubnet1RouteTableAssociation36D085C2", + "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047", + "EksClusterDefaultVpcPublicSubnet2DefaultRoute8B910E5C", + "EksClusterDefaultVpcPublicSubnet2EIP16D41D80", + "EksClusterDefaultVpcPublicSubnet2NATGateway869DDCBF", + "EksClusterDefaultVpcPublicSubnet2RouteTable1027E4DE", + "EksClusterDefaultVpcPublicSubnet2RouteTableAssociation39E2ABB3", + "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D", + "EksClusterDefaultVpcPublicSubnet3DefaultRoute1F5BE861", + "EksClusterDefaultVpcPublicSubnet3EIPF8D34EDE", + "EksClusterDefaultVpcPublicSubnet3NATGatewayC35C74D3", + "EksClusterDefaultVpcPublicSubnet3RouteTableEBB51B8A", + "EksClusterDefaultVpcPublicSubnet3RouteTableAssociationFE466321", + "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1", + "EksClusterDefaultVpcB24550B2", + "EksClusterDefaultVpcVPCGW0E4A5673" + ] + }, + "EksClusterCreationRoleDefaultPolicy2DFE4D73": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyDocument": { + "Statement": [ + { + "Action": "iam:PassRole", + "Effect": "Allow", + "Resource": { + "Fn::GetAtt": [ + "EksClusterRoleC84B376F", + "Arn" + ] + } + }, + { + "Action": [ + "eks:CreateCluster", + "eks:DescribeCluster", + "eks:DescribeUpdate", + "eks:DeleteCluster", + "eks:UpdateClusterVersion", + "eks:UpdateClusterConfig", + "eks:CreateFargateProfile", + "eks:TagResource", + "eks:UntagResource" + ], + "Effect": "Allow", + "Resource": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":eks:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":cluster/eksCluster" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":eks:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":cluster/eksCluster/*" + ] + ] + } + ] + }, + { + "Action": [ + "eks:DescribeFargateProfile", + "eks:DeleteFargateProfile" + ], + "Effect": "Allow", + "Resource": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":eks:", + { + "Ref": "AWS::Region" + }, + ":", + { + "Ref": "AWS::AccountId" + }, + ":fargateprofile/eksCluster/*" + ] + ] + } + }, + { + "Action": [ + "iam:GetRole", + "iam:listAttachedRolePolicies" + ], + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": "iam:CreateServiceLinkedRole", + "Effect": "Allow", + "Resource": "*" + }, + { + "Action": [ + "ec2:DescribeInstances", + "ec2:DescribeNetworkInterfaces", + "ec2:DescribeSecurityGroups", + "ec2:DescribeSubnets", + "ec2:DescribeRouteTables", + "ec2:DescribeDhcpOptions", + "ec2:DescribeVpcs" + ], + "Effect": "Allow", + "Resource": "*" + } + ], + "Version": "2012-10-17" + }, + "PolicyName": "EksClusterCreationRoleDefaultPolicy2DFE4D73", + "Roles": [ + { + "Ref": "EksClusterCreationRole75AABE42" + } + ] + }, + "DependsOn": [ + "EksClusterDefaultVpcIGWCA6A3220", + "EksClusterDefaultVpcPrivateSubnet1DefaultRoute790DE5CF", + "EksClusterDefaultVpcPrivateSubnet1RouteTable9104CFAB", + "EksClusterDefaultVpcPrivateSubnet1RouteTableAssociationCC31B65B", + "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F", + "EksClusterDefaultVpcPrivateSubnet2DefaultRoute99A19B21", + "EksClusterDefaultVpcPrivateSubnet2RouteTable04B34031", + "EksClusterDefaultVpcPrivateSubnet2RouteTableAssociation86243837", + "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71", + "EksClusterDefaultVpcPrivateSubnet3DefaultRouteDC2E9DE0", + "EksClusterDefaultVpcPrivateSubnet3RouteTableA8F449F1", + "EksClusterDefaultVpcPrivateSubnet3RouteTableAssociationCE2741BE", + "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07", + "EksClusterDefaultVpcPublicSubnet1DefaultRouteCE5F6EF3", + "EksClusterDefaultVpcPublicSubnet1EIPF53713C9", + "EksClusterDefaultVpcPublicSubnet1NATGateway548C2CDF", + "EksClusterDefaultVpcPublicSubnet1RouteTable163DE10A", + "EksClusterDefaultVpcPublicSubnet1RouteTableAssociation36D085C2", + "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047", + "EksClusterDefaultVpcPublicSubnet2DefaultRoute8B910E5C", + "EksClusterDefaultVpcPublicSubnet2EIP16D41D80", + "EksClusterDefaultVpcPublicSubnet2NATGateway869DDCBF", + "EksClusterDefaultVpcPublicSubnet2RouteTable1027E4DE", + "EksClusterDefaultVpcPublicSubnet2RouteTableAssociation39E2ABB3", + "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D", + "EksClusterDefaultVpcPublicSubnet3DefaultRoute1F5BE861", + "EksClusterDefaultVpcPublicSubnet3EIPF8D34EDE", + "EksClusterDefaultVpcPublicSubnet3NATGatewayC35C74D3", + "EksClusterDefaultVpcPublicSubnet3RouteTableEBB51B8A", + "EksClusterDefaultVpcPublicSubnet3RouteTableAssociationFE466321", + "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1", + "EksClusterDefaultVpcB24550B2", + "EksClusterDefaultVpcVPCGW0E4A5673" + ] + }, + "EksClusterFAB68BDB": { + "Type": "Custom::AWSCDK-EKS-Cluster", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "awscdkawseksClusterResourceProviderNestedStackawscdkawseksClusterResourceProviderNestedStackResource9827C454", + "Outputs.awsstepfunctionstasksekscallintegawscdkawseksClusterResourceProviderframeworkonEvent5722A6A8Arn" + ] + }, + "Config": { + "name": "eksCluster", + "version": "1.18", + "roleArn": { + "Fn::GetAtt": [ + "EksClusterRoleC84B376F", + "Arn" + ] + }, + "resourcesVpcConfig": { + "subnetIds": [ + { + "Ref": "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047" + }, + { + "Ref": "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D" + }, + { + "Ref": "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1" + }, + { + "Ref": "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F" + }, + { + "Ref": "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71" + }, + { + "Ref": "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07" + } + ], + "securityGroupIds": [ + { + "Fn::GetAtt": [ + "EksClusterControlPlaneSecurityGroup9257A6D0", + "GroupId" + ] + } + ], + "endpointPublicAccess": true, + "endpointPrivateAccess": true + } + }, + "AssumeRoleArn": { + "Fn::GetAtt": [ + "EksClusterCreationRole75AABE42", + "Arn" + ] + }, + "AttributesRevision": 2 + }, + "DependsOn": [ + "EksClusterDefaultVpcIGWCA6A3220", + "EksClusterDefaultVpcPrivateSubnet1DefaultRoute790DE5CF", + "EksClusterDefaultVpcPrivateSubnet1RouteTable9104CFAB", + "EksClusterDefaultVpcPrivateSubnet1RouteTableAssociationCC31B65B", + "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F", + "EksClusterDefaultVpcPrivateSubnet2DefaultRoute99A19B21", + "EksClusterDefaultVpcPrivateSubnet2RouteTable04B34031", + "EksClusterDefaultVpcPrivateSubnet2RouteTableAssociation86243837", + "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71", + "EksClusterDefaultVpcPrivateSubnet3DefaultRouteDC2E9DE0", + "EksClusterDefaultVpcPrivateSubnet3RouteTableA8F449F1", + "EksClusterDefaultVpcPrivateSubnet3RouteTableAssociationCE2741BE", + "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07", + "EksClusterDefaultVpcPublicSubnet1DefaultRouteCE5F6EF3", + "EksClusterDefaultVpcPublicSubnet1EIPF53713C9", + "EksClusterDefaultVpcPublicSubnet1NATGateway548C2CDF", + "EksClusterDefaultVpcPublicSubnet1RouteTable163DE10A", + "EksClusterDefaultVpcPublicSubnet1RouteTableAssociation36D085C2", + "EksClusterDefaultVpcPublicSubnet1SubnetCB1D1047", + "EksClusterDefaultVpcPublicSubnet2DefaultRoute8B910E5C", + "EksClusterDefaultVpcPublicSubnet2EIP16D41D80", + "EksClusterDefaultVpcPublicSubnet2NATGateway869DDCBF", + "EksClusterDefaultVpcPublicSubnet2RouteTable1027E4DE", + "EksClusterDefaultVpcPublicSubnet2RouteTableAssociation39E2ABB3", + "EksClusterDefaultVpcPublicSubnet2SubnetA8FE675D", + "EksClusterDefaultVpcPublicSubnet3DefaultRoute1F5BE861", + "EksClusterDefaultVpcPublicSubnet3EIPF8D34EDE", + "EksClusterDefaultVpcPublicSubnet3NATGatewayC35C74D3", + "EksClusterDefaultVpcPublicSubnet3RouteTableEBB51B8A", + "EksClusterDefaultVpcPublicSubnet3RouteTableAssociationFE466321", + "EksClusterDefaultVpcPublicSubnet3SubnetA04EFFC1", + "EksClusterDefaultVpcB24550B2", + "EksClusterDefaultVpcVPCGW0E4A5673", + "EksClusterCreationRoleDefaultPolicy2DFE4D73", + "EksClusterCreationRole75AABE42" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "EksClusterKubectlReadyBarrier502B0E83": { + "Type": "AWS::SSM::Parameter", + "Properties": { + "Type": "String", + "Value": "aws:cdk:eks:kubectl-ready" + }, + "DependsOn": [ + "EksClusterCreationRoleDefaultPolicy2DFE4D73", + "EksClusterCreationRole75AABE42", + "EksClusterFAB68BDB" + ] + }, + "EksClusterMastersRole3F49FAC3": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "AWS": { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::", + { + "Ref": "AWS::AccountId" + }, + ":root" + ] + ] + } + } + } + ], + "Version": "2012-10-17" + } + } + }, + "EksClusterAwsAuthmanifest4F460A9B": { + "Type": "Custom::AWSCDK-EKS-KubernetesResource", + "Properties": { + "ServiceToken": { + "Fn::GetAtt": [ + "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B", + "Outputs.awsstepfunctionstasksekscallintegawscdkawseksKubectlProviderframeworkonEventAF076895Arn" + ] + }, + "Manifest": { + "Fn::Join": [ + "", + [ + "[{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"aws-auth\",\"namespace\":\"kube-system\",\"labels\":{\"aws.cdk.eks/prune-c8f58087a1a3e6c10f65d847befda9c1aa2145a8fc\":\"\"}},\"data\":{\"mapRoles\":\"[{\\\"rolearn\\\":\\\"", + { + "Fn::GetAtt": [ + "EksClusterMastersRole3F49FAC3", + "Arn" + ] + }, + "\\\",\\\"username\\\":\\\"", + { + "Fn::GetAtt": [ + "EksClusterMastersRole3F49FAC3", + "Arn" + ] + }, + "\\\",\\\"groups\\\":[\\\"system:masters\\\"]},{\\\"rolearn\\\":\\\"", + { + "Fn::GetAtt": [ + "EksClusterNodegroupDefaultCapacityNodeGroupRole70D09CEC", + "Arn" + ] + }, + "\\\",\\\"username\\\":\\\"system:node:{{EC2PrivateDNSName}}\\\",\\\"groups\\\":[\\\"system:bootstrappers\\\",\\\"system:nodes\\\"]},{\\\"rolearn\\\":\\\"", + { + "Fn::GetAtt": [ + "Role1ABCC5F0", + "Arn" + ] + }, + "\\\",\\\"username\\\":\\\"", + { + "Fn::GetAtt": [ + "Role1ABCC5F0", + "Arn" + ] + }, + "\\\",\\\"groups\\\":[\\\"system:masters\\\"]}]\",\"mapUsers\":\"[]\",\"mapAccounts\":\"[]\"}}]" + ] + ] + }, + "ClusterName": { + "Ref": "EksClusterFAB68BDB" + }, + "RoleArn": { + "Fn::GetAtt": [ + "EksClusterCreationRole75AABE42", + "Arn" + ] + }, + "PruneLabel": "aws.cdk.eks/prune-c8f58087a1a3e6c10f65d847befda9c1aa2145a8fc", + "Overwrite": true + }, + "DependsOn": [ + "EksClusterKubectlReadyBarrier502B0E83" + ], + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "EksClusterNodegroupDefaultCapacityNodeGroupRole70D09CEC": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": { + "Fn::Join": [ + "", + [ + "ec2.", + { + "Ref": "AWS::URLSuffix" + } + ] + ] + } + } + } + ], + "Version": "2012-10-17" + }, + "ManagedPolicyArns": [ + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AmazonEKSWorkerNodePolicy" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AmazonEKS_CNI_Policy" + ] + ] + }, + { + "Fn::Join": [ + "", + [ + "arn:", + { + "Ref": "AWS::Partition" + }, + ":iam::aws:policy/AmazonEC2ContainerRegistryReadOnly" + ] + ] + } + ] + } + }, + "EksClusterNodegroupDefaultCapacityA81E70F9": { + "Type": "AWS::EKS::Nodegroup", + "Properties": { + "ClusterName": { + "Ref": "EksClusterFAB68BDB" + }, + "NodeRole": { + "Fn::GetAtt": [ + "EksClusterNodegroupDefaultCapacityNodeGroupRole70D09CEC", + "Arn" + ] + }, + "Subnets": [ + { + "Ref": "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F" + }, + { + "Ref": "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71" + }, + { + "Ref": "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07" + } + ], + "AmiType": "AL2_x86_64", + "ForceUpdateEnabled": true, + "InstanceTypes": [ + "m5.large" + ], + "ScalingConfig": { + "DesiredSize": 2, + "MaxSize": 2, + "MinSize": 2 + } + } + }, + "awscdkawseksClusterResourceProviderNestedStackawscdkawseksClusterResourceProviderNestedStackResource9827C454": { + "Type": "AWS::CloudFormation::Stack", + "Properties": { + "TemplateURL": { + "Fn::Join": [ + "", + [ + "https://s3.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "AssetParameters3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527S3Bucket7ED14FA7" + }, + "/", + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527S3VersionKeyF4EF0775" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameters3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527S3VersionKeyF4EF0775" + } + ] + } + ] + } + ] + ] + }, + "Parameters": { + "referencetoawsstepfunctionstasksekscallintegEksClusterCreationRole00B486C4Arn": { + "Fn::GetAtt": [ + "EksClusterCreationRole75AABE42", + "Arn" + ] + }, + "referencetoawsstepfunctionstasksekscallintegAssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaS3Bucket61AA45E5Ref": { + "Ref": "AssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaS3Bucket14D204F9" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaS3VersionKey48ACDBCFRef": { + "Ref": "AssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaS3VersionKeyDE8A2F1F" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketCF9FB24DRef": { + "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKey4B465A75Ref": { + "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" + } + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "awscdkawseksKubectlProviderNestedStackawscdkawseksKubectlProviderNestedStackResourceA7AEBA6B": { + "Type": "AWS::CloudFormation::Stack", + "Properties": { + "TemplateURL": { + "Fn::Join": [ + "", + [ + "https://s3.", + { + "Ref": "AWS::Region" + }, + ".", + { + "Ref": "AWS::URLSuffix" + }, + "/", + { + "Ref": "AssetParameterscad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aeaS3BucketED16A657" + }, + "/", + { + "Fn::Select": [ + 0, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameterscad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aeaS3VersionKey37A80BBF" + } + ] + } + ] + }, + { + "Fn::Select": [ + 1, + { + "Fn::Split": [ + "||", + { + "Ref": "AssetParameterscad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aeaS3VersionKey37A80BBF" + } + ] + } + ] + } + ] + ] + }, + "Parameters": { + "referencetoawsstepfunctionstasksekscallintegEksClusterCA674174Arn": { + "Fn::GetAtt": [ + "EksClusterFAB68BDB", + "Arn" + ] + }, + "referencetoawsstepfunctionstasksekscallintegEksClusterCreationRole00B486C4Arn": { + "Fn::GetAtt": [ + "EksClusterCreationRole75AABE42", + "Arn" + ] + }, + "referencetoawsstepfunctionstasksekscallintegAssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757S3BucketB45933E2Ref": { + "Ref": "AssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757S3Bucket008DBB35" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757S3VersionKey897E2F88Ref": { + "Ref": "AssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757S3VersionKey97C3E1A0" + }, + "referencetoawsstepfunctionstasksekscallintegEksClusterDefaultVpcPrivateSubnet1Subnet3A6964EARef": { + "Ref": "EksClusterDefaultVpcPrivateSubnet1Subnet4D665A2F" + }, + "referencetoawsstepfunctionstasksekscallintegEksClusterDefaultVpcPrivateSubnet2Subnet08905A58Ref": { + "Ref": "EksClusterDefaultVpcPrivateSubnet2Subnet180B8A71" + }, + "referencetoawsstepfunctionstasksekscallintegEksClusterDefaultVpcPrivateSubnet3SubnetF3A2081ERef": { + "Ref": "EksClusterDefaultVpcPrivateSubnet3Subnet6C4BFC07" + }, + "referencetoawsstepfunctionstasksekscallintegEksClusterCA674174ClusterSecurityGroupId": { + "Fn::GetAtt": [ + "EksClusterFAB68BDB", + "ClusterSecurityGroupId" + ] + }, + "referencetoawsstepfunctionstasksekscallintegAssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3Bucket3F56B6C0Ref": { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKey14F73D88Ref": { + "Ref": "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3Bucket82DB0998Ref": { + "Ref": "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3Bucket6ABE1927" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKey5CB2DA63Ref": { + "Ref": "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyF55A2EA9" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketCF9FB24DRef": { + "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1" + }, + "referencetoawsstepfunctionstasksekscallintegAssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKey4B465A75Ref": { + "Ref": "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F" + } + } + }, + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" + }, + "Role1ABCC5F0": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Statement": [ + { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": { + "Service": { + "Fn::Join": [ + "", + [ + "states.", + { + "Ref": "AWS::Region" + }, + ".amazonaws.com" + ] + ] + } + } + } + ], + "Version": "2012-10-17" + }, + "RoleName": "stateMachineExecutionRole" + } + }, + "StateMachine2E01A3A5": { + "Type": "AWS::StepFunctions::StateMachine", + "Properties": { + "RoleArn": { + "Fn::GetAtt": [ + "Role1ABCC5F0", + "Arn" + ] + }, + "DefinitionString": { + "Fn::Join": [ + "", + [ + "{\"StartAt\":\"Call a EKS Endpoint\",\"States\":{\"Call a EKS Endpoint\":{\"End\":true,\"Type\":\"Task\",\"Resource\":\"arn:", + { + "Ref": "AWS::Partition" + }, + ":states:::eks:call\",\"Parameters\":{\"ClusterName\":\"", + { + "Ref": "EksClusterFAB68BDB" + }, + "\",\"CertificateAuthority\":\"", + { + "Fn::GetAtt": [ + "EksClusterFAB68BDB", + "CertificateAuthorityData" + ] + }, + "\",\"Endpoint\":\"", + { + "Fn::GetAtt": [ + "EksClusterFAB68BDB", + "Endpoint" + ] + }, + "\",\"Method\":\"GET\",\"Path\":\"/api/v1/namespaces/default/pods\"}}},\"TimeoutSeconds\":30}" + ] + ] + } + }, + "DependsOn": [ + "Role1ABCC5F0" + ] + } + }, + "Outputs": { + "EksClusterConfigCommand2AE6ED67": { + "Value": { + "Fn::Join": [ + "", + [ + "aws eks update-kubeconfig --name ", + { + "Ref": "EksClusterFAB68BDB" + }, + " --region ", + { + "Ref": "AWS::Region" + }, + " --role-arn ", + { + "Fn::GetAtt": [ + "EksClusterMastersRole3F49FAC3", + "Arn" + ] + } + ] + ] + } + }, + "EksClusterGetTokenCommandDF0BEDB9": { + "Value": { + "Fn::Join": [ + "", + [ + "aws eks get-token --cluster-name ", + { + "Ref": "EksClusterFAB68BDB" + }, + " --region ", + { + "Ref": "AWS::Region" + }, + " --role-arn ", + { + "Fn::GetAtt": [ + "EksClusterMastersRole3F49FAC3", + "Arn" + ] + } + ] + ] + } + }, + "stateMachineArn": { + "Value": { + "Ref": "StateMachine2E01A3A5" + } + } + }, + "Parameters": { + "AssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaS3Bucket14D204F9": { + "Type": "String", + "Description": "S3 bucket for asset \"87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dba\"" + }, + "AssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaS3VersionKeyDE8A2F1F": { + "Type": "String", + "Description": "S3 key for asset version \"87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dba\"" + }, + "AssetParameters87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dbaArtifactHash54822A43": { + "Type": "String", + "Description": "Artifact hash for asset \"87b1e2c41f84590d14f7ab8cb0f338c51d6fa3efe78943867af07fa959593dba\"" + }, + "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3BucketDC4B98B1": { + "Type": "String", + "Description": "S3 bucket for asset \"daeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1\"" + }, + "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1S3VersionKeyA495226F": { + "Type": "String", + "Description": "S3 key for asset version \"daeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1\"" + }, + "AssetParametersdaeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1ArtifactHashA521A16F": { + "Type": "String", + "Description": "Artifact hash for asset \"daeb79e3cee39c9b902dc0d5c780223e227ed573ea60976252947adab5fb2be1\"" + }, + "AssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757S3Bucket008DBB35": { + "Type": "String", + "Description": "S3 bucket for asset \"bafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757\"" + }, + "AssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757S3VersionKey97C3E1A0": { + "Type": "String", + "Description": "S3 key for asset version \"bafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757\"" + }, + "AssetParametersbafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757ArtifactHashF584A7D8": { + "Type": "String", + "Description": "Artifact hash for asset \"bafd50ae9f214e496ff8c72c6425f93dca3ccd590e20963706d5d610d9c75757\"" + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3BucketAEADE8C7": { + "Type": "String", + "Description": "S3 bucket for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68S3VersionKeyE415415F": { + "Type": "String", + "Description": "S3 key for asset version \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" + }, + "AssetParameterse9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68ArtifactHashD9A515C3": { + "Type": "String", + "Description": "Artifact hash for asset \"e9882ab123687399f934da0d45effe675ecc8ce13b40cb946f3e1d6141fe8d68\"" + }, + "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3Bucket6ABE1927": { + "Type": "String", + "Description": "S3 bucket for asset \"844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0\"" + }, + "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0S3VersionKeyF55A2EA9": { + "Type": "String", + "Description": "S3 key for asset version \"844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0\"" + }, + "AssetParameters844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0ArtifactHash1D7A2D6E": { + "Type": "String", + "Description": "Artifact hash for asset \"844c1a4b13479b359ea0e607dccb4a04b73e22cf88cf9b64feed2c5f0de213c0\"" + }, + "AssetParameters3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527S3Bucket7ED14FA7": { + "Type": "String", + "Description": "S3 bucket for asset \"3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527\"" + }, + "AssetParameters3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527S3VersionKeyF4EF0775": { + "Type": "String", + "Description": "S3 key for asset version \"3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527\"" + }, + "AssetParameters3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527ArtifactHash94EFED5E": { + "Type": "String", + "Description": "Artifact hash for asset \"3aee2b76026cd725af3b14456bf03061e83d56cce0e0354c7c8e88ee1150e527\"" + }, + "AssetParameterscad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aeaS3BucketED16A657": { + "Type": "String", + "Description": "S3 bucket for asset \"cad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aea\"" + }, + "AssetParameterscad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aeaS3VersionKey37A80BBF": { + "Type": "String", + "Description": "S3 key for asset version \"cad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aea\"" + }, + "AssetParameterscad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aeaArtifactHash11CEC9E5": { + "Type": "String", + "Description": "Artifact hash for asset \"cad1ae036643e3cd17cd3b2b30a2f9e07c1aacaf5284314f41437e4c20447aea\"" + } + } +} \ No newline at end of file diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.ts b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.ts new file mode 100644 index 0000000000000..7a3f0b70c8e9d --- /dev/null +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/eks/integ.call.ts @@ -0,0 +1,52 @@ +import * as eks from '@aws-cdk/aws-eks'; +import * as iam from '@aws-cdk/aws-iam'; +import * as sfn from '@aws-cdk/aws-stepfunctions'; +import * as cdk from '@aws-cdk/core'; +import { EksCall, HttpMethods } from '../../lib'; + +/* + * Create a state machine with a task state to use the Kubernetes API to read Kubernetes resource objects + * via a Kubernetes API endpoint. + * + * Stack verification steps: + * The generated State Machine can be executed from the CLI (or Step Functions console) + * and runs with an execution status of `Succeeded`. + * + * -- aws stepfunctions start-execution --state-machine-arn provides execution arn + * -- aws stepfunctions describe-execution --execution-arn returns a status of `Succeeded` + */ + +const app = new cdk.App(); +const stack = new cdk.Stack(app, 'aws-stepfunctions-tasks-eks-call-integ'); + +const cluster = new eks.Cluster(stack, 'EksCluster', { + version: eks.KubernetesVersion.V1_18, + clusterName: 'eksCluster', +}); + +const executionRole = new iam.Role(stack, 'Role', { + roleName: 'stateMachineExecutionRole', + assumedBy: new iam.ServicePrincipal('states.amazonaws.com'), +}); + +cluster.awsAuth.addMastersRole(executionRole); + +const callJob = new EksCall(stack, 'Call a EKS Endpoint', { + cluster: cluster, + httpMethod: HttpMethods.GET, + httpPath: '/api/v1/namespaces/default/pods', +}); + +const chain = sfn.Chain.start(callJob); + +const sm = new sfn.StateMachine(stack, 'StateMachine', { + definition: chain, + role: executionRole, + timeout: cdk.Duration.seconds(30), +}); + +new cdk.CfnOutput(stack, 'stateMachineArn', { + value: sm.stateMachineArn, +}); + +app.synth(); diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sns/integ.publish.expected.json b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sns/integ.publish.expected.json index bf407af2694d8..e5ac1d8ff84a7 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sns/integ.publish.expected.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sns/integ.publish.expected.json @@ -4,7 +4,9 @@ "Type": "AWS::SNS::Topic" }, "showmethemessages8D16BBDB": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "showmethemessagesPolicyB08B04B0": { "Type": "AWS::SQS::QueuePolicy", @@ -110,6 +112,12 @@ "StateMachine2E01A3A5": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { + "RoleArn": { + "Fn::GetAtt": [ + "StateMachineRoleB840431D", + "Arn" + ] + }, "DefinitionString": { "Fn::Join": [ "", @@ -125,12 +133,6 @@ "\",\"Message\":\"sending message over\"}},\"Final step\":{\"Type\":\"Pass\",\"End\":true}},\"TimeoutSeconds\":30}" ] ] - }, - "RoleArn": { - "Fn::GetAtt": [ - "StateMachineRoleB840431D", - "Arn" - ] } }, "DependsOn": [ diff --git a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sqs/integ.send-message.expected.json b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sqs/integ.send-message.expected.json index 7465187d65c20..5d13c58fc0a5b 100644 --- a/packages/@aws-cdk/aws-stepfunctions-tasks/test/sqs/integ.send-message.expected.json +++ b/packages/@aws-cdk/aws-stepfunctions-tasks/test/sqs/integ.send-message.expected.json @@ -1,7 +1,9 @@ { "Resources": { "showmethemessages8D16BBDB": { - "Type": "AWS::SQS::Queue" + "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", + "DeletionPolicy": "Delete" }, "StateMachineRoleB840431D": { "Type": "AWS::IAM::Role", @@ -60,6 +62,12 @@ "StateMachine2E01A3A5": { "Type": "AWS::StepFunctions::StateMachine", "Properties": { + "RoleArn": { + "Fn::GetAtt": [ + "StateMachineRoleB840431D", + "Arn" + ] + }, "DefinitionString": { "Fn::Join": [ "", @@ -75,12 +83,6 @@ "\",\"MessageBody\":\"sending message over\"}},\"Final step\":{\"Type\":\"Pass\",\"End\":true}},\"TimeoutSeconds\":30}" ] ] - }, - "RoleArn": { - "Fn::GetAtt": [ - "StateMachineRoleB840431D", - "Arn" - ] } }, "DependsOn": [ diff --git a/packages/@aws-cdk/aws-synthetics/README.md b/packages/@aws-cdk/aws-synthetics/README.md index fd2310ecaacf3..80a6defd34848 100644 --- a/packages/@aws-cdk/aws-synthetics/README.md +++ b/packages/@aws-cdk/aws-synthetics/README.md @@ -44,7 +44,7 @@ const canary = new synthetics.Canary(this, 'MyCanary', { code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')), handler: 'index.handler', }), - runtime: synthetics.Runtime.SYNTHETICS_NODEJS_2_2, + runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_0, }); ``` @@ -107,7 +107,7 @@ const canary = new Canary(this, 'MyCanary', { code: synthetics.Code.fromInline('/* Synthetics handler code */'), handler: 'index.handler', // must be 'index.handler' }), - runtime: synthetics.Runtime.SYNTHETICS_NODEJS_2_2, + runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_0, }); // To supply the code from your local filesystem: @@ -116,7 +116,7 @@ const canary = new Canary(this, 'MyCanary', { code: synthetics.Code.fromAsset(path.join(__dirname, 'canary')), handler: 'index.handler', // must end with '.handler' }), - runtime: synthetics.Runtime.SYNTHETICS_NODEJS_2_2, + runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_0, }); // To supply the code from a S3 bucket: @@ -125,7 +125,7 @@ const canary = new Canary(this, 'MyCanary', { code: synthetics.Code.fromBucket(bucket, 'canary.zip'), handler: 'index.handler', // must end with '.handler' }), - runtime: synthetics.Runtime.SYNTHETICS_NODEJS_2_2, + runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_0, }); ``` diff --git a/packages/@aws-cdk/aws-synthetics/lib/canary.ts b/packages/@aws-cdk/aws-synthetics/lib/canary.ts index 7e6d6c8b53b0f..72d4b311ce6e3 100644 --- a/packages/@aws-cdk/aws-synthetics/lib/canary.ts +++ b/packages/@aws-cdk/aws-synthetics/lib/canary.ts @@ -112,6 +112,16 @@ export class Runtime { */ public static readonly SYNTHETICS_NODEJS_2_2 = new Runtime('syn-nodejs-2.2'); + /** + * `syn-nodejs-puppeteer-3.0` includes the following: + * - Lambda runtime Node.js 12.x + * - Puppeteer-core version 5.5.0 + * - Chromium version 88.0.4298.0 + * + * @see https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Library_nodejs_puppeteer.html#CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.0 + */ + public static readonly SYNTHETICS_NODEJS_PUPPETEER_3_0 = new Runtime('syn-nodejs-puppeteer-3.0'); + /** * @param name The name of the runtime version */ diff --git a/packages/@aws-cdk/aws-synthetics/test/canary.test.ts b/packages/@aws-cdk/aws-synthetics/test/canary.test.ts index d4a505e3a492b..bb5e479e7f7e9 100644 --- a/packages/@aws-cdk/aws-synthetics/test/canary.test.ts +++ b/packages/@aws-cdk/aws-synthetics/test/canary.test.ts @@ -44,7 +44,7 @@ test('Canary can have generated name', () => { handler: 'index.handler', code: synthetics.Code.fromInline('/* Synthetics handler code */'), }), - runtime: synthetics.Runtime.SYNTHETICS_NODEJS_2_0, + runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_0, }); // THEN @@ -355,4 +355,4 @@ test('can specify custom test', () => { };`, }, }); -}); +}); \ No newline at end of file diff --git a/packages/@aws-cdk/cfnspec/build-tools/build.ts b/packages/@aws-cdk/cfnspec/build-tools/build.ts index 913605461e224..a96688ecc36f1 100644 --- a/packages/@aws-cdk/cfnspec/build-tools/build.ts +++ b/packages/@aws-cdk/cfnspec/build-tools/build.ts @@ -13,8 +13,19 @@ import { decorateResourceTypes, forEachSection, massageSpec, merge, normalize, p async function main() { const inputDir = path.join(process.cwd(), 'spec-source'); - const files = await fs.readdir(inputDir); + const outDir = path.join(process.cwd(), 'spec'); + + await generateResourceSpecification(inputDir, path.join(outDir, 'specification.json')); + await mergeSpecificationFromDirs(path.join(inputDir, 'cfn-lint'), path.join(outDir, 'cfn-lint.json')); +} + +/** + * Generate CloudFormation resource specification from sources and patches + */ +async function generateResourceSpecification(inputDir: string, outFile: string) { const spec: schema.Specification = { PropertyTypes: {}, ResourceTypes: {}, Fingerprint: '' }; + + const files = await fs.readdir(inputDir); for (const file of files.filter(n => n.endsWith('.json')).sort()) { const data = await fs.readJson(path.join(inputDir, file)); if (file.indexOf('patch') === -1) { @@ -29,9 +40,49 @@ async function main() { spec.Fingerprint = md5(JSON.stringify(normalize(spec))); - const outDir = path.join(process.cwd(), 'spec'); - await fs.mkdirp(outDir); - await fs.writeJson(path.join(outDir, 'specification.json'), spec, { spaces: 2 }); + await fs.mkdirp(path.dirname(outFile)); + await fs.writeJson(outFile, spec, { spaces: 2 }); +} + +/** + * Generate Cfnlint spec annotations from sources and patches + */ +async function mergeSpecificationFromDirs(inputDir: string, outFile: string) { + const spec: any = {}; + + for (const child of await fs.readdir(inputDir)) { + const fullPath = path.join(inputDir, child); + if (!(await fs.stat(fullPath)).isDirectory()) { continue; } + + const subspec = await loadMergedSpec(fullPath); + spec[child] = subspec; + } + + await fs.mkdirp(path.dirname(outFile)); + await fs.writeJson(outFile, spec, { spaces: 2 }); +} + +/** + * Load all files in the given directory, merge them and apply patches in the order found + * + * The base structure is always an empty object + */ +async function loadMergedSpec(inputDir: string) { + const structure: any = {}; + + const files = await fs.readdir(inputDir); + for (const file of files.filter(n => n.endsWith('.json')).sort()) { + const data = await fs.readJson(path.join(inputDir, file)); + if (file.indexOf('patch') === -1) { + // Copy properties from current object into structure, adding/overwriting whatever is found + Object.assign(structure, data); + } else { + // Apply the loaded file as a patch onto the current structure + patch(structure, data); + } + } + + return structure; } main() diff --git a/packages/@aws-cdk/cfnspec/build-tools/update-cfnlint.sh b/packages/@aws-cdk/cfnspec/build-tools/update-cfnlint.sh new file mode 100755 index 0000000000000..594e7dd165b87 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/build-tools/update-cfnlint.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -euo pipefail +scriptdir=$(cd $(dirname $0) && pwd) + +# Download (parts of) the cfn-lint repo that we use to enhance our model +intermediate="$(mktemp -d)/tmp.zip" + +url="https://github.com/aws-cloudformation/cfn-python-lint/archive/master.zip" +echo >&2 "Downloading from ${url}..." +curl -sSfL "${url}" -o ${intermediate} + +for file in StatefulResources; do + echo >&2 "${file}.json" + mkdir -p "spec-source/cfn-lint/${file}" + unzip -p "${intermediate}" cfn-python-lint-master/src/cfnlint/data/AdditionalSpecs/${file}.json > spec-source/cfn-lint/${file}/000.json +done + +echo >&2 "Done." diff --git a/packages/@aws-cdk/cfnspec/lib/_private_schema/cfn-lint.ts b/packages/@aws-cdk/cfnspec/lib/_private_schema/cfn-lint.ts new file mode 100644 index 0000000000000..4c11394888ec4 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/lib/_private_schema/cfn-lint.ts @@ -0,0 +1,23 @@ +/** + * All annotations imported from cfn-lint + */ +export interface CfnLintFileSchema { + /** + * Resource types that are in this map are stateful + * + * There is more information in the structure this maps to. + */ + readonly StatefulResources: { readonly ResourceTypes: Record }; +} + +/** + * Extra information on stateful resource types + */ +export interface CfnLintStatefulSchema { + /** + * Whether or not a Delete operation requires the resource to be empty + * + * @default false + */ + readonly DeleteRequiresEmptyResource?: boolean; +} diff --git a/packages/@aws-cdk/cfnspec/lib/index.ts b/packages/@aws-cdk/cfnspec/lib/index.ts index 8584e6877ed62..6ab020d9580cc 100644 --- a/packages/@aws-cdk/cfnspec/lib/index.ts +++ b/packages/@aws-cdk/cfnspec/lib/index.ts @@ -1,4 +1,5 @@ import * as crypto from 'crypto'; +import { CfnLintFileSchema } from './_private_schema/cfn-lint'; import * as schema from './schema'; export { schema }; export * from './canned-metrics'; @@ -38,6 +39,19 @@ export function resourceAugmentation(typeName: string): schema.ResourceAugmentat } } +/** + * Get the resource augmentations for a given type + */ +export function cfnLintAnnotations(typeName: string): schema.CfnLintResourceAnnotations { + // eslint-disable-next-line @typescript-eslint/no-require-imports + const allAnnotations: CfnLintFileSchema = require('../spec/cfn-lint.json'); + + return { + stateful: !!allAnnotations.StatefulResources.ResourceTypes[typeName], + mustBeEmptyToDelete: allAnnotations.StatefulResources.ResourceTypes[typeName]?.DeleteRequiresEmptyResource ?? false, + }; +} + /** * Return the property specification for the given resource's property */ diff --git a/packages/@aws-cdk/cfnspec/lib/schema/cfn-lint.ts b/packages/@aws-cdk/cfnspec/lib/schema/cfn-lint.ts new file mode 100644 index 0000000000000..204892f173a95 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/lib/schema/cfn-lint.ts @@ -0,0 +1,14 @@ +/** + * Additional resource information obtained from cfn-lint + */ +export interface CfnLintResourceAnnotations { + /** + * Whether or not the given resource is stateful + */ + readonly stateful: boolean; + + /** + * Whether or not a Delete operation requires the resource to be empty + */ + readonly mustBeEmptyToDelete: boolean; +} \ No newline at end of file diff --git a/packages/@aws-cdk/cfnspec/lib/schema/index.ts b/packages/@aws-cdk/cfnspec/lib/schema/index.ts index 250e5cc1edd96..e4f8720f79e82 100644 --- a/packages/@aws-cdk/cfnspec/lib/schema/index.ts +++ b/packages/@aws-cdk/cfnspec/lib/schema/index.ts @@ -3,3 +3,4 @@ export * from './property'; export * from './resource-type'; export * from './specification'; export * from './augmentation'; +export * from './cfn-lint'; diff --git a/packages/@aws-cdk/cfnspec/package.json b/packages/@aws-cdk/cfnspec/package.json index 3ab38256028bd..06c46cf79b839 100644 --- a/packages/@aws-cdk/cfnspec/package.json +++ b/packages/@aws-cdk/cfnspec/package.json @@ -3,7 +3,7 @@ "description": "The CloudFormation resource specification used by @aws-cdk packages", "version": "0.0.0", "scripts": { - "update": "cdk-build && /bin/bash build-tools/update.sh", + "update": "cdk-build && /bin/bash build-tools/update.sh && /bin/bash build-tools/update-cfnlint.sh", "update-metrics": "/bin/bash build-tools/update-metrics.sh", "build": "cdk-build && node build-tools/build", "watch": "cdk-watch", diff --git a/packages/@aws-cdk/cfnspec/spec-source/cfn-lint/StatefulResources/000.json b/packages/@aws-cdk/cfnspec/spec-source/cfn-lint/StatefulResources/000.json new file mode 100644 index 0000000000000..25c5e11c890ff --- /dev/null +++ b/packages/@aws-cdk/cfnspec/spec-source/cfn-lint/StatefulResources/000.json @@ -0,0 +1,30 @@ +{ + "ResourceTypes": { + "AWS::CloudFormation::Stack" : {}, + "AWS::Backup::BackupVault" : {}, + "AWS::Cognito::UserPool" : {}, + "AWS::DocDB::DBCluster" : {}, + "AWS::DocDB::DBInstance" : {}, + "AWS::DynamoDB::Table" : {}, + "AWS::EC2::Volume" : {}, + "AWS::EFS::FileSystem" : {}, + "AWS::EMR::Cluster" : {}, + "AWS::ElastiCache::CacheCluster" : {}, + "AWS::ElastiCache::ReplicationGroup" : {}, + "AWS::Elasticsearch::Domain" : {}, + "AWS::FSx::FileSystem" : {}, + "AWS::Logs::LogGroup" : {}, + "AWS::Neptune::DBCluster" : {}, + "AWS::Neptune::DBInstance" : {}, + "AWS::QLDB::Ledger" : {}, + "AWS::RDS::DBCluster" : {}, + "AWS::RDS::DBInstance" : {}, + "AWS::Redshift::Cluster" : {}, + "AWS::SDB::Domain" : {}, + "AWS::SQS::Queue" : {}, + "AWS::S3::Bucket" : { + "DeleteRequiresEmptyResource": true + } + } +} + diff --git a/packages/@aws-cdk/cfnspec/test/test.cfnlint-annotations.ts b/packages/@aws-cdk/cfnspec/test/test.cfnlint-annotations.ts new file mode 100644 index 0000000000000..04e0972893d12 --- /dev/null +++ b/packages/@aws-cdk/cfnspec/test/test.cfnlint-annotations.ts @@ -0,0 +1,28 @@ +import { Test } from 'nodeunit'; +import * as cfnspec from '../lib'; + +module.exports = { + 'spot-check Bucket statefulness'(test: Test) { + const anno = cfnspec.cfnLintAnnotations('AWS::S3::Bucket'); + test.equal(anno.stateful, true); + test.equal(anno.mustBeEmptyToDelete, true); + + test.done(); + }, + + 'spot-check Table statefulness'(test: Test) { + const anno = cfnspec.cfnLintAnnotations('AWS::DynamoDB::Table'); + test.equal(anno.stateful, true); + test.equal(anno.mustBeEmptyToDelete, false); + + test.done(); + }, + + 'spot-check MediaStore metrics'(test: Test) { + const anno = cfnspec.cfnLintAnnotations('AWS::MediaStore::Thingy'); + test.equal(anno.stateful, false); + + test.done(); + }, +}; + diff --git a/packages/@aws-cdk/core/lib/cfn-resource.ts b/packages/@aws-cdk/core/lib/cfn-resource.ts index c436e453cacac..9f9ee669374ed 100644 --- a/packages/@aws-cdk/core/lib/cfn-resource.ts +++ b/packages/@aws-cdk/core/lib/cfn-resource.ts @@ -320,13 +320,13 @@ export class CfnResource extends CfnRefElement { Description: this.cfnOptions.description, Metadata: ignoreEmpty(this.cfnOptions.metadata), Condition: this.cfnOptions.condition && this.cfnOptions.condition.logicalId, - }, props => { - const renderedProps = this.renderProperties(props.Properties || {}); + }, resourceDef => { + const renderedProps = this.renderProperties(resourceDef.Properties || {}); if (renderedProps) { const hasDefined = Object.values(renderedProps).find(v => v !== undefined); - props.Properties = hasDefined !== undefined ? renderedProps : undefined; + resourceDef.Properties = hasDefined !== undefined ? renderedProps : undefined; } - return deepMerge(props, this.rawOverrides); + return deepMerge(resourceDef, this.rawOverrides); }), }, }; diff --git a/packages/@aws-cdk/core/lib/nested-stack.ts b/packages/@aws-cdk/core/lib/nested-stack.ts index 873d2983c7def..c4c7de212983f 100644 --- a/packages/@aws-cdk/core/lib/nested-stack.ts +++ b/packages/@aws-cdk/core/lib/nested-stack.ts @@ -8,6 +8,7 @@ import { CfnStack } from './cloudformation.generated'; import { Duration } from './duration'; import { Lazy } from './lazy'; import { Names } from './names'; +import { RemovalPolicy } from './removal-policy'; import { IResolveContext } from './resolvable'; import { Stack } from './stack'; import { NestedStackSynthesizer } from './stack-synthesizers'; @@ -56,6 +57,17 @@ export interface NestedStackProps { * @default - notifications are not sent for this stack. */ readonly notificationArns?: string[]; + + /** + * Policy to apply when the nested stack is removed + * + * The default is `Destroy`, because all Removal Policies of resources inside the + * Nested Stack should already have been set correctly. You normally should + * not need to set this value. + * + * @default RemovalPolicy.DESTROY + */ + readonly removalPolicy?: RemovalPolicy; } /** @@ -121,6 +133,7 @@ export class NestedStack extends Stack { notificationArns: props.notificationArns, timeoutInMinutes: props.timeout ? props.timeout.toMinutes() : undefined, }); + this.resource.applyRemovalPolicy(props.removalPolicy ?? RemovalPolicy.DESTROY); this.nestedStackResource = this.resource; diff --git a/packages/@aws-cdk/core/lib/removal-policy.ts b/packages/@aws-cdk/core/lib/removal-policy.ts index 879a00f53b4f9..d815967fa2bf0 100644 --- a/packages/@aws-cdk/core/lib/removal-policy.ts +++ b/packages/@aws-cdk/core/lib/removal-policy.ts @@ -1,3 +1,28 @@ +/** + * Possible values for a resource's Removal Policy + * + * The removal policy controls what happens to the resource if it stops being + * managed by CloudFormation. This can happen in one of three situations: + * + * - The resource is removed from the template, so CloudFormation stops managing it; + * - A change to the resource is made that requires it to be replaced, so CloudFormation stops + * managing it; + * - The stack is deleted, so CloudFormation stops managing all resources in it. + * + * The Removal Policy applies to all above cases. + * + * Many stateful resources in the AWS Construct Library will accept a + * `removalPolicy` as a property, typically defaulting it to `RETAIN`. + * + * If the AWS Construct Library resource does not accept a `removalPolicy` + * argument, you can always configure it by using the escape hatch mechanism, + * as shown in the following example: + * + * ```ts + * const cfnBucket = bucket.node.findChild('Resource') as cdk.CfnResource; + * cfnBucket.applyRemovalPolicy(cdk.RemovalPolicy.DESTROY); + * ``` + */ export enum RemovalPolicy { /** * This is the default removal policy. It means that when the resource is diff --git a/packages/@aws-cdk/core/lib/resource.ts b/packages/@aws-cdk/core/lib/resource.ts index 02dcf3459a471..033ca298697fa 100644 --- a/packages/@aws-cdk/core/lib/resource.ts +++ b/packages/@aws-cdk/core/lib/resource.ts @@ -1,11 +1,18 @@ -import { Construct, IConstruct } from 'constructs'; import { ArnComponents } from './arn'; +import { CfnResource } from './cfn-resource'; import { IStringProducer, Lazy } from './lazy'; import { generatePhysicalName, isGeneratedWhenNeededMarker } from './private/physical-name-generator'; +import { Reference } from './reference'; +import { RemovalPolicy } from './removal-policy'; import { IResolveContext } from './resolvable'; import { Stack } from './stack'; import { Token, Tokenization } from './token'; -import { Reference } from './reference'; + +// v2 - leave this as a separate section so it reduces merge conflicts when compat is removed +// eslint-disable-next-line import/order +import { Construct, IConstruct } from 'constructs'; + +const RESOURCE_SYMBOL = Symbol.for('@aws-cdk/core.Resource'); /** * Represents the environment a given resource lives in. @@ -88,6 +95,13 @@ export interface ResourceProps { * A construct which represents an AWS resource. */ export abstract class Resource extends Construct implements IResource { + /** + * Check whether the given construct is a Resource + */ + public static isResource(construct: IConstruct): construct is CfnResource { + return construct !== null && typeof(construct) === 'object' && RESOURCE_SYMBOL in construct; + } + public readonly stack: Stack; public readonly env: ResourceEnvironment; @@ -111,6 +125,8 @@ export abstract class Resource extends Construct implements IResource { constructor(scope: Construct, id: string, props: ResourceProps = {}) { super(scope, id); + Object.defineProperty(this, RESOURCE_SYMBOL, { value: true }); + this.stack = Stack.of(this); this.env = { account: props.account ?? this.stack.account, @@ -161,6 +177,25 @@ export abstract class Resource extends Construct implements IResource { } } + /** + * Apply the given removal policy to this resource + * + * The Removal Policy controls what happens to this resource when it stops + * being managed by CloudFormation, either because you've removed it from the + * CDK application or because you've made a change that requires the resource + * to be replaced. + * + * The resource can be deleted (`RemovalPolicy.DELETE`), or left in your AWS + * account for data recovery and cleanup later (`RemovalPolicy.RETAIN`). + */ + public applyRemovalPolicy(policy: RemovalPolicy) { + const child = this.node.defaultChild; + if (!child || !CfnResource.isCfnResource(child)) { + throw new Error('Cannot apply RemovalPolicy: no child or not a CfnResource. Apply the removal policy on the CfnResource directly.'); + } + child.applyRemovalPolicy(policy); + } + protected generatePhysicalName(): string { return generatePhysicalName(this); } diff --git a/packages/@aws-cdk/core/test/stack.test.ts b/packages/@aws-cdk/core/test/stack.test.ts index 187f4759b2f8e..e22340073a330 100644 --- a/packages/@aws-cdk/core/test/stack.test.ts +++ b/packages/@aws-cdk/core/test/stack.test.ts @@ -641,7 +641,25 @@ describe('stack', () => { const assembly = app.synth(); expect(assembly.getStackByName(parentStack.stackName).template).toEqual({ Resources: { MyParentResource: { Type: 'Resource::Parent' } } }); expect(assembly.getStackByName(childStack.stackName).template).toEqual({ Resources: { MyChildResource: { Type: 'Resource::Child' } } }); + }); + + test('Nested Stacks are synthesized with DESTROY policy', () => { + const app = new App(); + // WHEN + const parentStack = new Stack(app, 'parent'); + const childStack = new NestedStack(parentStack, 'child'); + new CfnResource(childStack, 'ChildResource', { type: 'Resource::Child' }); + + const assembly = app.synth(); + expect(assembly.getStackByName(parentStack.stackName).template).toEqual(expect.objectContaining({ + Resources: { + childNestedStackchildNestedStackResource7408D03F: expect.objectContaining({ + Type: 'AWS::CloudFormation::Stack', + DeletionPolicy: 'Delete', + }), + }, + })); }); test('cross-stack reference (substack references parent stack)', () => { diff --git a/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts b/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts index f346644b21d35..657c3c8fcc9c6 100644 --- a/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts +++ b/packages/@aws-cdk/custom-resources/lib/provider-framework/provider.ts @@ -89,6 +89,16 @@ export interface ProviderProps { */ readonly vpcSubnets?: ec2.SubnetSelection; + /** + * Security groups to attach to the provider functions. + * + * Only used if 'vpc' is supplied + * + * @default - If `vpc` is not supplied, no security groups are attached. Otherwise, a dedicated security + * group is created for each function. + */ + readonly securityGroups?: ec2.ISecurityGroup[]; + } /** @@ -118,6 +128,7 @@ export class Provider extends Construct implements cfn.ICustomResourceProvider { private readonly logRetention?: logs.RetentionDays; private readonly vpc?: ec2.IVpc; private readonly vpcSubnets?: ec2.SubnetSelection; + private readonly securityGroups?: ec2.ISecurityGroup[]; constructor(scope: Construct, id: string, props: ProviderProps) { super(scope, id); @@ -133,6 +144,7 @@ export class Provider extends Construct implements cfn.ICustomResourceProvider { this.logRetention = props.logRetention; this.vpc = props.vpc; this.vpcSubnets = props.vpcSubnets; + this.securityGroups = props.securityGroups; const onEventFunction = this.createFunction(consts.FRAMEWORK_ON_EVENT_HANDLER_NAME); @@ -178,6 +190,7 @@ export class Provider extends Construct implements cfn.ICustomResourceProvider { logRetention: this.logRetention, vpc: this.vpc, vpcSubnets: this.vpcSubnets, + securityGroups: this.securityGroups, }); fn.addEnvironment(consts.USER_ON_EVENT_FUNCTION_ARN_ENV, this.onEventHandler.functionArn); diff --git a/packages/@aws-cdk/custom-resources/test/provider-framework/provider.test.ts b/packages/@aws-cdk/custom-resources/test/provider-framework/provider.test.ts index deed031d8909f..b60ef1a602431 100644 --- a/packages/@aws-cdk/custom-resources/test/provider-framework/provider.test.ts +++ b/packages/@aws-cdk/custom-resources/test/provider-framework/provider.test.ts @@ -8,6 +8,75 @@ import * as util from '../../lib/provider-framework/util'; import '@aws-cdk/assert/jest'; +test('security groups are applied to all framework functions', () => { + + // GIVEN + const stack = new Stack(); + + const vpc = new ec2.Vpc(stack, 'Vpc'); + const securityGroup = new ec2.SecurityGroup(stack, 'SecurityGroup', { vpc }); + + // WHEN + new cr.Provider(stack, 'MyProvider', { + onEventHandler: new lambda.Function(stack, 'OnEvent', { + code: lambda.Code.fromInline('foo'), + handler: 'index.onEvent', + runtime: lambda.Runtime.NODEJS_10_X, + }), + isCompleteHandler: new lambda.Function(stack, 'IsComplete', { + code: lambda.Code.fromInline('foo'), + handler: 'index.isComplete', + runtime: lambda.Runtime.NODEJS_10_X, + }), + vpc: vpc, + vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE }, + securityGroups: [securityGroup], + }); + + expect(stack).toHaveResourceLike('AWS::Lambda::Function', { + Handler: 'framework.onEvent', + VpcConfig: { + SecurityGroupIds: [ + { + 'Fn::GetAtt': [ + 'SecurityGroupDD263621', + 'GroupId', + ], + }, + ], + }, + }); + + expect(stack).toHaveResourceLike('AWS::Lambda::Function', { + Handler: 'framework.isComplete', + VpcConfig: { + SecurityGroupIds: [ + { + 'Fn::GetAtt': [ + 'SecurityGroupDD263621', + 'GroupId', + ], + }, + ], + }, + }); + + expect(stack).toHaveResourceLike('AWS::Lambda::Function', { + Handler: 'framework.onTimeout', + VpcConfig: { + SecurityGroupIds: [ + { + 'Fn::GetAtt': [ + 'SecurityGroupDD263621', + 'GroupId', + ], + }, + ], + }, + }); + +}); + test('vpc is applied to all framework functions', () => { // GIVEN diff --git a/packages/decdk/test/__snapshots__/synth.test.js.snap b/packages/decdk/test/__snapshots__/synth.test.js.snap index 939497257dbc5..86a1fdd32f534 100644 --- a/packages/decdk/test/__snapshots__/synth.test.js.snap +++ b/packages/decdk/test/__snapshots__/synth.test.js.snap @@ -2735,7 +2735,9 @@ exports[`pure-cfn.json: pure-cfn 1`] = ` Object { "Resources": Object { "Hello4A628BD4": Object { + "DeletionPolicy": "Delete", "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", }, "MyLogGroup": Object { "Properties": Object { @@ -2753,6 +2755,7 @@ exports[`queue-kms.json: queue-kms 1`] = ` Object { "Resources": Object { "MyQueueE6CA6235": Object { + "DeletionPolicy": "Delete", "Properties": Object { "KmsMasterKeyId": Object { "Fn::GetAtt": Array [ @@ -2762,6 +2765,7 @@ Object { }, }, "Type": "AWS::SQS::Queue", + "UpdateReplacePolicy": "Delete", }, "MyQueueKey6C31ABF3": Object { "DeletionPolicy": "Retain", diff --git a/packages/decdk/test/fixture/tsconfig.json b/packages/decdk/test/fixture/tsconfig.json index 463ae0643998b..1b7d2bae0fab0 100644 --- a/packages/decdk/test/fixture/tsconfig.json +++ b/packages/decdk/test/fixture/tsconfig.json @@ -4,6 +4,7 @@ "charset": "utf8", "declaration": true, "experimentalDecorators": true, + "incremental": true, "inlineSourceMap": true, "inlineSources": true, "lib": [ @@ -23,7 +24,9 @@ "strictNullChecks": true, "strictPropertyInitialization": true, "stripInternal": false, - "target": "ES2018" + "target": "ES2018", + "composite": false, + "tsBuildInfoFile": "tsconfig.tsbuildinfo" }, "include": [ "**/*.ts" diff --git a/tools/cfn2ts/lib/codegen.ts b/tools/cfn2ts/lib/codegen.ts index 460916dc9cfe8..9d93945c9c330 100644 --- a/tools/cfn2ts/lib/codegen.ts +++ b/tools/cfn2ts/lib/codegen.ts @@ -1,4 +1,4 @@ -import { schema } from '@aws-cdk/cfnspec'; +import { schema, cfnLintAnnotations } from '@aws-cdk/cfnspec'; import { CodeMaker } from 'codemaker'; import * as genspec from './genspec'; import { itemTypeNames, PropertyAttributeName, scalarTypeNames, SpecName } from './spec-utils'; @@ -128,7 +128,7 @@ export default class CodeGenerator { this.code.closeBlock(); this.code.line(); - this.emitValidator(resourceContext, name, spec.Properties, conversionTable); + this.emitPropertiesValidator(resourceContext, name, spec.Properties, conversionTable); this.code.line(); this.emitCloudFormationMapper(resourceContext, name, spec.Properties, conversionTable); this.emitFromCfnFactoryFunction(resourceContext, name, spec.Properties, conversionTable, false); @@ -346,6 +346,13 @@ export default class CodeGenerator { } } } + + // + // Validator + // + this.emitConstructValidator(resourceName); + + // End constructor this.code.closeBlock(); this.code.line(); @@ -388,6 +395,37 @@ export default class CodeGenerator { this.code.closeBlock(); } + /** + * Add validations for the given construct + * + * The generated code looks like this: + * + * ``` + * this.node.addValidation({ validate: () => /* validation code * / }); + * } + * ``` + */ + private emitConstructValidator(resourceType: genspec.CodeName) { + const cfnLint = cfnLintAnnotations(resourceType.specName?.fqn ?? ''); + + if (cfnLint.stateful) { + // Do a statefulness check. A deletionPolicy is required (and in normal operation an UpdateReplacePolicy + // would also be set if a user doesn't do complicated shenanigans, in which case they probably know what + // they're doing. + // + // Only do this for L1s embedded in L2s (to force L2 authors to add a way to set this policy). If we did it for all L1s: + // + // - users working at the L1 level would start getting synthesis failures when we add this feature + // - the `cloudformation-include` library that loads CFN templates to L1s would start failing when it loads + // templates that don't have DeletionPolicy set. + this.code.openBlock(`if (this.node.scope && ${CORE}.Resource.isResource(this.node.scope))`); + this.code.line('this.node.addValidation({ validate: () => this.cfnOptions.deletionPolicy === undefined'); + this.code.line(` ? [\'\\\'${resourceType.specName?.fqn}\\\' is a stateful resource type, and you must specify a Removal Policy for it. Call \\\'resource.applyRemovalPolicy()\\\'.\']`); + this.code.line(' : [] });'); + this.code.closeBlock(); + } + } + /** * Emit the function that is going to implement the IInspectable interface. * @@ -668,7 +706,7 @@ export default class CodeGenerator { * * Generated as a top-level function outside any namespace so we can hide it from library consumers. */ - private emitValidator( + private emitPropertiesValidator( resource: genspec.CodeName, typeName: genspec.CodeName, propSpecs: { [name: string]: schema.Property }, @@ -831,7 +869,7 @@ export default class CodeGenerator { this.endNamespace(typeName); this.code.line(); - this.emitValidator(resourceContext, typeName, propTypeSpec.Properties, conversionTable); + this.emitPropertiesValidator(resourceContext, typeName, propTypeSpec.Properties, conversionTable); this.code.line(); this.emitCloudFormationMapper(resourceContext, typeName, propTypeSpec.Properties, conversionTable); this.emitFromCfnFactoryFunction(resourceContext, typeName, propTypeSpec.Properties, conversionTable, true); diff --git a/yarn.lock b/yarn.lock index 7e3a5aca764f9..7b4f1bcca2efc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,18 +17,18 @@ "@babel/highlight" "^7.12.13" "@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.16.tgz#8c6ba456b23b680a6493ddcfcd9d3c3ad51cab7c" - integrity sha512-t/hHIB504wWceOeaOoONOhu+gX+hpjfeN6YRBT209X/4sibZQfSF1I0HFRRlBe97UZZosGx5XwUg1ZgNbelmNw== + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.17.tgz#993c5e893333107a2815d8e0d73a2c3755e280b2" + integrity sha512-V3CuX1aBywbJvV2yzJScRxeiiw0v2KZZYYE3giywxzFJL13RiyPjaaDwhDnxmgFTTS7FgvM2ijr4QmKNIu0AtQ== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.15" - "@babel/helper-module-transforms" "^7.12.13" - "@babel/helpers" "^7.12.13" - "@babel/parser" "^7.12.16" + "@babel/generator" "^7.12.17" + "@babel/helper-module-transforms" "^7.12.17" + "@babel/helpers" "^7.12.17" + "@babel/parser" "^7.12.17" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -37,12 +37,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.12.13", "@babel/generator@^7.12.15", "@babel/generator@^7.4.0": - version "7.12.15" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.15.tgz#4617b5d0b25cc572474cc1aafee1edeaf9b5368f" - integrity sha512-6F2xHxBiFXWNSGb7vyCUTBF8RCLY66rS0zEPcP8t/nQyXjha5EuK4z7H5o7fWG8B4M7y6mqVWq1J+1PuwRhecQ== +"@babel/generator@^7.12.17", "@babel/generator@^7.4.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.17.tgz#9ef1dd792d778b32284411df63f4f668a9957287" + integrity sha512-DSA7ruZrY4WI8VxuS1jWSRezFnghEoYEFrZcw9BizQRmOZiUsiHl59+qEARGPqPikwA/GPTyRCi7isuCK/oyqg== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.12.17" jsesc "^2.5.1" source-map "^0.5.0" @@ -63,11 +63,11 @@ "@babel/types" "^7.12.13" "@babel/helper-member-expression-to-functions@^7.12.13": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.16.tgz#41e0916b99f8d5f43da4f05d85f4930fa3d62b22" - integrity sha512-zYoZC1uvebBFmj1wFAlXwt35JLEgecefATtKp20xalwEK8vHAixLBXTGxNrVGEmTT+gzOThUgr8UEdgtalc1BQ== + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.17.tgz#f82838eb06e1235307b6d71457b6670ff71ee5ac" + integrity sha512-Bzv4p3ODgS/qpBE0DiJ9qf5WxSmrQ8gVTe8ClMfwwsY2x/rhykxxy3bXzG7AGTnPB2ij37zGJ/Q/6FruxHxsxg== dependencies: - "@babel/types" "^7.12.13" + "@babel/types" "^7.12.17" "@babel/helper-module-imports@^7.12.13": version "7.12.13" @@ -76,10 +76,10 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-module-transforms@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.13.tgz#01afb052dcad2044289b7b20beb3fa8bd0265bea" - integrity sha512-acKF7EjqOR67ASIlDTupwkKM1eUisNAjaSduo5Cz+793ikfnpe7p4Q7B7EWU2PCoSTPWsQkR7hRUWEIZPiVLGA== +"@babel/helper-module-transforms@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.17.tgz#7c75b987d6dfd5b48e575648f81eaac891539509" + integrity sha512-sFL+p6zOCQMm9vilo06M4VHuTxUAwa6IxgL56Tq1DVtA0ziAGTH1ThmJq7xwPqdQlgAbKX3fb0oZNbtRIyA5KQ== dependencies: "@babel/helper-module-imports" "^7.12.13" "@babel/helper-replace-supers" "^7.12.13" @@ -87,8 +87,8 @@ "@babel/helper-split-export-declaration" "^7.12.13" "@babel/helper-validator-identifier" "^7.12.11" "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" lodash "^4.17.19" "@babel/helper-optimise-call-expression@^7.12.13": @@ -132,14 +132,14 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== -"@babel/helpers@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.13.tgz#3c75e993632e4dadc0274eae219c73eb7645ba47" - integrity sha512-oohVzLRZ3GQEk4Cjhfs9YkJA4TdIDTObdBEZGrd6F/T0GPSnuV6l22eMcxlvcvzVIPH3VTtxbseudM1zIE+rPQ== +"@babel/helpers@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.17.tgz#71e03d2981a6b5ee16899964f4101dc8471d60bc" + integrity sha512-tEpjqSBGt/SFEsFikKds1sLNChKKGGR17flIgQKXH4fG6m9gTgl3gnOC1giHNyaBCSKuTfxaSzHi7UnvqiVKxg== dependencies: "@babel/template" "^7.12.13" - "@babel/traverse" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/traverse" "^7.12.17" + "@babel/types" "^7.12.17" "@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": version "7.12.13" @@ -150,10 +150,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.16", "@babel/parser@^7.4.3": - version "7.12.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.16.tgz#cc31257419d2c3189d394081635703f549fc1ed4" - integrity sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.12.17", "@babel/parser@^7.4.3": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.17.tgz#bc85d2d47db38094e5bb268fc761716e7d693848" + integrity sha512-r1yKkiUTYMQ8LiEI0UcQx5ETw5dpTLn9wijn9hk6KkTtOK95FndDN10M+8/s6k/Ymlbivw0Av9q4SlgF80PtHg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -248,25 +248,25 @@ "@babel/parser" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13", "@babel/traverse@^7.4.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.13.tgz#689f0e4b4c08587ad26622832632735fb8c4e0c0" - integrity sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.13", "@babel/traverse@^7.12.17", "@babel/traverse@^7.4.3": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.17.tgz#40ec8c7ffb502c4e54c7f95492dc11b88d718619" + integrity sha512-LGkTqDqdiwC6Q7fWSwQoas/oyiEYw6Hqjve5KOSykXkmFJFqzvGMb9niaUEag3Rlve492Mkye3gLw9FTv94fdQ== dependencies: "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.12.13" + "@babel/generator" "^7.12.17" "@babel/helper-function-name" "^7.12.13" "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" + "@babel/parser" "^7.12.17" + "@babel/types" "^7.12.17" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.13.tgz#8be1aa8f2c876da11a9cf650c0ecf656913ad611" - integrity sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ== +"@babel/types@^7.0.0", "@babel/types@^7.12.13", "@babel/types@^7.12.17", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.0": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963" + integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ== dependencies: "@babel/helper-validator-identifier" "^7.12.11" lodash "^4.17.19" @@ -1330,11 +1330,6 @@ "@octokit/types" "^6.0.3" universal-user-agent "^6.0.0" -"@octokit/openapi-types@^4.0.3": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-4.0.4.tgz#96fcce11e929802898646205ac567e5df592f82b" - integrity sha512-31zY8JIuz3h6RAFOnyA8FbOwhILILiBu1qD81RyZZWY7oMBhIdBn6MaAmnnptLhB4jk0g50nkQkUVP4kUzppcA== - "@octokit/openapi-types@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-5.1.0.tgz#661fd03c7d55fbcb0a0937d3353d87dea012f52c" @@ -1353,11 +1348,11 @@ "@octokit/types" "^2.0.1" "@octokit/plugin-paginate-rest@^2.6.2": - version "2.9.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.9.1.tgz#e9bb34a89b7ed5b801f1c976feeb9b0078ecd201" - integrity sha512-8wnuWGjwDIEobbBet2xAjZwgiMVTgIer5wBsnGXzV3lJ4yqphLU2FEMpkhSrDx7y+WkZDfZ+V+1cFMZ1mAaFag== + version "2.10.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.10.0.tgz#5925156d809c94b7bfc47b28e17488415548fa67" + integrity sha512-71OsKBSMcQEu/6lfVbhv5C5ikU1rn10rKot/WiV7do7fyfElQ2eCUQFogHPbj0ci5lnKAjvahOiMAr6lcvL8Qw== dependencies: - "@octokit/types" "^6.8.0" + "@octokit/types" "^6.10.0" "@octokit/plugin-request-log@^1.0.0", "@octokit/plugin-request-log@^1.0.2": version "1.0.3" @@ -1451,14 +1446,7 @@ dependencies: "@types/node" ">= 8" -"@octokit/types@^6.0.3", "@octokit/types@^6.7.1", "@octokit/types@^6.8.0": - version "6.8.5" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.8.5.tgz#797dfdad8c75718e97dc687d4c9fc49200ca8d17" - integrity sha512-ZsQawftZoi0kSF2pCsdgLURbOjtVcHnBOXiSxBKSNF56CRjARt5rb/g8WJgqB8vv4lgUEHrv06EdDKYQ22vA9Q== - dependencies: - "@octokit/openapi-types" "^4.0.3" - -"@octokit/types@^6.10.0": +"@octokit/types@^6.0.3", "@octokit/types@^6.10.0", "@octokit/types@^6.7.1": version "6.10.0" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.10.0.tgz#243faa864b0955f574012d52e179de38ac9ebafe" integrity sha512-aMDo10kglofejJ96edCBIgQLVuzMDyjxmhdgEcoUUD64PlHYSrNsAGqN0wZtoiX4/PCQ3JLA50IpkP1bcKD/cA== @@ -1657,9 +1645,9 @@ integrity sha1-m6It838H43gP/4Ux0aOOYz+UV6U= "@types/node@*", "@types/node@>= 8": - version "14.14.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.28.tgz#cade4b64f8438f588951a6b35843ce536853f25b" - integrity sha512-lg55ArB+ZiHHbBBttLpzD07akz0QPrZgUODNakeC09i62dnrywr9mFErHuaPlB6I7z+sEbK+IYmplahvplCj2g== + version "14.14.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== "@types/node@^10.17.54": version "10.17.54" @@ -1950,9 +1938,9 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: uri-js "^4.2.2" ajv@^7.0.2: - version "7.1.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.0.tgz#f982ea7933dc7f1012eae9eec5a86687d805421b" - integrity sha512-svS9uILze/cXbH0z2myCK2Brqprx/+JJYK5pHicT/GQiBfzzhUVAIT6MwqJg8y4xV/zoGsUeuPuwtoiKSGE15g== + version "7.1.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84" + integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -2031,6 +2019,11 @@ anymatch@^3.0.3: normalize-path "^3.0.0" picomatch "^2.0.4" +app-root-path@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-2.2.1.tgz#d0df4a682ee408273583d43f6f79e9892624bc9a" + integrity sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA== + append-transform@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-1.0.0.tgz#046a52ae582a228bd72f58acfbe2967c678759ab" @@ -2150,14 +2143,14 @@ array-ify@^1.0.0: integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= array-includes@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" - integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== + version "3.1.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" + integrity sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - get-intrinsic "^1.0.1" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.1.1" is-string "^1.0.5" array-union@^1.0.2: @@ -2271,7 +2264,7 @@ aws-sdk-mock@^5.1.0: sinon "^9.0.1" traverse "^0.6.6" -aws-sdk@^2.637.0, aws-sdk@^2.848.0: +aws-sdk@^2.596.0, aws-sdk@^2.637.0, aws-sdk@^2.848.0: version "2.848.0" resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.848.0.tgz#5e7706ddd30a55a2d5a5b64c29682a757607ee64" integrity sha512-c/e5kaEFl+9aYkrYDkmu5mSZlL+EfP6DnBOMD06fH12gIsaFSMBGtbsDTHABhvSu++LxeI1dJAD148O17MuZvg== @@ -2997,9 +2990,9 @@ constructs@10.0.0-pre.5: integrity sha512-aloDTVirK+ec6sOOtRXYyyQC3zEUYUhLcijNkUs52ltgw1Dwu6OrKtsXIKjirhqvbZte1swtLmS0Xef2mkxz7Q== constructs@^3.2.0: - version "3.3.21" - resolved "https://registry.yarnpkg.com/constructs/-/constructs-3.3.21.tgz#1290fbebe8716e729a6ac2a47118b58b8f7c4461" - integrity sha512-FsdsSAJlmlWSiWWuKTTP/a0SpEtRMM2w0P5lsJxvP4/42AOJOSmqckDyrr9WkESiaX94WnnK9khoVWGlBzkvNA== + version "3.3.29" + resolved "https://registry.yarnpkg.com/constructs/-/constructs-3.3.29.tgz#42d2fbc0d872a47701a70583a0d4356a3f11955c" + integrity sha512-rGQzkq2M/qKZ0hMEtt4YPpsZKOwzmiyAQx3PqexXXsjdVnTqEfIwQuDpc+1jP6CtaBHl7rR6CxQcfsP5DmaERw== contains-path@^0.1.0: version "0.1.0" @@ -3176,15 +3169,15 @@ conventional-commits-filter@^2.0.2, conventional-commits-filter@^2.0.7: modify-values "^1.0.0" conventional-commits-parser@^3.0.3, conventional-commits-parser@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.0.tgz#9e261b139ca4b7b29bcebbc54460da36894004ca" - integrity sha512-XmJiXPxsF0JhAKyfA2Nn+rZwYKJ60nanlbSWwwkGwLQFbugsc0gv1rzc7VbbUWAzJfR1qR87/pNgv9NgmxtBMQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" + integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== dependencies: JSONStream "^1.0.4" is-text-path "^1.0.1" lodash "^4.17.15" meow "^8.0.0" - split2 "^2.0.0" + split2 "^3.0.0" through2 "^4.0.0" trim-off-newlines "^1.0.0" @@ -3699,6 +3692,16 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" +dotenv-json@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dotenv-json/-/dotenv-json-1.0.0.tgz#fc7f672aafea04bed33818733b9f94662332815c" + integrity sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ== + +dotenv@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + dotgitignore@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/dotgitignore/-/dotgitignore-2.1.0.tgz#a4b15a4e4ef3cf383598aaf1dfa4a04bcc089b7b" @@ -3870,10 +3873,10 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -esbuild@^0.8.49: - version "0.8.49" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.49.tgz#3d33f71b3966611f822cf4c838115f3fbd16def2" - integrity sha512-itiFVYv5UZz4NooO7/Y0bRGVDGz/M/cxKbl6zyNI5pnKaz1mZjvZXAFhhDVz6rGCmcdTKj5oag6rh8DaaSSmfQ== +esbuild@^0.8.50: + version "0.8.50" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.8.50.tgz#ebf24fde0cdad1a369789dd6fd7a820b0a01e46c" + integrity sha512-oidFLXssA7IccYzkqLVZSqNJDwDq8Mh/vqvrW+3fPWM7iUiC5O2bCllhnO8+K9LlyL/2Z6n+WwRJAz9fqSIVRg== escalade@^3.1.1: version "3.1.1" @@ -3907,6 +3910,11 @@ escodegen@^1.14.1, escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" +eslint-config-standard@^14.1.1: + version "14.1.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" + integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== + eslint-import-resolver-node@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" @@ -3934,6 +3942,14 @@ eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + eslint-plugin-import@^2.22.1: version "2.22.1" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" @@ -3960,11 +3976,33 @@ eslint-plugin-jest@^24.1.5: dependencies: "@typescript-eslint/experimental-utils" "^4.0.1" +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz#61485df2a359e03149fdafc0a68b0e030ad2ac45" + integrity sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ== + eslint-plugin-rulesdir@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-rulesdir/-/eslint-plugin-rulesdir-0.1.0.tgz#ad144d7e98464fda82963eff3fab331aecb2bf08" integrity sha1-rRRNfphGT9qClj7/P6szGuyyvwg= +eslint-plugin-standard@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz#0c3bf3a67e853f8bbbc580fb4945fbf16f41b7c5" + integrity sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ== + eslint-scope@^5.0.0, eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -4314,9 +4352,9 @@ figures@^3.1.0: escape-string-regexp "^1.0.5" file-entry-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" - integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" @@ -4617,7 +4655,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0: +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== @@ -5096,7 +5134,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.4, ignore@^5.1.8, ignore@~5.1.8: +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.1.8, ignore@~5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== @@ -6378,6 +6416,24 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +lambda-leak@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lambda-leak/-/lambda-leak-2.0.0.tgz#771985d3628487f6e885afae2b54510dcfb2cd7e" + integrity sha1-dxmF02KEh/boha+uK1RRDc+yzX4= + +lambda-tester@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/lambda-tester/-/lambda-tester-3.6.0.tgz#ceb7d4f4f0da768487a05cff37dcd088508b5247" + integrity sha512-F2ZTGWCLyIR95o/jWK46V/WnOCFAEUG/m/V7/CLhPJ7PCM+pror1rZ6ujP3TkItSGxUfpJi0kqwidw+M/nEqWw== + dependencies: + app-root-path "^2.2.1" + dotenv "^8.0.0" + dotenv-json "^1.0.0" + lambda-leak "^2.0.0" + semver "^6.1.1" + uuid "^3.3.2" + vandium-utils "^1.1.1" + lazystream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" @@ -6907,17 +6963,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.45.0: - version "1.45.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" - integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +mime-db@1.46.0: + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.28" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" - integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== + version "2.1.29" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" + integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== dependencies: - mime-db "1.45.0" + mime-db "1.46.0" mimic-fn@^1.0.0: version "1.2.0" @@ -7147,9 +7203,9 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== nise@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/nise/-/nise-4.0.4.tgz#d73dea3e5731e6561992b8f570be9e363c4512dd" - integrity sha512-bTTRUNlemx6deJa+ZyoCUTRvH3liK5+N6VQZ4NIw90AgDXY6iPnsqplNFf6STcj+ePk0H/xqxnP75Lr0J0Fq3A== + version "4.1.0" + resolved "https://registry.yarnpkg.com/nise/-/nise-4.1.0.tgz#8fb75a26e90b99202fa1e63f448f58efbcdedaf6" + integrity sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA== dependencies: "@sinonjs/commons" "^1.7.0" "@sinonjs/fake-timers" "^6.0.0" @@ -7462,11 +7518,11 @@ object-inspect@^1.9.0: integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-is@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" - integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" object-keys@^1.0.12, object-keys@^1.1.1: @@ -7492,13 +7548,13 @@ object.assign@^4.1.2: object-keys "^1.1.1" object.getownpropertydescriptors@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" - integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== + version "2.1.2" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" + integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== dependencies: - call-bind "^1.0.0" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" + es-abstract "^1.18.0-next.2" object.pick@^1.3.0: version "1.3.0" @@ -8578,7 +8634,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -8732,7 +8788,7 @@ semver@7.x, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: +semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.2.0, semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== @@ -10092,6 +10148,11 @@ validate-npm-package-name@^3.0.0: dependencies: builtins "^1.0.3" +vandium-utils@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vandium-utils/-/vandium-utils-1.2.0.tgz#44735de4b7641a05de59ebe945f174e582db4f59" + integrity sha1-RHNd5LdkGgXeWevpRfF05YLbT1k= + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -10435,9 +10496,9 @@ yapool@^1.0.0: integrity sha1-9pPymjFbUNmp2iZGp6ZkXJaYW2o= yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: - version "20.2.5" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.5.tgz#5d37729146d3f894f39fc94b6796f5b239513186" - integrity sha512-jYRGS3zWy20NtDtK2kBgo/TlAoy5YUuhD9/LZ7z7W4j1Fdw2cqD0xEEclf8fxc8xjD6X5Qr+qQQwCEsP8iRiYg== + version "20.2.6" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.6.tgz#69f920addf61aafc0b8b89002f5d66e28f2d8b20" + integrity sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA== yargs-parser@^13.0.0, yargs-parser@^13.1.2: version "13.1.2" From cc1f6866712de9ae99cf6dc54ce353aac5734c88 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 25 Feb 2021 08:51:47 +0000 Subject: [PATCH 059/304] expire feature flags DOCKER_IGNORE_SUPPORT, ENABLE_DIFF_NO_FAIL_CONTEXT, S3_GRANT_WRITE_WITHOUT_ACL --- .../@aws-cdk/aws-ecr-assets/test/integ.assets-docker.ts | 7 +------ .../aws-ecr-assets/test/integ.nested-stacks-docker.ts | 7 +------ packages/@aws-cdk/cx-api/lib/features.ts | 3 +++ 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/packages/@aws-cdk/aws-ecr-assets/test/integ.assets-docker.ts b/packages/@aws-cdk/aws-ecr-assets/test/integ.assets-docker.ts index d6c4c2aac75b7..9212e350f8c8c 100644 --- a/packages/@aws-cdk/aws-ecr-assets/test/integ.assets-docker.ts +++ b/packages/@aws-cdk/aws-ecr-assets/test/integ.assets-docker.ts @@ -1,14 +1,9 @@ import * as path from 'path'; import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; -import * as cxapi from '@aws-cdk/cx-api'; import * as assets from '../lib'; -const app = new cdk.App({ - context: { - [cxapi.DOCKER_IGNORE_SUPPORT]: true, - }, -}); +const app = new cdk.App(); const stack = new cdk.Stack(app, 'integ-assets-docker'); const asset = new assets.DockerImageAsset(stack, 'DockerImage', { diff --git a/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.ts b/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.ts index 394fedc07ddf6..83d71192e18f4 100644 --- a/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.ts +++ b/packages/@aws-cdk/aws-ecr-assets/test/integ.nested-stacks-docker.ts @@ -1,7 +1,6 @@ import * as path from 'path'; import * as iam from '@aws-cdk/aws-iam'; import { App, CfnOutput, NestedStack, NestedStackProps, Stack, StackProps } from '@aws-cdk/core'; -import * as cxapi from '@aws-cdk/cx-api'; import { Construct } from 'constructs'; import * as ecr_assets from '../lib'; @@ -28,10 +27,6 @@ class TheParentStack extends Stack { } } -const app = new App({ - context: { - [cxapi.DOCKER_IGNORE_SUPPORT]: true, - }, -}); +const app = new App(); new TheParentStack(app, 'nested-stacks-docker'); app.synth(); diff --git a/packages/@aws-cdk/cx-api/lib/features.ts b/packages/@aws-cdk/cx-api/lib/features.ts index 53b11be31e6f9..4b131b6e44d87 100644 --- a/packages/@aws-cdk/cx-api/lib/features.ts +++ b/packages/@aws-cdk/cx-api/lib/features.ts @@ -120,8 +120,11 @@ export const FUTURE_FLAGS: { [key: string]: any } = { * and block usages of old feature flags in the new major version of CDK. */ export const FUTURE_FLAGS_EXPIRED: string[] = [ + DOCKER_IGNORE_SUPPORT, + ENABLE_DIFF_NO_FAIL_CONTEXT, ENABLE_STACK_NAME_DUPLICATES_CONTEXT, KMS_DEFAULT_KEY_POLICIES, + S3_GRANT_WRITE_WITHOUT_ACL, SECRETS_MANAGER_PARSE_OWNED_SECRET_NAME, ]; From 450a981e875c15f872fac76692ab9b0779103b76 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 25 Feb 2021 09:28:54 +0000 Subject: [PATCH 060/304] fix one more missed merge conflict --- .../test/integ.user-pool-domain-cfdist.expected.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json index 38e5f4ee9e0fc..b73cdc2ddb344 100644 --- a/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json +++ b/packages/@aws-cdk/aws-cognito/test/integ.user-pool-domain-cfdist.expected.json @@ -146,11 +146,7 @@ "Properties": { "Code": { "S3Bucket": { -<<<<<<< HEAD "Ref": "AssetParameters0625b1566df06e0ffd948f0f65f97a3d22d48242e66196d3f72b480f5309b343S3Bucket65227904" -======= - "Ref": "AssetParametersb64b129569a5ac7a9abf88a18ac0b504d1fb1208872460476ed3fd435830eb94S3Bucket38F1BB8E" ->>>>>>> origin/v2-main }, "S3Key": { "Fn::Join": [ From 982ef7b63413daa76841cbc221eb0f56a4ec25eb Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 25 Feb 2021 10:11:49 +0000 Subject: [PATCH 061/304] asset hashes didn't merge correctly --- .../@aws-cdk/aws-ecs/test/container-definition.test.ts | 10 +++++----- .../aws-ecs/test/ec2/ec2-task-definition.test.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/test/container-definition.test.ts b/packages/@aws-cdk/aws-ecs/test/container-definition.test.ts index 53d0c78a9e5a9..0e42a0aecc381 100644 --- a/packages/@aws-cdk/aws-ecs/test/container-definition.test.ts +++ b/packages/@aws-cdk/aws-ecs/test/container-definition.test.ts @@ -1672,7 +1672,7 @@ describe('container definition', () => { { Ref: 'AWS::Region' }, '.', { Ref: 'AWS::URLSuffix' }, - '/aws-cdk/assets:d3fe8de91df2c894af1e8579a7836fb42895f9d2e30c7547ebdff4010f09c6d4', + '/aws-cdk/assets:b2c69bfbfe983b634456574587443159b3b7258849856a118ad3d2772238f1a5', ], ], }, @@ -1728,11 +1728,11 @@ describe('container definition', () => { const asm = app.synth(); expect(asm.getStackArtifact(stack.artifactId).assets[0]).toEqual({ repositoryName: 'aws-cdk/assets', - imageTag: '9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', - id: '9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', + imageTag: 'ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', + id: 'ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', packaging: 'container-image', - path: 'asset.9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', - sourceHash: '9cbc7bfe2ac4cacb5787605711847819aacb1d9227b1113090a022d8cd74752c', + path: 'asset.ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', + sourceHash: 'ce3419d7c5d2d44e2789b13ccbd2d54ddf682557669f68bcee753231f5f1c0a5', target: 'build-target', file: 'index.py', }); diff --git a/packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts b/packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts index 87f39e4889a83..60c39d2103daf 100644 --- a/packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts +++ b/packages/@aws-cdk/aws-ecs/test/ec2/ec2-task-definition.test.ts @@ -619,7 +619,7 @@ describe('ec2 task definition', () => { { Ref: 'AWS::URLSuffix', }, - '/aws-cdk/assets:d3fe8de91df2c894af1e8579a7836fb42895f9d2e30c7547ebdff4010f09c6d4', + '/aws-cdk/assets:b2c69bfbfe983b634456574587443159b3b7258849856a118ad3d2772238f1a5', ], ], }, From 8c9b08a46942b1b4e711459af788a5d3740409ee Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 25 Feb 2021 10:51:26 +0000 Subject: [PATCH 062/304] fix incorrect merges in rds --- packages/@aws-cdk/aws-rds/test/instance.test.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/@aws-cdk/aws-rds/test/instance.test.ts b/packages/@aws-cdk/aws-rds/test/instance.test.ts index dbfe409803da7..1b73fa6de85d7 100644 --- a/packages/@aws-cdk/aws-rds/test/instance.test.ts +++ b/packages/@aws-cdk/aws-rds/test/instance.test.ts @@ -1281,6 +1281,10 @@ test.each([ [cdk.RemovalPolicy.SNAPSHOT, 'Snapshot', ABSENT], [cdk.RemovalPolicy.DESTROY, 'Delete', ABSENT], ])('if Instance RemovalPolicy is \'%s\', the instance has DeletionPolicy \'%s\' and the DBSubnetGroup has \'%s\'', (instanceRemovalPolicy, instanceValue, subnetValue) => { + // GIVEN + stack = new cdk.Stack(); + vpc = new ec2.Vpc(stack, 'VPC'); + // WHEN new rds.DatabaseInstance(stack, 'Instance', { engine: rds.DatabaseInstanceEngine.mysql({ @@ -1292,13 +1296,13 @@ test.each([ }); // THEN - expect(stack).to(haveResourceLike('AWS::RDS::DBInstance', { + expect(stack).toHaveResourceLike('AWS::RDS::DBInstance', { DeletionPolicy: instanceValue, UpdateReplacePolicy: instanceValue, - }, ResourcePart.CompleteDefinition)); + }, ResourcePart.CompleteDefinition); - expect(stack).to(haveResourceLike('AWS::RDS::DBSubnetGroup', { + expect(stack).toHaveResourceLike('AWS::RDS::DBSubnetGroup', { DeletionPolicy: subnetValue, UpdateReplacePolicy: subnetValue, - }, ResourcePart.CompleteDefinition)); + }, ResourcePart.CompleteDefinition); }); From 5fc8c67a1e889d985b2c5eb914023cb44a03234d Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 3 Mar 2021 16:28:16 +0200 Subject: [PATCH 063/304] chore(release): 2.0.0-alpha.6 (#13364) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.6/CHANGELOG.md) --- CHANGELOG.v2.md | 35 +++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index b78b3c9f1e1b1..886df1dced77b 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,41 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.6](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2021-03-03) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **ecs-patterns:** ** the desiredCount property stored on the above constructs will be optional, allowing them to be undefined. This is enabled through the `@aws-cdk/aws-ecs-patterns:removeDefaultDesiredCount` feature flag. We would recommend all aws-cdk users to set the `REMOVE_DEFAULT_DESIRED_COUNT` flag to true for all of their existing applications. + +Fixes: https://github.com/aws/aws-cdk/issues/12990 +* **aws-appsync:** RdsDataSource now takes a ServerlessCluster instead of a DatabaseCluster + +### Features + +* **apigateway:** integrate with aws services in a different region ([#13251](https://github.com/aws/aws-cdk/issues/13251)) ([d942699](https://github.com/aws/aws-cdk/commit/d9426996c07ff909993594ed91cfcf2b5761414b)), closes [#7009](https://github.com/aws/aws-cdk/issues/7009) +* **aws-s3:** adds s3 bucket AWS FSBP option ([#12804](https://github.com/aws/aws-cdk/issues/12804)) ([b9cdd52](https://github.com/aws/aws-cdk/commit/b9cdd52274eca55940c65b830939132d0e074365)), closes [#10969](https://github.com/aws/aws-cdk/issues/10969) +* **cfnspec:** cloudformation spec v29.0.0 ([#13249](https://github.com/aws/aws-cdk/issues/13249)) ([6318e26](https://github.com/aws/aws-cdk/commit/6318e2632297783bc8b5b2609bba096dd83a1113)) +* **cli:** Configurable --change-set-name CLI flag ([#13024](https://github.com/aws/aws-cdk/issues/13024)) ([18184df](https://github.com/aws/aws-cdk/commit/18184df05f5b8478ef9cae1285e45e61a0833822)), closes [#11075](https://github.com/aws/aws-cdk/issues/11075) [/github.com/aws/aws-cdk/pull/12683#issuecomment-778465771](https://github.com/aws//github.com/aws/aws-cdk/pull/12683/issues/issuecomment-778465771) +* **ecs-patterns:** remove default desiredCount to align with cfn behaviour (under feature flag) ([#13130](https://github.com/aws/aws-cdk/issues/13130)) ([a9caa45](https://github.com/aws/aws-cdk/commit/a9caa455b708e08f1cf2d366ac32892d4faa59b4)) +* **elasticloadbalancingv2:** Add support for application cookies ([#13142](https://github.com/aws/aws-cdk/issues/13142)) ([23385dd](https://github.com/aws/aws-cdk/commit/23385ddeb0decd227a0104d7b0aff06939acaad9)) +* **lambda:** code signing config ([#12656](https://github.com/aws/aws-cdk/issues/12656)) ([778ea27](https://github.com/aws/aws-cdk/commit/778ea2759a8a4504dc232eb6b1d77a38f8ee7aef)), closes [#12216](https://github.com/aws/aws-cdk/issues/12216) +* **stepfunctions-tasks:** add EKS call to SFN-tasks ([#12779](https://github.com/aws/aws-cdk/issues/12779)) ([296a10d](https://github.com/aws/aws-cdk/commit/296a10d76a9f6fc2a374d1a6461c460bcc3eeb79)) +* **synthetics:** Update CloudWatch Synthetics NodeJS runtimes ([#12907](https://github.com/aws/aws-cdk/issues/12907)) ([6aac3b6](https://github.com/aws/aws-cdk/commit/6aac3b6a9bb1586ee16e7a85ca657b544d0f8304)), closes [#12906](https://github.com/aws/aws-cdk/issues/12906) + + +### Bug Fixes + +* **appsync:** revert to allow resolver creation from data source ([#12973](https://github.com/aws/aws-cdk/issues/12973)) ([d35f032](https://github.com/aws/aws-cdk/commit/d35f03226d6d7fb5be246b4d3584ee9205b0ef2d)), closes [#12635](https://github.com/aws/aws-cdk/issues/12635) [#11522](https://github.com/aws/aws-cdk/issues/11522) +* **aws-appsync:** use serverlessCluster on rdsDataSource ([#13206](https://github.com/aws/aws-cdk/issues/13206)) ([45cf387](https://github.com/aws/aws-cdk/commit/45cf3873fb48d4043e7a22284d36695ea6bde6ef)), closes [#12567](https://github.com/aws/aws-cdk/issues/12567) +* **custom-resources:** unable to use a resource attributes as dictionary keys in AwsCustomResource ([#13074](https://github.com/aws/aws-cdk/issues/13074)) ([3cb3104](https://github.com/aws/aws-cdk/commit/3cb31043a42b035f6dcd2a318836d4bfc4973151)), closes [#13063](https://github.com/aws/aws-cdk/issues/13063) +* **eks:** `KubectlProvider` creates un-necessary security group ([#13178](https://github.com/aws/aws-cdk/issues/13178)) ([c5e8b6d](https://github.com/aws/aws-cdk/commit/c5e8b6df1e5f0359d51d025edcc68508ab5daef1)) +* **lambda-nodejs:** 'must use "outdir"' error with spaces in paths ([#13268](https://github.com/aws/aws-cdk/issues/13268)) ([09723f5](https://github.com/aws/aws-cdk/commit/09723f58ed3034fc2cb46316e6d798cb8f2bf96e)), closes [#13210](https://github.com/aws/aws-cdk/issues/13210) +* **lambda-nodejs:** invalid sample in documentation ([#12404](https://github.com/aws/aws-cdk/issues/12404)) ([520c263](https://github.com/aws/aws-cdk/commit/520c263ca3c6b0ea7d9c09c23e509a3373ee2b8a)) +* **lambda-python:** asset hash is non-deterministic ([#12984](https://github.com/aws/aws-cdk/issues/12984)) ([37debc0](https://github.com/aws/aws-cdk/commit/37debc0513c5174ca3d918fce94a138d5d34b586)), closes [#12770](https://github.com/aws/aws-cdk/issues/12770) [#12684](https://github.com/aws/aws-cdk/issues/12684) +* incorrect peerDependency on "constructs" ([#13255](https://github.com/aws/aws-cdk/issues/13255)) ([17244af](https://github.com/aws/aws-cdk/commit/17244af0d181a28b908fa161250c5a3285521c53)) +* UserPool, Volume, ElasticSearch, FSx are now RETAIN by default ([#12920](https://github.com/aws/aws-cdk/issues/12920)) ([5a54741](https://github.com/aws/aws-cdk/commit/5a54741a414d3f8b7913163f4785759b984b41d8)), closes [#12563](https://github.com/aws/aws-cdk/issues/12563) + ## [2.0.0-alpha.5](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2021-02-17) diff --git a/version.v2.json b/version.v2.json index 9f178b6318b00..d109bd509d639 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.5" + "version": "2.0.0-alpha.6" } From b79dbc7fa29d4a22d8cf68056644e18fc7036b36 Mon Sep 17 00:00:00 2001 From: Adam Ruka Date: Fri, 5 Mar 2021 11:18:13 -0800 Subject: [PATCH 064/304] Change the Construct type used in the new Ec2Action in cloudwatch-actions to be from the 'constructs' library. --- packages/@aws-cdk/aws-cloudwatch-actions/lib/ec2.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-cloudwatch-actions/lib/ec2.ts b/packages/@aws-cdk/aws-cloudwatch-actions/lib/ec2.ts index 57d5a4fb67501..9b6615cc113bc 100644 --- a/packages/@aws-cdk/aws-cloudwatch-actions/lib/ec2.ts +++ b/packages/@aws-cdk/aws-cloudwatch-actions/lib/ec2.ts @@ -3,7 +3,7 @@ import { Stack } from '@aws-cdk/core'; // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Types of EC2 actions available From 28e2dde64e88504cf1b06ce8be0b9b678278df07 Mon Sep 17 00:00:00 2001 From: Adam Ruka Date: Fri, 5 Mar 2021 13:08:22 -0800 Subject: [PATCH 065/304] Change the Construct type used in EcsTask in events-targets to be from the 'constructs' library. --- packages/@aws-cdk/aws-events-targets/lib/ecs-task.ts | 6 +++++- packages/@aws-cdk/aws-events-targets/lib/util.ts | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk/aws-events-targets/lib/ecs-task.ts b/packages/@aws-cdk/aws-events-targets/lib/ecs-task.ts index a31fc0b68ca5c..34f3d9b967199 100644 --- a/packages/@aws-cdk/aws-events-targets/lib/ecs-task.ts +++ b/packages/@aws-cdk/aws-events-targets/lib/ecs-task.ts @@ -6,6 +6,10 @@ import * as cdk from '@aws-cdk/core'; import { ContainerOverride } from './ecs-task-properties'; import { singletonEventRole } from './util'; +// keep this import separate from other imports to reduce chance for merge conflicts with v2-main +// eslint-disable-next-line no-duplicate-imports, import/order +import { Construct } from 'constructs'; + /** * Properties to define an ECS Event Task */ @@ -138,7 +142,7 @@ export class EcsTask implements events.IRuleTarget { return; } - if (!cdk.Construct.isConstruct(this.taskDefinition)) { + if (!Construct.isConstruct(this.taskDefinition)) { throw new Error('Cannot create a security group for ECS task. ' + 'The task definition in ECS task is not a Construct. ' + 'Please pass a taskDefinition as a Construct in EcsTaskProps.'); diff --git a/packages/@aws-cdk/aws-events-targets/lib/util.ts b/packages/@aws-cdk/aws-events-targets/lib/util.ts index 3fe93b3709201..bcf288ee0cc4c 100644 --- a/packages/@aws-cdk/aws-events-targets/lib/util.ts +++ b/packages/@aws-cdk/aws-events-targets/lib/util.ts @@ -3,7 +3,7 @@ import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as sqs from '@aws-cdk/aws-sqs'; import { Annotations, Names, Token, TokenComparison } from '@aws-cdk/core'; -import { IConstruct } from 'constructs'; +import { IConstruct, Node as ConstructNode } from 'constructs'; // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line no-duplicate-imports, import/order @@ -93,4 +93,4 @@ export function addToDeadLetterQueueResourcePolicy(rule: events.IRule, queue: sq */ function sameEnvDimension(dim1: string, dim2: string) { return [TokenComparison.SAME, TokenComparison.BOTH_UNRESOLVED].includes(Token.compareStrings(dim1, dim2)); -} \ No newline at end of file +} From 2ff5ca1b4fa34ad6ed9e34c01bd49cc1583cab55 Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Tue, 9 Mar 2021 13:44:36 +0100 Subject: [PATCH 066/304] fix(python): change Python namespace to `aws_cdk` (#13489) The current Python namespace in v2 for the monopackage is `aws_cdk_lib`, which means people need to update a lot of imports their source code. `aws_cdk` is the namespace used by the v1 packages, which means people who have already written code against v1 have less updating to do. Unfortunately there will still be SOME updating, as some classes *used* to be in `aws_cdk.core` but are now in `aws_cdk` directly. Tested that the `aws_cdk_lib` package that vends `aws_cdk/__init__.py` can still be installed without problems alongside `aws_cdk.cx_api` which vends `aws_cdk/cx_api/__init__.py`, and others. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 3fa1d9e758c0a..a921736614acb 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -63,7 +63,7 @@ }, "python": { "distName": "aws-cdk-lib", - "module": "aws_cdk_lib" + "module": "aws_cdk" } }, "projectReferences": false From e67aa589c1532059d40270f5d162858b95dcd029 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 10 Mar 2021 11:05:51 +0100 Subject: [PATCH 067/304] chore(release): 2.0.0-alpha.7 (#13518) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.7/CHANGELOG.md) --- CHANGELOG.v2.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 886df1dced77b..13ccfaa8c33b2 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,70 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.7](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2021-03-10) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **apigatewayv2:** `HttpApiMapping` (and related interfaces for `Attributed` and `Props`) has been renamed to `ApiMapping` +* **apigatewayv2:** `CommonStageOptions` has been renamed to `StageOptions` +* **apigatewayv2:** `HttpStage.fromStageName` has been removed in favour of `HttpStage.fromHttpStageAttributes` +* **apigatewayv2:** `DefaultDomainMappingOptions` has been removed in favour of `DomainMappingOptions` +* **apigatewayv2:** `HttpApiProps.defaultDomainMapping` has been changed from `DefaultDomainMappingOptions` to `DomainMappingOptions` +* **apigatewayv2:** `HttpApi.defaultStage` has been changed from `HttpStage` to `IStage` +* **apigatewayv2:** `IHttpApi.defaultStage` has been removed + +### Features + +* **apigatewayv2:** websocket api ([#13031](https://github.com/aws/aws-cdk/issues/13031)) ([fe1c839](https://github.com/aws/aws-cdk/commit/fe1c8393e0840fb273c4a5f325cb3cebc784bf4b)), closes [#2872](https://github.com/aws/aws-cdk/issues/2872) +* **aws-events:** Event Bus target ([#12926](https://github.com/aws/aws-cdk/issues/12926)) ([ea91aa3](https://github.com/aws/aws-cdk/commit/ea91aa31db9e2f31c734ad6d7e1f64d5d432dfd4)), closes [#9473](https://github.com/aws/aws-cdk/issues/9473) +* **aws-route53-targets:** add global accelerator target to route53 alias targets ([#13407](https://github.com/aws/aws-cdk/issues/13407)) ([2672a55](https://github.com/aws/aws-cdk/commit/2672a55c393e5ce7dd9a230d921ec1be1a23e32a)), closes [#12839](https://github.com/aws/aws-cdk/issues/12839) +* **cfnspec:** cloudformation spec v30.0.0 ([#13365](https://github.com/aws/aws-cdk/issues/13365)) ([ae0185d](https://github.com/aws/aws-cdk/commit/ae0185dd089e3bb7c5639ebc1bce3f95e126f71c)) +* **cloudwatch:** EC2 actions ([#13281](https://github.com/aws/aws-cdk/issues/13281)) ([319cfcd](https://github.com/aws/aws-cdk/commit/319cfcdaaf92e4e6edb8c2388d04dce0971aaf86)), closes [#13228](https://github.com/aws/aws-cdk/issues/13228) +* **codebuild:** allow setting queued timeout ([#13467](https://github.com/aws/aws-cdk/issues/13467)) ([e09250b](https://github.com/aws/aws-cdk/commit/e09250bc92c62cb8ee0a8706ce90d0e82faf2d84)), closes [#11364](https://github.com/aws/aws-cdk/issues/11364) +* **cognito:** user pools - sign in with apple ([#13160](https://github.com/aws/aws-cdk/issues/13160)) ([b965589](https://github.com/aws/aws-cdk/commit/b965589358f4c281aea36404276f08128e6ff3db)) +* **core:** `description` parameter in the CustomResourceProvider ([#13275](https://github.com/aws/aws-cdk/issues/13275)) ([78831cf](https://github.com/aws/aws-cdk/commit/78831cf9dec0407e7d827711183ac47be070f480)), closes [#13277](https://github.com/aws/aws-cdk/issues/13277) [#13276](https://github.com/aws/aws-cdk/issues/13276) +* **core:** customize bundling output packaging ([#13152](https://github.com/aws/aws-cdk/issues/13152)) ([6eca979](https://github.com/aws/aws-cdk/commit/6eca979f65542f3e44461588d8220e8c0bf76a6e)) +* **dynamodb:** custom timeout for replication operation ([#13354](https://github.com/aws/aws-cdk/issues/13354)) ([6a5a4f2](https://github.com/aws/aws-cdk/commit/6a5a4f2d9bb6b09ad0d10066200fe53bb45f0737)), closes [#10249](https://github.com/aws/aws-cdk/issues/10249) +* **ec2:** Add VPC endpoint for RDS ([#12497](https://github.com/aws/aws-cdk/issues/12497)) ([fc87574](https://github.com/aws/aws-cdk/commit/fc8757437c37a0947cced720ff363b8858850f72)), closes [#12402](https://github.com/aws/aws-cdk/issues/12402) +* **ec2:** multipart user data ([#11843](https://github.com/aws/aws-cdk/issues/11843)) ([ed94c5e](https://github.com/aws/aws-cdk/commit/ed94c5ef1b9dd3042128b0e0c5bb14b3d9c7d497)), closes [#8315](https://github.com/aws/aws-cdk/issues/8315) +* **ecs:** ability to access tag parameter value of TagParameterContainerImage ([#13340](https://github.com/aws/aws-cdk/issues/13340)) ([e567a41](https://github.com/aws/aws-cdk/commit/e567a410d47366855ee3e6011aa096ba987b8099)), closes [#13202](https://github.com/aws/aws-cdk/issues/13202) +* **ecs:** add port mappings to containers with props ([#13262](https://github.com/aws/aws-cdk/issues/13262)) ([f511639](https://github.com/aws/aws-cdk/commit/f511639bba156f6edd15896a4dd8e27b07671ea1)), closes [#13261](https://github.com/aws/aws-cdk/issues/13261) +* **ecs:** allow selection of container and port for SRV service discovery records ([#12798](https://github.com/aws/aws-cdk/issues/12798)) ([a452bc3](https://github.com/aws/aws-cdk/commit/a452bc385640762a043392a717d49de29abcc64e)), closes [#12796](https://github.com/aws/aws-cdk/issues/12796) +* **elbv2:** allow control of ingress rules on redirect listener ([#12768](https://github.com/aws/aws-cdk/issues/12768)) ([b7b441f](https://github.com/aws/aws-cdk/commit/b7b441f74a07d26fd8de23df84e7ab4663c89c0c)), closes [#12766](https://github.com/aws/aws-cdk/issues/12766) +* **events:** archive events ([#12060](https://github.com/aws/aws-cdk/issues/12060)) ([465cd9c](https://github.com/aws/aws-cdk/commit/465cd9c434acff74070ca6d33891e1481e253128)), closes [#11531](https://github.com/aws/aws-cdk/issues/11531) +* **events:** dead letter queue for Lambda Targets ([#11617](https://github.com/aws/aws-cdk/issues/11617)) ([1bb3650](https://github.com/aws/aws-cdk/commit/1bb3650c5dd2087b05793a5e903cdfb80fc5c1ad)), closes [#11612](https://github.com/aws/aws-cdk/issues/11612) +* **events:** dead-letter queue support for StepFunctions ([#13450](https://github.com/aws/aws-cdk/issues/13450)) ([0ebcb41](https://github.com/aws/aws-cdk/commit/0ebcb4160ee16f0f7ff1072a40c8951f9a983048)), closes [#13449](https://github.com/aws/aws-cdk/issues/13449) +* **iam:** SAML identity provider ([#13393](https://github.com/aws/aws-cdk/issues/13393)) ([faa0c06](https://github.com/aws/aws-cdk/commit/faa0c060dad9a5045495707e28fc85f223d4db5d)), closes [#5320](https://github.com/aws/aws-cdk/issues/5320) +* **lambda:** Code.fromDockerBuild ([#13318](https://github.com/aws/aws-cdk/issues/13318)) ([ad01099](https://github.com/aws/aws-cdk/commit/ad01099d5b8f835c3b87d7d20fd2dc1a5df2fd6f)), closes [#13273](https://github.com/aws/aws-cdk/issues/13273) +* **neptune:** high level constructs for db clusters and instances ([#12763](https://github.com/aws/aws-cdk/issues/12763)) ([c366837](https://github.com/aws/aws-cdk/commit/c36683701d88eb0c53fdd2add66b10c47c05f56b)), closes [aws#12762](https://github.com/aws/aws/issues/12762) +* **neptune:** Support IAM authentication ([#13462](https://github.com/aws/aws-cdk/issues/13462)) ([6c5b1f4](https://github.com/aws/aws-cdk/commit/6c5b1f42fb73a132d47945b529bab73557f2b9d8)), closes [#13461](https://github.com/aws/aws-cdk/issues/13461) +* **region-info:** added AppMesh ECR account for af-south-1 region ([#12814](https://github.com/aws/aws-cdk/issues/12814)) ([b3fba43](https://github.com/aws/aws-cdk/commit/b3fba43a047df61e713e8d2271d6deee7e07b716)) + + +### Bug Fixes + +* **cfn-include:** allow dynamic mappings to be used in Fn::FindInMap ([#13428](https://github.com/aws/aws-cdk/issues/13428)) ([623675d](https://github.com/aws/aws-cdk/commit/623675d2f8fb2786f23beb87994e687e8a7c6612)) +* **cloudfront:** cannot add two EdgeFunctions with same aliases ([#13324](https://github.com/aws/aws-cdk/issues/13324)) ([1f35351](https://github.com/aws/aws-cdk/commit/1f3535145d22b2b13ebbcbfe31a3bfd73519352d)), closes [#13237](https://github.com/aws/aws-cdk/issues/13237) +* **cloudwatch:** MathExpression period of <5 minutes is not respected ([#13078](https://github.com/aws/aws-cdk/issues/13078)) ([d9ee914](https://github.com/aws/aws-cdk/commit/d9ee91432918aa113f728abdd61295096ed1512f)), closes [#9156](https://github.com/aws/aws-cdk/issues/9156) +* **cloudwatch:** metric `label` not rendered into Alarms ([#13070](https://github.com/aws/aws-cdk/issues/13070)) ([cbcc712](https://github.com/aws/aws-cdk/commit/cbcc712e0c4c44c83c7f4d1e8a544bccfa26bb56)) +* **codebuild:** allow FILE_PATH webhook filter for BitBucket ([#13186](https://github.com/aws/aws-cdk/issues/13186)) ([cbed348](https://github.com/aws/aws-cdk/commit/cbed3488f03bdfba16f3950bda653535c8999db1)), closes [#13175](https://github.com/aws/aws-cdk/issues/13175) +* **core:** custom resource provider NODEJS_12 now looks like Lambda's NODEJS_12_X, add Node 14 ([#13301](https://github.com/aws/aws-cdk/issues/13301)) ([3413b2f](https://github.com/aws/aws-cdk/commit/3413b2f887596d11dfb53c0e99c2a1788095a2ad)) +* **dynamodb:** replicas not created on table replacement ([#13300](https://github.com/aws/aws-cdk/issues/13300)) ([c7c424f](https://github.com/aws/aws-cdk/commit/c7c424fec42f1f14ab8bdc3011f5bdb602918aa3)), closes [#12332](https://github.com/aws/aws-cdk/issues/12332) +* **ec2:** NAT provider's default outbound rules cannot be disabled ([#12674](https://github.com/aws/aws-cdk/issues/12674)) ([664133a](https://github.com/aws/aws-cdk/commit/664133a35da2bd096a237971ce662f3dd38b297f)), closes [#12673](https://github.com/aws/aws-cdk/issues/12673) +* **ec2:** readme grammar ([#13180](https://github.com/aws/aws-cdk/issues/13180)) ([fe4f056](https://github.com/aws/aws-cdk/commit/fe4f05678c06d634d3fe9e1b608e444a57f67b9c)) +* **ec2:** Throw error on empty InitFile content ([#13009](https://github.com/aws/aws-cdk/issues/13009)) ([#13119](https://github.com/aws/aws-cdk/issues/13119)) ([81a78a3](https://github.com/aws/aws-cdk/commit/81a78a31408276ebb020e45b15ddca7a2c57ae50)) +* **ecr:** Allow referencing an EcrImage by digest instead of tag ([#13299](https://github.com/aws/aws-cdk/issues/13299)) ([266a621](https://github.com/aws/aws-cdk/commit/266a621abfc34c62ff1e26de9cb8cf0687588f89)), closes [#5082](https://github.com/aws/aws-cdk/issues/5082) +* **ecr:** Generate valid CloudFormation for imageScanOnPush ([#13420](https://github.com/aws/aws-cdk/issues/13420)) ([278fba5](https://github.com/aws/aws-cdk/commit/278fba5df4a3d785e49bdb57ccf88fd34bacacbb)), closes [#13418](https://github.com/aws/aws-cdk/issues/13418) +* **ecs:** services essential container exceptions thrown too soon ([#13240](https://github.com/aws/aws-cdk/issues/13240)) ([c174f6c](https://github.com/aws/aws-cdk/commit/c174f6c2f4dd909e07be34b66bd6b3a92d5e8484)), closes [#13239](https://github.com/aws/aws-cdk/issues/13239) +* **elasticloadbalancingv2:** should allow more than 2 certificates ([#13332](https://github.com/aws/aws-cdk/issues/13332)) ([d3155e9](https://github.com/aws/aws-cdk/commit/d3155e97fd9331a4732396941ce4ad20613fe81c)), closes [#13150](https://github.com/aws/aws-cdk/issues/13150) +* **events:** cannot trigger multiple Lambdas from the same Rule ([#13260](https://github.com/aws/aws-cdk/issues/13260)) ([c8c1762](https://github.com/aws/aws-cdk/commit/c8c1762c213aad1062c3a0bc48b22b05c3a0a185)), closes [#13231](https://github.com/aws/aws-cdk/issues/13231) +* **events:** imported ECS Task Definition cannot be used as target ([#13293](https://github.com/aws/aws-cdk/issues/13293)) ([6f7cebd](https://github.com/aws/aws-cdk/commit/6f7cebdf61073cc1fb358fcac5f5b2156389cb81)), closes [#12811](https://github.com/aws/aws-cdk/issues/12811) +* **iam:** oidc-provider can't pull from hosts requiring SNI ([#13397](https://github.com/aws/aws-cdk/issues/13397)) ([90dbfb5](https://github.com/aws/aws-cdk/commit/90dbfb5eec19559717ac6b30f25451461027e731)) +* **lambda-nodejs:** paths with spaces break esbuild ([#13312](https://github.com/aws/aws-cdk/issues/13312)) ([f983fbb](https://github.com/aws/aws-cdk/commit/f983fbb474ecd6727b0c5a35333718cc55d78bf1)), closes [#13311](https://github.com/aws/aws-cdk/issues/13311) +* **python:** change Python namespace to `aws_cdk` ([#13489](https://github.com/aws/aws-cdk/issues/13489)) ([90f5311](https://github.com/aws/aws-cdk/commit/90f5311b8bfd32d3b2fb348264cdcb026a5975f5)) +* **stepfunctions:** `SageMakeUpdateEndpoint` adds insufficient permissions ([#13170](https://github.com/aws/aws-cdk/issues/13170)) ([6126e49](https://github.com/aws/aws-cdk/commit/6126e499e5ca22b5f751af4f4f05d74f696829f1)), closes [#11594](https://github.com/aws/aws-cdk/issues/11594) + ## [2.0.0-alpha.6](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2021-03-03) diff --git a/version.v2.json b/version.v2.json index d109bd509d639..d82c1fa68b83d 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.6" + "version": "2.0.0-alpha.7" } From 59d92019e69d759fba8731c2c2649f828724ffd8 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 17 Mar 2021 10:36:00 +0100 Subject: [PATCH 068/304] chore(release): 2.0.0-alpha.8 (#13632) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.8/CHANGELOG.md) --- CHANGELOG.v2.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 13ccfaa8c33b2..9dd4bffa9047c 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,82 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.8](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.8) (2021-03-17) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **apigatewayv2:** `HttpApiMapping` (and related interfaces for `Attributed` and `Props`) has been renamed to `ApiMapping` +* **apigatewayv2:** `CommonStageOptions` has been renamed to `StageOptions` +* **apigatewayv2:** `HttpStage.fromStageName` has been removed in favour of `HttpStage.fromHttpStageAttributes` +* **apigatewayv2:** `DefaultDomainMappingOptions` has been removed in favour of `DomainMappingOptions` +* **apigatewayv2:** `HttpApiProps.defaultDomainMapping` has been changed from `DefaultDomainMappingOptions` to `DomainMappingOptions` +* **apigatewayv2:** `HttpApi.defaultStage` has been changed from `HttpStage` to `IStage` +* **apigatewayv2:** `IHttpApi.defaultStage` has been removed + +### Features + +* **apigatewayv2:** websocket api ([#13031](https://github.com/aws/aws-cdk/issues/13031)) ([fe1c839](https://github.com/aws/aws-cdk/commit/fe1c8393e0840fb273c4a5f325cb3cebc784bf4b)), closes [#2872](https://github.com/aws/aws-cdk/issues/2872) +* **aws-events:** Event Bus target ([#12926](https://github.com/aws/aws-cdk/issues/12926)) ([ea91aa3](https://github.com/aws/aws-cdk/commit/ea91aa31db9e2f31c734ad6d7e1f64d5d432dfd4)), closes [#9473](https://github.com/aws/aws-cdk/issues/9473) +* **aws-route53-targets:** add global accelerator target to route53 alias targets ([#13407](https://github.com/aws/aws-cdk/issues/13407)) ([2672a55](https://github.com/aws/aws-cdk/commit/2672a55c393e5ce7dd9a230d921ec1be1a23e32a)), closes [#12839](https://github.com/aws/aws-cdk/issues/12839) +* **cfnspec:** cloudformation spec v30.0.0 ([#13365](https://github.com/aws/aws-cdk/issues/13365)) ([ae0185d](https://github.com/aws/aws-cdk/commit/ae0185dd089e3bb7c5639ebc1bce3f95e126f71c)) +* **cloudwatch:** EC2 actions ([#13281](https://github.com/aws/aws-cdk/issues/13281)) ([319cfcd](https://github.com/aws/aws-cdk/commit/319cfcdaaf92e4e6edb8c2388d04dce0971aaf86)), closes [#13228](https://github.com/aws/aws-cdk/issues/13228) +* **codebuild:** allow setting queued timeout ([#13467](https://github.com/aws/aws-cdk/issues/13467)) ([e09250b](https://github.com/aws/aws-cdk/commit/e09250bc92c62cb8ee0a8706ce90d0e82faf2d84)), closes [#11364](https://github.com/aws/aws-cdk/issues/11364) +* **cognito:** user pools - sign in with apple ([#13160](https://github.com/aws/aws-cdk/issues/13160)) ([b965589](https://github.com/aws/aws-cdk/commit/b965589358f4c281aea36404276f08128e6ff3db)) +* **core:** `description` parameter in the CustomResourceProvider ([#13275](https://github.com/aws/aws-cdk/issues/13275)) ([78831cf](https://github.com/aws/aws-cdk/commit/78831cf9dec0407e7d827711183ac47be070f480)), closes [#13277](https://github.com/aws/aws-cdk/issues/13277) [#13276](https://github.com/aws/aws-cdk/issues/13276) +* **core:** customize bundling output packaging ([#13152](https://github.com/aws/aws-cdk/issues/13152)) ([6eca979](https://github.com/aws/aws-cdk/commit/6eca979f65542f3e44461588d8220e8c0bf76a6e)) +* **dynamodb:** custom timeout for replication operation ([#13354](https://github.com/aws/aws-cdk/issues/13354)) ([6a5a4f2](https://github.com/aws/aws-cdk/commit/6a5a4f2d9bb6b09ad0d10066200fe53bb45f0737)), closes [#10249](https://github.com/aws/aws-cdk/issues/10249) +* **ec2:** Add VPC endpoint for RDS ([#12497](https://github.com/aws/aws-cdk/issues/12497)) ([fc87574](https://github.com/aws/aws-cdk/commit/fc8757437c37a0947cced720ff363b8858850f72)), closes [#12402](https://github.com/aws/aws-cdk/issues/12402) +* **ec2:** ESP and AH IPsec protocols for Security Groups ([#13471](https://github.com/aws/aws-cdk/issues/13471)) ([f5a6647](https://github.com/aws/aws-cdk/commit/f5a6647bbe1885ba86029d10550a3ffaf80b6561)), closes [#13403](https://github.com/aws/aws-cdk/issues/13403) +* **ec2:** multipart user data ([#11843](https://github.com/aws/aws-cdk/issues/11843)) ([ed94c5e](https://github.com/aws/aws-cdk/commit/ed94c5ef1b9dd3042128b0e0c5bb14b3d9c7d497)), closes [#8315](https://github.com/aws/aws-cdk/issues/8315) +* **ecr:** add imageTagMutability prop ([#10557](https://github.com/aws/aws-cdk/issues/10557)) ([c4dc3bc](https://github.com/aws/aws-cdk/commit/c4dc3bce02790903593d80b070fca81fe7b7f08c)), closes [#4640](https://github.com/aws/aws-cdk/issues/4640) +* **ecs:** ability to access tag parameter value of TagParameterContainerImage ([#13340](https://github.com/aws/aws-cdk/issues/13340)) ([e567a41](https://github.com/aws/aws-cdk/commit/e567a410d47366855ee3e6011aa096ba987b8099)), closes [#13202](https://github.com/aws/aws-cdk/issues/13202) +* **ecs:** add port mappings to containers with props ([#13262](https://github.com/aws/aws-cdk/issues/13262)) ([f511639](https://github.com/aws/aws-cdk/commit/f511639bba156f6edd15896a4dd8e27b07671ea1)), closes [#13261](https://github.com/aws/aws-cdk/issues/13261) +* **ecs:** allow selection of container and port for SRV service discovery records ([#12798](https://github.com/aws/aws-cdk/issues/12798)) ([a452bc3](https://github.com/aws/aws-cdk/commit/a452bc385640762a043392a717d49de29abcc64e)), closes [#12796](https://github.com/aws/aws-cdk/issues/12796) +* **ecs:** allow users to provide a CloudMap service to associate with an ECS service ([#13192](https://github.com/aws/aws-cdk/issues/13192)) ([a7d314c](https://github.com/aws/aws-cdk/commit/a7d314c73b9473208d94bac29ad9bd8018e00204)), closes [#10057](https://github.com/aws/aws-cdk/issues/10057) +* **elbv2:** allow control of ingress rules on redirect listener ([#12768](https://github.com/aws/aws-cdk/issues/12768)) ([b7b441f](https://github.com/aws/aws-cdk/commit/b7b441f74a07d26fd8de23df84e7ab4663c89c0c)), closes [#12766](https://github.com/aws/aws-cdk/issues/12766) +* **events:** `EventBus.grantPutEventsTo` method for granular grants ([#13429](https://github.com/aws/aws-cdk/issues/13429)) ([122a232](https://github.com/aws/aws-cdk/commit/122a232343699304d8f206d3024fcddfb2a94bc8)), closes [#11228](https://github.com/aws/aws-cdk/issues/11228) +* **events:** archive events ([#12060](https://github.com/aws/aws-cdk/issues/12060)) ([465cd9c](https://github.com/aws/aws-cdk/commit/465cd9c434acff74070ca6d33891e1481e253128)), closes [#11531](https://github.com/aws/aws-cdk/issues/11531) +* **events:** dead letter queue for Lambda Targets ([#11617](https://github.com/aws/aws-cdk/issues/11617)) ([1bb3650](https://github.com/aws/aws-cdk/commit/1bb3650c5dd2087b05793a5e903cdfb80fc5c1ad)), closes [#11612](https://github.com/aws/aws-cdk/issues/11612) +* **events:** dead-letter queue support for CodeBuild ([#13448](https://github.com/aws/aws-cdk/issues/13448)) ([abfc0ea](https://github.com/aws/aws-cdk/commit/abfc0ea63c10d8033a529b7497cf093e318fdf12)), closes [#13447](https://github.com/aws/aws-cdk/issues/13447) +* **events:** dead-letter queue support for StepFunctions ([#13450](https://github.com/aws/aws-cdk/issues/13450)) ([0ebcb41](https://github.com/aws/aws-cdk/commit/0ebcb4160ee16f0f7ff1072a40c8951f9a983048)), closes [#13449](https://github.com/aws/aws-cdk/issues/13449) +* **events,applicationautoscaling:** schedule can be a token ([#13064](https://github.com/aws/aws-cdk/issues/13064)) ([b1449a1](https://github.com/aws/aws-cdk/commit/b1449a178b0f9a8a951c2546428f8d75c6431f0f)) +* **iam:** SAML identity provider ([#13393](https://github.com/aws/aws-cdk/issues/13393)) ([faa0c06](https://github.com/aws/aws-cdk/commit/faa0c060dad9a5045495707e28fc85f223d4db5d)), closes [#5320](https://github.com/aws/aws-cdk/issues/5320) +* **lambda:** Code.fromDockerBuild ([#13318](https://github.com/aws/aws-cdk/issues/13318)) ([ad01099](https://github.com/aws/aws-cdk/commit/ad01099d5b8f835c3b87d7d20fd2dc1a5df2fd6f)), closes [#13273](https://github.com/aws/aws-cdk/issues/13273) +* **neptune:** high level constructs for db clusters and instances ([#12763](https://github.com/aws/aws-cdk/issues/12763)) ([c366837](https://github.com/aws/aws-cdk/commit/c36683701d88eb0c53fdd2add66b10c47c05f56b)), closes [aws#12762](https://github.com/aws/aws/issues/12762) +* **neptune:** Support IAM authentication ([#13462](https://github.com/aws/aws-cdk/issues/13462)) ([6c5b1f4](https://github.com/aws/aws-cdk/commit/6c5b1f42fb73a132d47945b529bab73557f2b9d8)), closes [#13461](https://github.com/aws/aws-cdk/issues/13461) +* **region-info:** added AppMesh ECR account for af-south-1 region ([#12814](https://github.com/aws/aws-cdk/issues/12814)) ([b3fba43](https://github.com/aws/aws-cdk/commit/b3fba43a047df61e713e8d2271d6deee7e07b716)) + + +### Bug Fixes + +* **cfn-include:** allow boolean values for string-typed properties ([#13508](https://github.com/aws/aws-cdk/issues/13508)) ([e5dab7c](https://github.com/aws/aws-cdk/commit/e5dab7cbc67c234d191c38a8b8b84b634070b15b)) +* **cfn-include:** allow dynamic mappings to be used in Fn::FindInMap ([#13428](https://github.com/aws/aws-cdk/issues/13428)) ([623675d](https://github.com/aws/aws-cdk/commit/623675d2f8fb2786f23beb87994e687e8a7c6612)) +* **cloudfront:** cannot add two EdgeFunctions with same aliases ([#13324](https://github.com/aws/aws-cdk/issues/13324)) ([1f35351](https://github.com/aws/aws-cdk/commit/1f3535145d22b2b13ebbcbfe31a3bfd73519352d)), closes [#13237](https://github.com/aws/aws-cdk/issues/13237) +* **cloudwatch:** MathExpression period of <5 minutes is not respected ([#13078](https://github.com/aws/aws-cdk/issues/13078)) ([d9ee914](https://github.com/aws/aws-cdk/commit/d9ee91432918aa113f728abdd61295096ed1512f)), closes [#9156](https://github.com/aws/aws-cdk/issues/9156) +* **cloudwatch:** metric `label` not rendered into Alarms ([#13070](https://github.com/aws/aws-cdk/issues/13070)) ([cbcc712](https://github.com/aws/aws-cdk/commit/cbcc712e0c4c44c83c7f4d1e8a544bccfa26bb56)) +* **codebuild:** allow FILE_PATH webhook filter for BitBucket ([#13186](https://github.com/aws/aws-cdk/issues/13186)) ([cbed348](https://github.com/aws/aws-cdk/commit/cbed3488f03bdfba16f3950bda653535c8999db1)), closes [#13175](https://github.com/aws/aws-cdk/issues/13175) +* **core:** custom resource provider NODEJS_12 now looks like Lambda's NODEJS_12_X, add Node 14 ([#13301](https://github.com/aws/aws-cdk/issues/13301)) ([3413b2f](https://github.com/aws/aws-cdk/commit/3413b2f887596d11dfb53c0e99c2a1788095a2ad)) +* **dynamodb:** replicas not created on table replacement ([#13300](https://github.com/aws/aws-cdk/issues/13300)) ([c7c424f](https://github.com/aws/aws-cdk/commit/c7c424fec42f1f14ab8bdc3011f5bdb602918aa3)), closes [#12332](https://github.com/aws/aws-cdk/issues/12332) +* **ec2:** fix typo's in WindowsImage constants ([#13446](https://github.com/aws/aws-cdk/issues/13446)) ([781aa97](https://github.com/aws/aws-cdk/commit/781aa97d53fdb7511c34ddde884fdcd84c3f68a6)) +* **ec2:** NAT provider's default outbound rules cannot be disabled ([#12674](https://github.com/aws/aws-cdk/issues/12674)) ([664133a](https://github.com/aws/aws-cdk/commit/664133a35da2bd096a237971ce662f3dd38b297f)), closes [#12673](https://github.com/aws/aws-cdk/issues/12673) +* **ec2:** readme grammar ([#13180](https://github.com/aws/aws-cdk/issues/13180)) ([fe4f056](https://github.com/aws/aws-cdk/commit/fe4f05678c06d634d3fe9e1b608e444a57f67b9c)) +* **ec2:** Throw error on empty InitFile content ([#13009](https://github.com/aws/aws-cdk/issues/13009)) ([#13119](https://github.com/aws/aws-cdk/issues/13119)) ([81a78a3](https://github.com/aws/aws-cdk/commit/81a78a31408276ebb020e45b15ddca7a2c57ae50)) +* **ecr:** Allow referencing an EcrImage by digest instead of tag ([#13299](https://github.com/aws/aws-cdk/issues/13299)) ([266a621](https://github.com/aws/aws-cdk/commit/266a621abfc34c62ff1e26de9cb8cf0687588f89)), closes [#5082](https://github.com/aws/aws-cdk/issues/5082) +* **ecr:** Generate valid CloudFormation for imageScanOnPush ([#13420](https://github.com/aws/aws-cdk/issues/13420)) ([278fba5](https://github.com/aws/aws-cdk/commit/278fba5df4a3d785e49bdb57ccf88fd34bacacbb)), closes [#13418](https://github.com/aws/aws-cdk/issues/13418) +* **ecs:** services essential container exceptions thrown too soon ([#13240](https://github.com/aws/aws-cdk/issues/13240)) ([c174f6c](https://github.com/aws/aws-cdk/commit/c174f6c2f4dd909e07be34b66bd6b3a92d5e8484)), closes [#13239](https://github.com/aws/aws-cdk/issues/13239) +* **elasticloadbalancingv2:** should allow more than 2 certificates ([#13332](https://github.com/aws/aws-cdk/issues/13332)) ([d3155e9](https://github.com/aws/aws-cdk/commit/d3155e97fd9331a4732396941ce4ad20613fe81c)), closes [#13150](https://github.com/aws/aws-cdk/issues/13150) +* **elasticloadbalancingv2:** upgrade to v1.92.0 drops certificates on ALB if more than 2 certificates exist ([#13490](https://github.com/aws/aws-cdk/issues/13490)) ([01b94f8](https://github.com/aws/aws-cdk/commit/01b94f8aa6c88b5e676c784aec4c879acddc042f)), closes [#13332](https://github.com/aws/aws-cdk/issues/13332) [#13437](https://github.com/aws/aws-cdk/issues/13437) +* **events:** cannot trigger multiple Lambdas from the same Rule ([#13260](https://github.com/aws/aws-cdk/issues/13260)) ([c8c1762](https://github.com/aws/aws-cdk/commit/c8c1762c213aad1062c3a0bc48b22b05c3a0a185)), closes [#13231](https://github.com/aws/aws-cdk/issues/13231) +* **events:** imported ECS Task Definition cannot be used as target ([#13293](https://github.com/aws/aws-cdk/issues/13293)) ([6f7cebd](https://github.com/aws/aws-cdk/commit/6f7cebdf61073cc1fb358fcac5f5b2156389cb81)), closes [#12811](https://github.com/aws/aws-cdk/issues/12811) +* **events:** imported EventBus does not correctly register source account ([#13481](https://github.com/aws/aws-cdk/issues/13481)) ([57e5404](https://github.com/aws/aws-cdk/commit/57e540432c1446f2233a9b0c0f4caba4e9e155d9)), closes [#13469](https://github.com/aws/aws-cdk/issues/13469) +* **iam:** oidc-provider can't pull from hosts requiring SNI ([#13397](https://github.com/aws/aws-cdk/issues/13397)) ([90dbfb5](https://github.com/aws/aws-cdk/commit/90dbfb5eec19559717ac6b30f25451461027e731)) +* **init:** Python init template's stack ID doesn't match other languages ([#13480](https://github.com/aws/aws-cdk/issues/13480)) ([3f1c02d](https://github.com/aws/aws-cdk/commit/3f1c02dac7a50ce7caebce1e7f8953f6e4937e6b)) +* **lambda-nodejs:** paths with spaces break esbuild ([#13312](https://github.com/aws/aws-cdk/issues/13312)) ([f983fbb](https://github.com/aws/aws-cdk/commit/f983fbb474ecd6727b0c5a35333718cc55d78bf1)), closes [#13311](https://github.com/aws/aws-cdk/issues/13311) +* **python:** change Python namespace to `aws_cdk` ([#13489](https://github.com/aws/aws-cdk/issues/13489)) ([90f5311](https://github.com/aws/aws-cdk/commit/90f5311b8bfd32d3b2fb348264cdcb026a5975f5)) +* **stepfunctions:** `SageMakeUpdateEndpoint` adds insufficient permissions ([#13170](https://github.com/aws/aws-cdk/issues/13170)) ([6126e49](https://github.com/aws/aws-cdk/commit/6126e499e5ca22b5f751af4f4f05d74f696829f1)), closes [#11594](https://github.com/aws/aws-cdk/issues/11594) +* **stepfunctions:** no validation on state machine name ([#13387](https://github.com/aws/aws-cdk/issues/13387)) ([6c3d407](https://github.com/aws/aws-cdk/commit/6c3d4071746179dde30f615602592c2523daa56e)), closes [#13289](https://github.com/aws/aws-cdk/issues/13289) + ## [2.0.0-alpha.7](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2021-03-10) diff --git a/version.v2.json b/version.v2.json index d82c1fa68b83d..35aa75d46a8ec 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.7" + "version": "2.0.0-alpha.8" } From b76abeee9e99b62949a6e22375c39daae0fd3051 Mon Sep 17 00:00:00 2001 From: iliapolo Date: Wed, 17 Mar 2021 20:45:05 +0000 Subject: [PATCH 069/304] automatic pkglint fixes --- packages/@aws-cdk/aws-s3outposts/package.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/@aws-cdk/aws-s3outposts/package.json b/packages/@aws-cdk/aws-s3outposts/package.json index 7965518ea1d24..4c2236ec82a9c 100644 --- a/packages/@aws-cdk/aws-s3outposts/package.json +++ b/packages/@aws-cdk/aws-s3outposts/package.json @@ -81,10 +81,12 @@ "pkglint": "0.0.0" }, "dependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "peerDependencies": { - "@aws-cdk/core": "0.0.0" + "@aws-cdk/core": "0.0.0", + "constructs": "10.0.0-pre.5" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" @@ -95,6 +97,7 @@ "announce": false }, "publishConfig": { - "tag": "latest" - } + "tag": "next" + }, + "private": true } From ff02cfab7f316b9b32be4ca460261a7c80170002 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Thu, 18 Mar 2021 10:39:53 +0000 Subject: [PATCH 070/304] chore(core): fix runtime-info tests and imports for v2 --- .../@aws-cdk/core/lib/private/runtime-info.ts | 2 +- .../core/test/metadata-resource.test.ts | 3 +- .../@aws-cdk/core/test/runtime-info.test.ts | 55 ++++++------------- 3 files changed, 20 insertions(+), 40 deletions(-) diff --git a/packages/@aws-cdk/core/lib/private/runtime-info.ts b/packages/@aws-cdk/core/lib/private/runtime-info.ts index da4fbdcbe99d8..09962305a152f 100644 --- a/packages/@aws-cdk/core/lib/private/runtime-info.ts +++ b/packages/@aws-cdk/core/lib/private/runtime-info.ts @@ -1,4 +1,4 @@ -import { IConstruct } from '../construct-compat'; +import { IConstruct } from 'constructs'; import { Stack } from '../stack'; import { Stage } from '../stage'; diff --git a/packages/@aws-cdk/core/test/metadata-resource.test.ts b/packages/@aws-cdk/core/test/metadata-resource.test.ts index 00869746b1e25..1fc7d1e80fe19 100644 --- a/packages/@aws-cdk/core/test/metadata-resource.test.ts +++ b/packages/@aws-cdk/core/test/metadata-resource.test.ts @@ -1,9 +1,8 @@ import * as zlib from 'zlib'; +import { Construct } from 'constructs'; import { App, Stack } from '../lib'; import { formatAnalytics } from '../lib/private/metadata-resource'; -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from '../lib'; import { ConstructInfo } from '../lib/private/runtime-info'; describe('MetadataResource', () => { diff --git a/packages/@aws-cdk/core/test/runtime-info.test.ts b/packages/@aws-cdk/core/test/runtime-info.test.ts index 7da4f78d74b46..43f542e6e84cd 100644 --- a/packages/@aws-cdk/core/test/runtime-info.test.ts +++ b/packages/@aws-cdk/core/test/runtime-info.test.ts @@ -1,16 +1,13 @@ import * as path from 'path'; +import { Construct } from 'constructs'; import { App, NestedStack, Stack, Stage } from '../lib'; import { constructInfoFromConstruct, constructInfoFromStack } from '../lib/private/runtime-info'; -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from '../lib'; - const JSII_RUNTIME_SYMBOL = Symbol.for('jsii.rtti'); let app: App; let stack: Stack; let _cdkVersion: string | undefined = undefined; -const modulePrefix = cdkMajorVersion() === 1 ? '@aws-cdk/core' : 'aws-cdk-lib'; // The runtime metadata this test relies on is only available if the most // recent compile has happened using 'jsii', as the jsii compiler injects @@ -40,24 +37,15 @@ describeTscSafe('constructInfoFromConstruct', () => { test('returns fqn and version for core constructs', () => { const constructInfo = constructInfoFromConstruct(stack); expect(constructInfo).toBeDefined(); - expect(constructInfo?.fqn).toEqual(`${modulePrefix}.Stack`); + expect(constructInfo?.fqn).toEqual('@aws-cdk/core.Stack'); expect(constructInfo?.version).toEqual(localCdkVersion()); }); - test('returns base construct info if no more specific info is present', () => { - const simpleConstruct = new class extends Construct { }(stack, 'Simple'); - const constructInfo = constructInfoFromConstruct(simpleConstruct); - expect(constructInfo?.fqn).toEqual(`${modulePrefix}.Construct`); - }); - - test('returns more specific subclass info if present', () => { - const construct = new class extends Construct { - // @ts-ignore - private static readonly [JSII_RUNTIME_SYMBOL] = { fqn: 'aws-cdk-lib.TestConstruct', version: localCdkVersion() } - }(stack, 'TestConstruct'); + test('returns jsii runtime info if present', () => { + const construct = new TestConstruct(stack, 'TestConstruct'); const constructInfo = constructInfoFromConstruct(construct); - expect(constructInfo?.fqn).toEqual('aws-cdk-lib.TestConstruct'); + expect(constructInfo?.fqn).toEqual('@aws-cdk/test.TestConstruct'); }); test('throws if the jsii runtime info is not as expected', () => { @@ -89,45 +77,41 @@ describeTscSafe('constructInfoForStack', () => { const stackInfo = constructInfos.find(i => /Stack/.test(i.fqn)); const jsiiInfo = constructInfos.find(i => i.fqn === 'jsii-runtime.Runtime'); - expect(stackInfo?.fqn).toEqual(`${modulePrefix}.Stack`); + expect(stackInfo?.fqn).toEqual('@aws-cdk/core.Stack'); expect(stackInfo?.version).toEqual(localCdkVersion()); expect(jsiiInfo?.version).toMatch(/node.js/); }); test('returns info for constructs added to the stack', () => { - new class extends Construct { }(stack, 'Simple'); + new TestConstruct(stack, 'TestConstruct'); const constructInfos = constructInfoFromStack(stack); expect(constructInfos.length).toEqual(3); - expect(constructInfos.map(info => info.fqn)).toContain(`${modulePrefix}.Construct`); + expect(constructInfos.map(info => info.fqn)).toContain('@aws-cdk/test.TestConstruct'); }); test('returns unique info (no duplicates)', () => { - new class extends Construct { }(stack, 'Simple1'); - new class extends Construct { }(stack, 'Simple2'); + new TestConstruct(stack, 'TestConstruct1'); + new TestConstruct(stack, 'TestConstruct2'); const constructInfos = constructInfoFromStack(stack); expect(constructInfos.length).toEqual(3); - expect(constructInfos.map(info => info.fqn)).toContain(`${modulePrefix}.Construct`); + expect(constructInfos.map(info => info.fqn)).toContain('@aws-cdk/test.TestConstruct'); }); test('returns info from nested constructs', () => { new class extends Construct { constructor(scope: Construct, id: string) { super(scope, id); - return new class extends Construct { - // @ts-ignore - private static readonly [JSII_RUNTIME_SYMBOL] = { fqn: '@aws-cdk/test.TestV1Construct', version: localCdkVersion() } - }(this, 'TestConstruct'); + new TestConstruct(this, 'TestConstruct'); } }(stack, 'Nested'); const constructInfos = constructInfoFromStack(stack); - expect(constructInfos.length).toEqual(4); - expect(constructInfos.map(info => info.fqn)).toContain('@aws-cdk/test.TestV1Construct'); + expect(constructInfos.map(info => info.fqn)).toContain('@aws-cdk/test.TestConstruct'); }); test('does not return info from nested stacks', () => { @@ -135,10 +119,7 @@ describeTscSafe('constructInfoForStack', () => { constructor(scope: Construct, id: string) { super(scope, id); - new class extends Construct { - // @ts-ignore - private static readonly [JSII_RUNTIME_SYMBOL] = { fqn: '@aws-cdk/test.TestV1Construct', version: localCdkVersion() } - }(this, 'TestConstruct'); + new TestConstruct(this, 'TestConstruct'); new class extends Stack { // @ts-ignore @@ -160,16 +141,16 @@ describeTscSafe('constructInfoForStack', () => { const constructInfos = constructInfoFromStack(stack); const fqns = constructInfos.map(info => info.fqn); - expect(fqns).toContain('@aws-cdk/test.TestV1Construct'); + expect(fqns).toContain('@aws-cdk/test.TestConstruct'); expect(fqns).not.toContain('@aws-cdk/test.TestStackInsideStack'); expect(fqns).not.toContain('@aws-cdk/test.TestNestedStackInsideStack'); expect(fqns).not.toContain('@aws-cdk/test.TestStageInsideStack'); }); }); -function cdkMajorVersion(): number { - // eslint-disable-next-line @typescript-eslint/no-require-imports - return require('../../../../release.json').majorVersion; +class TestConstruct extends Construct { + // @ts-ignore + private static readonly [JSII_RUNTIME_SYMBOL] = { fqn: '@aws-cdk/test.TestConstruct', version: localCdkVersion() } } /** From 635d1a4a7b667fefb2d17aebd878afd25e7fe6ff Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Thu, 18 Mar 2021 11:30:35 +0000 Subject: [PATCH 071/304] another import fix --- packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts b/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts index f0782964d93ce..56e6b2a64ce26 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts +++ b/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts @@ -5,12 +5,9 @@ import * as lambda from '@aws-cdk/aws-lambda'; import * as msk from '@aws-cdk/aws-msk'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import { Stack } from '@aws-cdk/core'; +import { Construct } from 'constructs'; import { StreamEventSource, StreamEventSourceProps } from './stream'; -// keep this import separate from other imports to reduce chance for merge conflicts with v2-main -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from '@aws-cdk/core'; - /** * Properties for a Kafka event source */ @@ -147,7 +144,7 @@ export class SelfManagedKafkaEventSource extends StreamEventSource { } public bind(target: lambda.IFunction) { - if (!Construct.isConstruct(target)) { throw new Error('Function is not a construct. Unexpected error.'); } + if (!(target instanceof Construct)) { throw new Error('Function is not a construct. Unexpected error.'); } target.addEventSourceMapping( this.mappingId(target), this.enrichMappingOptions({ From 02b4fcf2209420718e20cc82c882d9504af7c811 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Fri, 19 Mar 2021 11:12:47 +0000 Subject: [PATCH 072/304] removing duplicate Construct import From 381520f56249f2ac28f1589b5bd418a5f0781a1e Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Mon, 22 Mar 2021 18:19:08 +0000 Subject: [PATCH 073/304] chore: merge conflict cleanups --- .../@aws-cdk/aws-apigatewayv2/lib/websocket/integration.ts | 6 +----- packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts | 5 ----- packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/packages/@aws-cdk/aws-apigatewayv2/lib/websocket/integration.ts b/packages/@aws-cdk/aws-apigatewayv2/lib/websocket/integration.ts index e75bd00b63d95..2a7a450d3ec79 100644 --- a/packages/@aws-cdk/aws-apigatewayv2/lib/websocket/integration.ts +++ b/packages/@aws-cdk/aws-apigatewayv2/lib/websocket/integration.ts @@ -5,10 +5,6 @@ import { IIntegration } from '../common'; import { IWebSocketApi } from './api'; import { IWebSocketRoute } from './route'; -// v2 - keep this import as a separate section to reduce merge conflict when forward merging with the v2 branch. -// eslint-disable-next-line -import { Construct as CoreConstruct } from '@aws-cdk/core'; - /** * Represents an Integration for an WebSocket API. */ @@ -81,7 +77,7 @@ export interface WebSocketRouteIntegrationBindOptions { * If the `WebSocketRouteIntegration` being bound creates additional constructs, * this will be used as their parent scope. */ - readonly scope: CoreConstruct; + readonly scope: Construct; } /** diff --git a/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts b/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts index db66ab6617b3b..872a51cf23f43 100644 --- a/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts +++ b/packages/@aws-cdk/aws-dynamodb/lib/replica-provider.ts @@ -42,13 +42,8 @@ export class ReplicaProvider extends NestedStack { */ public readonly isCompleteHandler: lambda.Function; -<<<<<<< HEAD private constructor(scope: Construct, id: string, props: ReplicaProviderProps = {}) { - super(scope as CoreConstruct, id); -======= - private constructor(scope: Construct, id: string) { super(scope, id); ->>>>>>> refs/rewritten/origin-v2-main-2 const code = lambda.Code.fromAsset(path.join(__dirname, 'replica-handler')); diff --git a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts index 2212028f65f6e..ad027e669ebd4 100644 --- a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts @@ -233,7 +233,7 @@ export class Ec2Service extends BaseService implements IEc2Service { validate: () => !this.taskDefinition.defaultContainer ? ['A TaskDefinition must have at least one essential container'] : [], }); - this.node.addValidation({ validate: () => this.validateEc2Service() }); + this.node.addValidation({ validate: this.validateEc2Service.bind(this) }); } /** From 6565d2e65ba36f282b54e4607eb2ba7ed76756ac Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 24 Mar 2021 10:34:36 +0100 Subject: [PATCH 074/304] chore(release): 2.0.0-alpha.9 (#13762) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.9/CHANGELOG.md) --- CHANGELOG.v2.md | 114 ++++++++++++++++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 115 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 9dd4bffa9047c..01f82eab7abf8 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,120 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.9](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.9) (2021-03-24) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **lambda-nodejs:** the default runtime of a `NodejsFunction` is now Node.js 14.x if the environment from which it is deployed uses Node.js >= 14 and Node.js 12.x otherwise. +* **appmesh:** Backend, backend default and Virtual Service client policies structures are being altered +* **appmesh**: you must use the backend default interface to define backend defaults in `VirtualGateway`. + The property name also changed from `backendsDefaultClientPolicy` to `backendDefaults` +* **appmesh**: you must use the backend default interface to define backend defaults in `VirtualNode`, + (the property name also changed from `backendsDefaultClientPolicy` to `backendDefaults`), + and the `Backend` class to define a backend +* **appmesh**: you can no longer attach a client policy to a `VirtualService` +* **apigatewayv2:** `HttpApiMapping` (and related interfaces for `Attributed` and `Props`) has been renamed to `ApiMapping` +* **apigatewayv2:** `CommonStageOptions` has been renamed to `StageOptions` +* **apigatewayv2:** `HttpStage.fromStageName` has been removed in favour of `HttpStage.fromHttpStageAttributes` +* **apigatewayv2:** `DefaultDomainMappingOptions` has been removed in favour of `DomainMappingOptions` +* **apigatewayv2:** `HttpApiProps.defaultDomainMapping` has been changed from `DefaultDomainMappingOptions` to `DomainMappingOptions` +* **apigatewayv2:** `HttpApi.defaultStage` has been changed from `HttpStage` to `IStage` +* **apigatewayv2:** `IHttpApi.defaultStage` has been removed + +### Features + +* **amplify-domain:** Added config for auto subdomain creation ([#13342](https://github.com/aws/aws-cdk/issues/13342)) ([4c63f09](https://github.com/aws/aws-cdk/commit/4c63f09f1e9644877eaffbe78eede3854bec08ab)) +* **apigatewayv2:** http api - default authorizer options ([#13172](https://github.com/aws/aws-cdk/issues/13172)) ([53d9661](https://github.com/aws/aws-cdk/commit/53d96618ac006d7b3f6282c8b5c4ae7aeed2b104)) +* **apigatewayv2:** websocket api ([#13031](https://github.com/aws/aws-cdk/issues/13031)) ([fe1c839](https://github.com/aws/aws-cdk/commit/fe1c8393e0840fb273c4a5f325cb3cebc784bf4b)), closes [#2872](https://github.com/aws/aws-cdk/issues/2872) +* **appmesh:** add missing route match features ([#13350](https://github.com/aws/aws-cdk/issues/13350)) ([b71efd9](https://github.com/aws/aws-cdk/commit/b71efd9d12843ab4b495d53e565cec97d60748f3)), closes [#11645](https://github.com/aws/aws-cdk/issues/11645) +* **appmesh:** add route retry policies ([#13353](https://github.com/aws/aws-cdk/issues/13353)) ([66f7053](https://github.com/aws/aws-cdk/commit/66f7053a6c1f5cab540e975b30f5a2c6e35df58a)), closes [#11642](https://github.com/aws/aws-cdk/issues/11642) +* **aws-elasticloadbalancingv2:** add protocol version for ALB TargetGroups ([#13570](https://github.com/aws/aws-cdk/issues/13570)) ([165a3d8](https://github.com/aws/aws-cdk/commit/165a3d877b7ab23f29e42e1e74ee7c5cb35b7f24)), closes [#12869](https://github.com/aws/aws-cdk/issues/12869) +* **aws-events:** Event Bus target ([#12926](https://github.com/aws/aws-cdk/issues/12926)) ([ea91aa3](https://github.com/aws/aws-cdk/commit/ea91aa31db9e2f31c734ad6d7e1f64d5d432dfd4)), closes [#9473](https://github.com/aws/aws-cdk/issues/9473) +* **aws-route53-targets:** add global accelerator target to route53 alias targets ([#13407](https://github.com/aws/aws-cdk/issues/13407)) ([2672a55](https://github.com/aws/aws-cdk/commit/2672a55c393e5ce7dd9a230d921ec1be1a23e32a)), closes [#12839](https://github.com/aws/aws-cdk/issues/12839) +* **cfnspec:** cloudformation spec v30.0.0 ([#13365](https://github.com/aws/aws-cdk/issues/13365)) ([ae0185d](https://github.com/aws/aws-cdk/commit/ae0185dd089e3bb7c5639ebc1bce3f95e126f71c)) +* **cfnspec:** cloudformation spec v30.1.0 ([#13519](https://github.com/aws/aws-cdk/issues/13519)) ([7711981](https://github.com/aws/aws-cdk/commit/7711981ea30bfdffd21dd840d676be4a2b45c9ba)) +* **cfnspec:** cloudformation spec v31.0.0 ([#13633](https://github.com/aws/aws-cdk/issues/13633)) ([9b1c786](https://github.com/aws/aws-cdk/commit/9b1c786846f68fdac94b04b76d546c3d47e2251c)) +* **cloudwatch:** EC2 actions ([#13281](https://github.com/aws/aws-cdk/issues/13281)) ([319cfcd](https://github.com/aws/aws-cdk/commit/319cfcdaaf92e4e6edb8c2388d04dce0971aaf86)), closes [#13228](https://github.com/aws/aws-cdk/issues/13228) +* **codebuild:** allow setting queued timeout ([#13467](https://github.com/aws/aws-cdk/issues/13467)) ([e09250b](https://github.com/aws/aws-cdk/commit/e09250bc92c62cb8ee0a8706ce90d0e82faf2d84)), closes [#11364](https://github.com/aws/aws-cdk/issues/11364) +* **cognito:** user pools - sign in with apple ([#13160](https://github.com/aws/aws-cdk/issues/13160)) ([b965589](https://github.com/aws/aws-cdk/commit/b965589358f4c281aea36404276f08128e6ff3db)) +* **core:** `description` parameter in the CustomResourceProvider ([#13275](https://github.com/aws/aws-cdk/issues/13275)) ([78831cf](https://github.com/aws/aws-cdk/commit/78831cf9dec0407e7d827711183ac47be070f480)), closes [#13277](https://github.com/aws/aws-cdk/issues/13277) [#13276](https://github.com/aws/aws-cdk/issues/13276) +* **core:** customize bundling output packaging ([#13152](https://github.com/aws/aws-cdk/issues/13152)) ([6eca979](https://github.com/aws/aws-cdk/commit/6eca979f65542f3e44461588d8220e8c0bf76a6e)) +* **dynamodb:** custom timeout for replication operation ([#13354](https://github.com/aws/aws-cdk/issues/13354)) ([6a5a4f2](https://github.com/aws/aws-cdk/commit/6a5a4f2d9bb6b09ad0d10066200fe53bb45f0737)), closes [#10249](https://github.com/aws/aws-cdk/issues/10249) +* **ec2:** Add VPC endpoint for RDS ([#12497](https://github.com/aws/aws-cdk/issues/12497)) ([fc87574](https://github.com/aws/aws-cdk/commit/fc8757437c37a0947cced720ff363b8858850f72)), closes [#12402](https://github.com/aws/aws-cdk/issues/12402) +* **ec2:** ESP and AH IPsec protocols for Security Groups ([#13471](https://github.com/aws/aws-cdk/issues/13471)) ([f5a6647](https://github.com/aws/aws-cdk/commit/f5a6647bbe1885ba86029d10550a3ffaf80b6561)), closes [#13403](https://github.com/aws/aws-cdk/issues/13403) +* **ec2:** multipart user data ([#11843](https://github.com/aws/aws-cdk/issues/11843)) ([ed94c5e](https://github.com/aws/aws-cdk/commit/ed94c5ef1b9dd3042128b0e0c5bb14b3d9c7d497)), closes [#8315](https://github.com/aws/aws-cdk/issues/8315) +* **ecr:** add imageTagMutability prop ([#10557](https://github.com/aws/aws-cdk/issues/10557)) ([c4dc3bc](https://github.com/aws/aws-cdk/commit/c4dc3bce02790903593d80b070fca81fe7b7f08c)), closes [#4640](https://github.com/aws/aws-cdk/issues/4640) +* **ecs:** ability to access tag parameter value of TagParameterContainerImage ([#13340](https://github.com/aws/aws-cdk/issues/13340)) ([e567a41](https://github.com/aws/aws-cdk/commit/e567a410d47366855ee3e6011aa096ba987b8099)), closes [#13202](https://github.com/aws/aws-cdk/issues/13202) +* **ecs:** add port mappings to containers with props ([#13262](https://github.com/aws/aws-cdk/issues/13262)) ([f511639](https://github.com/aws/aws-cdk/commit/f511639bba156f6edd15896a4dd8e27b07671ea1)), closes [#13261](https://github.com/aws/aws-cdk/issues/13261) +* **ecs:** allow selection of container and port for SRV service discovery records ([#12798](https://github.com/aws/aws-cdk/issues/12798)) ([a452bc3](https://github.com/aws/aws-cdk/commit/a452bc385640762a043392a717d49de29abcc64e)), closes [#12796](https://github.com/aws/aws-cdk/issues/12796) +* **ecs:** allow users to provide a CloudMap service to associate with an ECS service ([#13192](https://github.com/aws/aws-cdk/issues/13192)) ([a7d314c](https://github.com/aws/aws-cdk/commit/a7d314c73b9473208d94bac29ad9bd8018e00204)), closes [#10057](https://github.com/aws/aws-cdk/issues/10057) +* **ecs-patterns:** Add ECS deployment circuit breaker support to higher-level constructs ([#12719](https://github.com/aws/aws-cdk/issues/12719)) ([e80a98a](https://github.com/aws/aws-cdk/commit/e80a98aa8839e9b9b89701158d82b991e9ebaa65)), closes [#12534](https://github.com/aws/aws-cdk/issues/12534) [#12360](https://github.com/aws/aws-cdk/issues/12360) +* **elbv2:** allow control of ingress rules on redirect listener ([#12768](https://github.com/aws/aws-cdk/issues/12768)) ([b7b441f](https://github.com/aws/aws-cdk/commit/b7b441f74a07d26fd8de23df84e7ab4663c89c0c)), closes [#12766](https://github.com/aws/aws-cdk/issues/12766) +* **events:** `EventBus.grantPutEventsTo` method for granular grants ([#13429](https://github.com/aws/aws-cdk/issues/13429)) ([122a232](https://github.com/aws/aws-cdk/commit/122a232343699304d8f206d3024fcddfb2a94bc8)), closes [#11228](https://github.com/aws/aws-cdk/issues/11228) +* **events:** archive events ([#12060](https://github.com/aws/aws-cdk/issues/12060)) ([465cd9c](https://github.com/aws/aws-cdk/commit/465cd9c434acff74070ca6d33891e1481e253128)), closes [#11531](https://github.com/aws/aws-cdk/issues/11531) +* **events:** dead letter queue for Lambda Targets ([#11617](https://github.com/aws/aws-cdk/issues/11617)) ([1bb3650](https://github.com/aws/aws-cdk/commit/1bb3650c5dd2087b05793a5e903cdfb80fc5c1ad)), closes [#11612](https://github.com/aws/aws-cdk/issues/11612) +* **events:** dead-letter queue support for CodeBuild ([#13448](https://github.com/aws/aws-cdk/issues/13448)) ([abfc0ea](https://github.com/aws/aws-cdk/commit/abfc0ea63c10d8033a529b7497cf093e318fdf12)), closes [#13447](https://github.com/aws/aws-cdk/issues/13447) +* **events:** dead-letter queue support for StepFunctions ([#13450](https://github.com/aws/aws-cdk/issues/13450)) ([0ebcb41](https://github.com/aws/aws-cdk/commit/0ebcb4160ee16f0f7ff1072a40c8951f9a983048)), closes [#13449](https://github.com/aws/aws-cdk/issues/13449) +* **events,applicationautoscaling:** schedule can be a token ([#13064](https://github.com/aws/aws-cdk/issues/13064)) ([b1449a1](https://github.com/aws/aws-cdk/commit/b1449a178b0f9a8a951c2546428f8d75c6431f0f)) +* **iam:** SAML identity provider ([#13393](https://github.com/aws/aws-cdk/issues/13393)) ([faa0c06](https://github.com/aws/aws-cdk/commit/faa0c060dad9a5045495707e28fc85f223d4db5d)), closes [#5320](https://github.com/aws/aws-cdk/issues/5320) +* **lambda:** Code.fromDockerBuild ([#13318](https://github.com/aws/aws-cdk/issues/13318)) ([ad01099](https://github.com/aws/aws-cdk/commit/ad01099d5b8f835c3b87d7d20fd2dc1a5df2fd6f)), closes [#13273](https://github.com/aws/aws-cdk/issues/13273) +* **lambda-event-sources:** msk and self-managed kafka event sources ([#12507](https://github.com/aws/aws-cdk/issues/12507)) ([73209e1](https://github.com/aws/aws-cdk/commit/73209e17f314cf61f703d51ef3b9f197d2f1bdc3)), closes [#12099](https://github.com/aws/aws-cdk/issues/12099) +* **neptune:** high level constructs for db clusters and instances ([#12763](https://github.com/aws/aws-cdk/issues/12763)) ([c366837](https://github.com/aws/aws-cdk/commit/c36683701d88eb0c53fdd2add66b10c47c05f56b)), closes [aws#12762](https://github.com/aws/aws/issues/12762) +* **neptune:** Support IAM authentication ([#13462](https://github.com/aws/aws-cdk/issues/13462)) ([6c5b1f4](https://github.com/aws/aws-cdk/commit/6c5b1f42fb73a132d47945b529bab73557f2b9d8)), closes [#13461](https://github.com/aws/aws-cdk/issues/13461) +* **rds:** make rds secret name configurable ([#13626](https://github.com/aws/aws-cdk/issues/13626)) ([62a91b7](https://github.com/aws/aws-cdk/commit/62a91b7a30f8b6419a983d7ea7bdb3c39f2fdfd0)), closes [#8984](https://github.com/aws/aws-cdk/issues/8984) +* **region-info:** added AppMesh ECR account for af-south-1 region ([#12814](https://github.com/aws/aws-cdk/issues/12814)) ([b3fba43](https://github.com/aws/aws-cdk/commit/b3fba43a047df61e713e8d2271d6deee7e07b716)) +* **sns:** enable passing PolicyDocument to TopicPolicy ([#10559](https://github.com/aws/aws-cdk/issues/10559)) ([0d9c300](https://github.com/aws/aws-cdk/commit/0d9c300f5244d3e5720832343830947f6cc5b352)), closes [#7934](https://github.com/aws/aws-cdk/issues/7934) +* **stepfunctions-tasks:** Support calling ApiGateway REST and HTTP APIs ([#13033](https://github.com/aws/aws-cdk/issues/13033)) ([cc608d0](https://github.com/aws/aws-cdk/commit/cc608d055ffefb798ad6378ab07f36cb241897da)), closes [#11565](https://github.com/aws/aws-cdk/issues/11565) [#11566](https://github.com/aws/aws-cdk/issues/11566) [#11565](https://github.com/aws/aws-cdk/issues/11565) + + +### Bug Fixes + +* **appmesh:** Move Client Policy from Virtual Service to backend structure ([#12943](https://github.com/aws/aws-cdk/issues/12943)) ([d3f4284](https://github.com/aws/aws-cdk/commit/d3f428435976c55ca950279cfc841665fd504370)), closes [#11996](https://github.com/aws/aws-cdk/issues/11996) +* **autoscaling:** AutoScaling on percentile metrics doesn't work ([#13366](https://github.com/aws/aws-cdk/issues/13366)) ([46114bb](https://github.com/aws/aws-cdk/commit/46114bb1f4702019a8873b9162d0a9f10763bc61)), closes [#13144](https://github.com/aws/aws-cdk/issues/13144) +* **aws-ecs:** drain hook lambda allows tasks to stop gracefully ([#13559](https://github.com/aws/aws-cdk/issues/13559)) ([3e1148e](https://github.com/aws/aws-cdk/commit/3e1148e74dce0e15379e2cfa372bd367183f9c6f)), closes [#13506](https://github.com/aws/aws-cdk/issues/13506) +* **cfn-include:** allow boolean values for string-typed properties ([#13508](https://github.com/aws/aws-cdk/issues/13508)) ([e5dab7c](https://github.com/aws/aws-cdk/commit/e5dab7cbc67c234d191c38a8b8b84b634070b15b)) +* **cfn-include:** allow dynamic mappings to be used in Fn::FindInMap ([#13428](https://github.com/aws/aws-cdk/issues/13428)) ([623675d](https://github.com/aws/aws-cdk/commit/623675d2f8fb2786f23beb87994e687e8a7c6612)) +* **cloudfront:** cannot add two EdgeFunctions with same aliases ([#13324](https://github.com/aws/aws-cdk/issues/13324)) ([1f35351](https://github.com/aws/aws-cdk/commit/1f3535145d22b2b13ebbcbfe31a3bfd73519352d)), closes [#13237](https://github.com/aws/aws-cdk/issues/13237) +* **cloudwatch:** cannot create Alarms from labeled metrics that start with a digit ([#13560](https://github.com/aws/aws-cdk/issues/13560)) ([278029f](https://github.com/aws/aws-cdk/commit/278029f25b41d956091835364e5a8de91429712c)), closes [#13434](https://github.com/aws/aws-cdk/issues/13434) +* **cloudwatch:** MathExpression period of <5 minutes is not respected ([#13078](https://github.com/aws/aws-cdk/issues/13078)) ([d9ee914](https://github.com/aws/aws-cdk/commit/d9ee91432918aa113f728abdd61295096ed1512f)), closes [#9156](https://github.com/aws/aws-cdk/issues/9156) +* **cloudwatch:** metric `label` not rendered into Alarms ([#13070](https://github.com/aws/aws-cdk/issues/13070)) ([cbcc712](https://github.com/aws/aws-cdk/commit/cbcc712e0c4c44c83c7f4d1e8a544bccfa26bb56)) +* **codebuild:** allow FILE_PATH webhook filter for BitBucket ([#13186](https://github.com/aws/aws-cdk/issues/13186)) ([cbed348](https://github.com/aws/aws-cdk/commit/cbed3488f03bdfba16f3950bda653535c8999db1)), closes [#13175](https://github.com/aws/aws-cdk/issues/13175) +* **codedeploy:** Use aws-cli instead of awscli for yum ([#13655](https://github.com/aws/aws-cdk/issues/13655)) ([449ce12](https://github.com/aws/aws-cdk/commit/449ce129b860ddc302e1e5270d5819ebe5aa27bf)) +* **core:** `toJsonString()` cannot handle list intrinsics ([#13544](https://github.com/aws/aws-cdk/issues/13544)) ([a5be042](https://github.com/aws/aws-cdk/commit/a5be04270c2a372132964ab13d080a16f1a6f00c)), closes [#13465](https://github.com/aws/aws-cdk/issues/13465) +* **core:** custom resource provider NODEJS_12 now looks like Lambda's NODEJS_12_X, add Node 14 ([#13301](https://github.com/aws/aws-cdk/issues/13301)) ([3413b2f](https://github.com/aws/aws-cdk/commit/3413b2f887596d11dfb53c0e99c2a1788095a2ad)) +* **dynamodb:** replicas not created on table replacement ([#13300](https://github.com/aws/aws-cdk/issues/13300)) ([c7c424f](https://github.com/aws/aws-cdk/commit/c7c424fec42f1f14ab8bdc3011f5bdb602918aa3)), closes [#12332](https://github.com/aws/aws-cdk/issues/12332) +* **ec2:** fix typo's in WindowsImage constants ([#13446](https://github.com/aws/aws-cdk/issues/13446)) ([781aa97](https://github.com/aws/aws-cdk/commit/781aa97d53fdb7511c34ddde884fdcd84c3f68a6)) +* **ec2:** NAT provider's default outbound rules cannot be disabled ([#12674](https://github.com/aws/aws-cdk/issues/12674)) ([664133a](https://github.com/aws/aws-cdk/commit/664133a35da2bd096a237971ce662f3dd38b297f)), closes [#12673](https://github.com/aws/aws-cdk/issues/12673) +* **ec2:** readme grammar ([#13180](https://github.com/aws/aws-cdk/issues/13180)) ([fe4f056](https://github.com/aws/aws-cdk/commit/fe4f05678c06d634d3fe9e1b608e444a57f67b9c)) +* **ec2:** Security Groups support all protocols ([#13593](https://github.com/aws/aws-cdk/issues/13593)) ([8c6b3eb](https://github.com/aws/aws-cdk/commit/8c6b3ebea464e27f68ffcab32857d8baec29c413)), closes [#13403](https://github.com/aws/aws-cdk/issues/13403) +* **ec2:** Throw error on empty InitFile content ([#13009](https://github.com/aws/aws-cdk/issues/13009)) ([#13119](https://github.com/aws/aws-cdk/issues/13119)) ([81a78a3](https://github.com/aws/aws-cdk/commit/81a78a31408276ebb020e45b15ddca7a2c57ae50)) +* **ecr:** Allow referencing an EcrImage by digest instead of tag ([#13299](https://github.com/aws/aws-cdk/issues/13299)) ([266a621](https://github.com/aws/aws-cdk/commit/266a621abfc34c62ff1e26de9cb8cf0687588f89)), closes [#5082](https://github.com/aws/aws-cdk/issues/5082) +* **ecr:** Generate valid CloudFormation for imageScanOnPush ([#13420](https://github.com/aws/aws-cdk/issues/13420)) ([278fba5](https://github.com/aws/aws-cdk/commit/278fba5df4a3d785e49bdb57ccf88fd34bacacbb)), closes [#13418](https://github.com/aws/aws-cdk/issues/13418) +* **ecs:** services essential container exceptions thrown too soon ([#13240](https://github.com/aws/aws-cdk/issues/13240)) ([c174f6c](https://github.com/aws/aws-cdk/commit/c174f6c2f4dd909e07be34b66bd6b3a92d5e8484)), closes [#13239](https://github.com/aws/aws-cdk/issues/13239) +* **elasticloadbalancingv2:** should allow more than 2 certificates ([#13332](https://github.com/aws/aws-cdk/issues/13332)) ([d3155e9](https://github.com/aws/aws-cdk/commit/d3155e97fd9331a4732396941ce4ad20613fe81c)), closes [#13150](https://github.com/aws/aws-cdk/issues/13150) +* **elasticloadbalancingv2:** upgrade to v1.92.0 drops certificates on ALB if more than 2 certificates exist ([#13490](https://github.com/aws/aws-cdk/issues/13490)) ([01b94f8](https://github.com/aws/aws-cdk/commit/01b94f8aa6c88b5e676c784aec4c879acddc042f)), closes [#13332](https://github.com/aws/aws-cdk/issues/13332) [#13437](https://github.com/aws/aws-cdk/issues/13437) +* **events:** cannot trigger multiple Lambdas from the same Rule ([#13260](https://github.com/aws/aws-cdk/issues/13260)) ([c8c1762](https://github.com/aws/aws-cdk/commit/c8c1762c213aad1062c3a0bc48b22b05c3a0a185)), closes [#13231](https://github.com/aws/aws-cdk/issues/13231) +* **events:** imported ECS Task Definition cannot be used as target ([#13293](https://github.com/aws/aws-cdk/issues/13293)) ([6f7cebd](https://github.com/aws/aws-cdk/commit/6f7cebdf61073cc1fb358fcac5f5b2156389cb81)), closes [#12811](https://github.com/aws/aws-cdk/issues/12811) +* **events:** imported EventBus does not correctly register source account ([#13481](https://github.com/aws/aws-cdk/issues/13481)) ([57e5404](https://github.com/aws/aws-cdk/commit/57e540432c1446f2233a9b0c0f4caba4e9e155d9)), closes [#13469](https://github.com/aws/aws-cdk/issues/13469) +* **iam:** oidc-provider can't pull from hosts requiring SNI ([#13397](https://github.com/aws/aws-cdk/issues/13397)) ([90dbfb5](https://github.com/aws/aws-cdk/commit/90dbfb5eec19559717ac6b30f25451461027e731)) +* **iam:** policy statement tries to validate tokens ([#13493](https://github.com/aws/aws-cdk/issues/13493)) ([8d592ea](https://github.com/aws/aws-cdk/commit/8d592ea89c0eda19329d5a31517522ec02ceb874)), closes [#13479](https://github.com/aws/aws-cdk/issues/13479) +* **init:** Python init template's stack ID doesn't match other languages ([#13480](https://github.com/aws/aws-cdk/issues/13480)) ([3f1c02d](https://github.com/aws/aws-cdk/commit/3f1c02dac7a50ce7caebce1e7f8953f6e4937e6b)) +* **lambda:** fromDockerBuild output is located under /asset ([#13539](https://github.com/aws/aws-cdk/issues/13539)) ([77449f6](https://github.com/aws/aws-cdk/commit/77449f61e7075fef1240fc52becb8ea60b9ea9ad)), closes [#13439](https://github.com/aws/aws-cdk/issues/13439) +* **lambda:** incorrect values for prop UntrustedArtifactOnDeployment ([#13667](https://github.com/aws/aws-cdk/issues/13667)) ([0757686](https://github.com/aws/aws-cdk/commit/0757686790c25ab1cc0f040d9f6039cef6648d44)), closes [#13586](https://github.com/aws/aws-cdk/issues/13586) +* **lambda-nodejs:** paths with spaces break esbuild ([#13312](https://github.com/aws/aws-cdk/issues/13312)) ([f983fbb](https://github.com/aws/aws-cdk/commit/f983fbb474ecd6727b0c5a35333718cc55d78bf1)), closes [#13311](https://github.com/aws/aws-cdk/issues/13311) +* **neptune:** create correct IAM statement in grantConnect() ([#13641](https://github.com/aws/aws-cdk/issues/13641)) ([2e7f046](https://github.com/aws/aws-cdk/commit/2e7f0462fef80714abb923cf0c14ed01d698b4fa)), closes [#13640](https://github.com/aws/aws-cdk/issues/13640) +* **python:** change Python namespace to `aws_cdk` ([#13489](https://github.com/aws/aws-cdk/issues/13489)) ([2ff5ca1](https://github.com/aws/aws-cdk/commit/2ff5ca1b4fa34ad6ed9e34c01bd49cc1583cab55)) +* **region-info:** ap-northeast-3 data not correctly registered ([#13564](https://github.com/aws/aws-cdk/issues/13564)) ([64da84b](https://github.com/aws/aws-cdk/commit/64da84be5c60bb8132551bcc27a7ca9c7effe95d)), closes [#13561](https://github.com/aws/aws-cdk/issues/13561) +* **s3:** Notifications fail to deploy due to incompatible node runtime ([#13624](https://github.com/aws/aws-cdk/issues/13624)) ([aa32cf6](https://github.com/aws/aws-cdk/commit/aa32cf64d20e4ba1eb2bc8236daeb05e89e4c12d)) +* **s3:** Notifications fail to deploy due to incompatible node runtime ([#13624](https://github.com/aws/aws-cdk/issues/13624)) ([26bc3d4](https://github.com/aws/aws-cdk/commit/26bc3d4951a96a4bdf3e3e10464a4e3b80ed563f)) +* **stepfunctions:** `SageMakeUpdateEndpoint` adds insufficient permissions ([#13170](https://github.com/aws/aws-cdk/issues/13170)) ([6126e49](https://github.com/aws/aws-cdk/commit/6126e499e5ca22b5f751af4f4f05d74f696829f1)), closes [#11594](https://github.com/aws/aws-cdk/issues/11594) +* **stepfunctions:** no validation on state machine name ([#13387](https://github.com/aws/aws-cdk/issues/13387)) ([6c3d407](https://github.com/aws/aws-cdk/commit/6c3d4071746179dde30f615602592c2523daa56e)), closes [#13289](https://github.com/aws/aws-cdk/issues/13289) +* use NodeJS 14 for all packaged custom resources ([#13488](https://github.com/aws/aws-cdk/issues/13488)) ([20a2820](https://github.com/aws/aws-cdk/commit/20a2820ee4d022663fcd0928fbc0f61153ae953f)), closes [#13534](https://github.com/aws/aws-cdk/issues/13534) [#13484](https://github.com/aws/aws-cdk/issues/13484) + + +* **lambda-nodejs:** update default runtime ([#13664](https://github.com/aws/aws-cdk/issues/13664)) ([ca42461](https://github.com/aws/aws-cdk/commit/ca42461acd4f42a8bd7c0fb05788c7ea50834de2)) + ## [2.0.0-alpha.8](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.8) (2021-03-17) diff --git a/version.v2.json b/version.v2.json index 35aa75d46a8ec..cbf4323ab9730 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.8" + "version": "2.0.0-alpha.9" } From c136784640ae64e88251494ba882018f07da9495 Mon Sep 17 00:00:00 2001 From: Nick Lynch Date: Fri, 26 Mar 2021 10:23:52 +0000 Subject: [PATCH 075/304] chore: constructs imports --- packages/@aws-cdk/aws-ec2/lib/vpc.ts | 2 +- .../@aws-cdk/aws-ec2/test/integ.client-vpn-endpoint.ts | 6 +----- packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts | 6 ++---- packages/@aws-cdk/aws-events-targets/lib/util.ts | 9 +++------ packages/@aws-cdk/aws-s3-assets/lib/asset.ts | 3 --- packages/@monocdk-experiment/assert/package.json | 4 ++-- packages/decdk/package.json | 2 +- 7 files changed, 10 insertions(+), 22 deletions(-) diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc.ts b/packages/@aws-cdk/aws-ec2/lib/vpc.ts index fd0d79c41106d..d5a1854ea0cfe 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc.ts @@ -4,7 +4,7 @@ import { IDependable, IResource, Lazy, Resource, Stack, Token, Tags, Names, } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; -import { Construct, Node } from 'constructs'; +import { Construct, IConstruct, Node } from 'constructs'; import { ClientVpnEndpoint, ClientVpnEndpointOptions } from './client-vpn-endpoint'; import { CfnEIP, CfnInternetGateway, CfnNatGateway, CfnRoute, CfnRouteTable, CfnSubnet, diff --git a/packages/@aws-cdk/aws-ec2/test/integ.client-vpn-endpoint.ts b/packages/@aws-cdk/aws-ec2/test/integ.client-vpn-endpoint.ts index 878f8f057bb3d..22a38b9b3298d 100644 --- a/packages/@aws-cdk/aws-ec2/test/integ.client-vpn-endpoint.ts +++ b/packages/@aws-cdk/aws-ec2/test/integ.client-vpn-endpoint.ts @@ -4,10 +4,6 @@ import { App, CustomResource, CustomResourceProvider, CustomResourceProviderRunt import { Construct } from 'constructs'; import * as ec2 from '../lib'; -// keep this import separate from other imports to reduce chance for merge conflicts with v2-main -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct as CoreConstruct } from '@aws-cdk/core'; - class TestStack extends Stack { constructor(scope: Construct, id: string, props?: StackProps) { super(scope, id, props); @@ -33,7 +29,7 @@ class TestStack extends Stack { const IMPORT_CERTIFICATES_RESOURCE_TYPE = 'Custom::ACMImportCertificates'; -class ImportCertificates extends CoreConstruct { +class ImportCertificates extends Construct { public readonly serverCertificateArn: string; public readonly clientCertificateArn: string; diff --git a/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts b/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts index 9f0f3e7c8f714..85556d493210f 100644 --- a/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts +++ b/packages/@aws-cdk/aws-ecr-assets/lib/image-asset.ts @@ -3,13 +3,11 @@ import * as path from 'path'; import * as ecr from '@aws-cdk/aws-ecr'; import { Annotations, FeatureFlags, IgnoreMode, Stack, Token } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; +import { Construct } from 'constructs'; // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line import { FingerprintOptions, IAsset, Staging } from '@aws-cdk/assets'; -// keep this import separate from other imports to reduce chance for merge conflicts with v2-main -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from 'constructs'; /** * Options for DockerImageAsset @@ -70,7 +68,7 @@ export interface DockerImageAssetProps extends DockerImageAssetOptions { * * The image will be created in build time and uploaded to an ECR repository. */ -export class DockerImageAsset extends CoreConstruct implements IAsset { +export class DockerImageAsset extends Construct implements IAsset { /** * The full URI of the image (including a tag). Use this reference to pull * the asset. diff --git a/packages/@aws-cdk/aws-events-targets/lib/util.ts b/packages/@aws-cdk/aws-events-targets/lib/util.ts index 45f68b9e2c1f2..224b6f80fa57e 100644 --- a/packages/@aws-cdk/aws-events-targets/lib/util.ts +++ b/packages/@aws-cdk/aws-events-targets/lib/util.ts @@ -2,11 +2,8 @@ import * as events from '@aws-cdk/aws-events'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; import * as sqs from '@aws-cdk/aws-sqs'; -import { Annotations, ConstructNode, IConstruct, Names, Token, TokenComparison, Duration } from '@aws-cdk/core'; - -// keep this import separate from other imports to reduce chance for merge conflicts with v2-main -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from 'constructs'; +import { Annotations, Names, Token, TokenComparison, Duration } from '@aws-cdk/core'; +import { Construct, IConstruct, Node } from 'constructs'; /** * The generic properties for an RuleTarget @@ -91,7 +88,7 @@ export function singletonEventRole(scope: IConstruct, policyStatements: iam.Poli */ export function addLambdaPermission(rule: events.IRule, handler: lambda.IFunction): void { let scope: Construct | undefined; - let node: ConstructNode = handler.permissionsNode; + let node: Node = handler.permissionsNode; let permissionId = `AllowEventRule${Names.nodeUniqueId(rule.node)}`; if (rule instanceof Construct) { // Place the Permission resource in the same stack as Rule rather than the Function diff --git a/packages/@aws-cdk/aws-s3-assets/lib/asset.ts b/packages/@aws-cdk/aws-s3-assets/lib/asset.ts index 320c7a32af25c..6a44cce8614f7 100644 --- a/packages/@aws-cdk/aws-s3-assets/lib/asset.ts +++ b/packages/@aws-cdk/aws-s3-assets/lib/asset.ts @@ -10,9 +10,6 @@ import { toSymlinkFollow } from './compat'; // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line no-duplicate-imports, import/order import { CopyOptions } from '@aws-cdk/assets'; -// keep this import separate from other imports to reduce chance for merge conflicts with v2-main -// eslint-disable-next-line no-duplicate-imports, import/order -import { Construct as CoreConstruct } from '@aws-cdk/core'; export interface AssetOptions extends CopyOptions, cdk.AssetOptions { /** diff --git a/packages/@monocdk-experiment/assert/package.json b/packages/@monocdk-experiment/assert/package.json index ed8e7440297d7..b8fccadd706f9 100644 --- a/packages/@monocdk-experiment/assert/package.json +++ b/packages/@monocdk-experiment/assert/package.json @@ -41,7 +41,7 @@ "@types/jest": "^26.0.21", "@types/node": "^10.17.55", "cdk-build-tools": "0.0.0", - "constructs": "^3.3.69", + "constructs": "^10.0.0", "jest": "^26.6.3", "monocdk": "0.0.0", "pkglint": "0.0.0", @@ -51,7 +51,7 @@ "@aws-cdk/cloudformation-diff": "0.0.0" }, "peerDependencies": { - "constructs": "^3.3.69", + "constructs": "^10.0.0", "jest": "^26.6.3", "monocdk": "^0.0.0" }, diff --git a/packages/decdk/package.json b/packages/decdk/package.json index aabbc36d8f0e5..e8ed3f0779ca1 100644 --- a/packages/decdk/package.json +++ b/packages/decdk/package.json @@ -212,7 +212,7 @@ "@aws-cdk/pipelines": "0.0.0", "@aws-cdk/region-info": "0.0.0", "@aws-cdk/yaml-cfn": "0.0.0", - "constructs": "^3.3.69", + "constructs": "^10.0.0", "fs-extra": "^9.1.0", "jsii-reflect": "^1.26.0", "jsonschema": "^1.4.0", From 3c1ac2b8f8c6fed98c49f01e6f8cc61732bf1ac2 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 31 Mar 2021 11:33:20 +0200 Subject: [PATCH 076/304] chore(release): 2.0.0-alpha.10 (#13897) See [CHANGELOG](https://github.com/aws/aws-cdk/blob/bump/2.0.0-alpha.10/CHANGELOG.md) --- CHANGELOG.v2.md | 145 ++++++++++++++++++++++++++++++++++++++++++++++++ version.v2.json | 2 +- 2 files changed, 146 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.v2.md b/CHANGELOG.v2.md index 01f82eab7abf8..2691f3d64b347 100644 --- a/CHANGELOG.v2.md +++ b/CHANGELOG.v2.md @@ -2,6 +2,151 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.0.0-alpha.10](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.10) (2021-03-31) + + +### ⚠ BREAKING CHANGES TO EXPERIMENTAL FEATURES + +* **core:** The type of the `image` property in `BundlingOptions` +is changed from `BundlingDockerImage` to `DockerImage`. +* **core:** The return type of the `DockerImage.fromBuild()` API is +changed from `BundlingDockerImage` to `DockerImage`. +* **lambda-nodejs:** The type of `image` property in the +`Bundling` class is changed from `BundlingDockerImage` to +`DockerImage`. +* **lambda-nodejs**: The type of `dockerImage` property in +`BundlingOptions` is changed from `BundlingDockerImage` to +`DockerImage`. +* **apigatewayv2:** The type of `allowMethods` property under `corsPreflight` +section is changed from `HttpMethod` to `CorsHttpMethod`. +* **lambda-nodejs:** the default runtime of a `NodejsFunction` is now Node.js 14.x if the environment from which it is deployed uses Node.js >= 14 and Node.js 12.x otherwise. +* **appmesh:** Backend, backend default and Virtual Service client policies structures are being altered +* **appmesh**: you must use the backend default interface to define backend defaults in `VirtualGateway`. + The property name also changed from `backendsDefaultClientPolicy` to `backendDefaults` +* **appmesh**: you must use the backend default interface to define backend defaults in `VirtualNode`, + (the property name also changed from `backendsDefaultClientPolicy` to `backendDefaults`), + and the `Backend` class to define a backend +* **appmesh**: you can no longer attach a client policy to a `VirtualService` +* **apigatewayv2:** `HttpApiMapping` (and related interfaces for `Attributed` and `Props`) has been renamed to `ApiMapping` +* **apigatewayv2:** `CommonStageOptions` has been renamed to `StageOptions` +* **apigatewayv2:** `HttpStage.fromStageName` has been removed in favour of `HttpStage.fromHttpStageAttributes` +* **apigatewayv2:** `DefaultDomainMappingOptions` has been removed in favour of `DomainMappingOptions` +* **apigatewayv2:** `HttpApiProps.defaultDomainMapping` has been changed from `DefaultDomainMappingOptions` to `DomainMappingOptions` +* **apigatewayv2:** `HttpApi.defaultStage` has been changed from `HttpStage` to `IStage` +* **apigatewayv2:** `IHttpApi.defaultStage` has been removed + +### Features + +* **acmpca:** make the ACM PCA module Generally Available (stable) ([#13778](https://github.com/aws/aws-cdk/issues/13778)) ([7ca79ff](https://github.com/aws/aws-cdk/commit/7ca79ffad7c18692edaa2dd26cd0d4d441ecf468)) +* **amplify-domain:** Added config for auto subdomain creation ([#13342](https://github.com/aws/aws-cdk/issues/13342)) ([4c63f09](https://github.com/aws/aws-cdk/commit/4c63f09f1e9644877eaffbe78eede3854bec08ab)) +* **apigatewayv2:** http api - default authorizer options ([#13172](https://github.com/aws/aws-cdk/issues/13172)) ([53d9661](https://github.com/aws/aws-cdk/commit/53d96618ac006d7b3f6282c8b5c4ae7aeed2b104)) +* **apigatewayv2:** websocket api ([#13031](https://github.com/aws/aws-cdk/issues/13031)) ([fe1c839](https://github.com/aws/aws-cdk/commit/fe1c8393e0840fb273c4a5f325cb3cebc784bf4b)), closes [#2872](https://github.com/aws/aws-cdk/issues/2872) +* **appmesh:** add missing route match features ([#13350](https://github.com/aws/aws-cdk/issues/13350)) ([b71efd9](https://github.com/aws/aws-cdk/commit/b71efd9d12843ab4b495d53e565cec97d60748f3)), closes [#11645](https://github.com/aws/aws-cdk/issues/11645) +* **appmesh:** add route retry policies ([#13353](https://github.com/aws/aws-cdk/issues/13353)) ([66f7053](https://github.com/aws/aws-cdk/commit/66f7053a6c1f5cab540e975b30f5a2c6e35df58a)), closes [#11642](https://github.com/aws/aws-cdk/issues/11642) +* **aws-elasticloadbalancingv2:** add protocol version for ALB TargetGroups ([#13570](https://github.com/aws/aws-cdk/issues/13570)) ([165a3d8](https://github.com/aws/aws-cdk/commit/165a3d877b7ab23f29e42e1e74ee7c5cb35b7f24)), closes [#12869](https://github.com/aws/aws-cdk/issues/12869) +* **aws-events:** Event Bus target ([#12926](https://github.com/aws/aws-cdk/issues/12926)) ([ea91aa3](https://github.com/aws/aws-cdk/commit/ea91aa31db9e2f31c734ad6d7e1f64d5d432dfd4)), closes [#9473](https://github.com/aws/aws-cdk/issues/9473) +* **aws-route53-targets:** add global accelerator target to route53 alias targets ([#13407](https://github.com/aws/aws-cdk/issues/13407)) ([2672a55](https://github.com/aws/aws-cdk/commit/2672a55c393e5ce7dd9a230d921ec1be1a23e32a)), closes [#12839](https://github.com/aws/aws-cdk/issues/12839) +* **cfnspec:** cloudformation spec v30.0.0 ([#13365](https://github.com/aws/aws-cdk/issues/13365)) ([ae0185d](https://github.com/aws/aws-cdk/commit/ae0185dd089e3bb7c5639ebc1bce3f95e126f71c)) +* **cfnspec:** cloudformation spec v30.1.0 ([#13519](https://github.com/aws/aws-cdk/issues/13519)) ([7711981](https://github.com/aws/aws-cdk/commit/7711981ea30bfdffd21dd840d676be4a2b45c9ba)) +* **cfnspec:** cloudformation spec v31.0.0 ([#13633](https://github.com/aws/aws-cdk/issues/13633)) ([9b1c786](https://github.com/aws/aws-cdk/commit/9b1c786846f68fdac94b04b76d546c3d47e2251c)) +* **cfnspec:** cloudformation spec v31.1.0 ([#13763](https://github.com/aws/aws-cdk/issues/13763)) ([41a2b2e](https://github.com/aws/aws-cdk/commit/41a2b2ef39a3d2b46ae6e2c6f3480e786e8022b9)) +* **cloudwatch:** EC2 actions ([#13281](https://github.com/aws/aws-cdk/issues/13281)) ([319cfcd](https://github.com/aws/aws-cdk/commit/319cfcdaaf92e4e6edb8c2388d04dce0971aaf86)), closes [#13228](https://github.com/aws/aws-cdk/issues/13228) +* **codebuild:** allow setting queued timeout ([#13467](https://github.com/aws/aws-cdk/issues/13467)) ([e09250b](https://github.com/aws/aws-cdk/commit/e09250bc92c62cb8ee0a8706ce90d0e82faf2d84)), closes [#11364](https://github.com/aws/aws-cdk/issues/11364) +* **codepipeline-actions:** Add detectChanges option to BitBucketSourceAction ([#13656](https://github.com/aws/aws-cdk/issues/13656)) ([f2436bf](https://github.com/aws/aws-cdk/commit/f2436bf4ff3ce7665a6cde318ad3fc7716ca941f)) +* **cognito:** user pools - sign in with apple ([#13160](https://github.com/aws/aws-cdk/issues/13160)) ([b965589](https://github.com/aws/aws-cdk/commit/b965589358f4c281aea36404276f08128e6ff3db)) +* **core:** `description` parameter in the CustomResourceProvider ([#13275](https://github.com/aws/aws-cdk/issues/13275)) ([78831cf](https://github.com/aws/aws-cdk/commit/78831cf9dec0407e7d827711183ac47be070f480)), closes [#13277](https://github.com/aws/aws-cdk/issues/13277) [#13276](https://github.com/aws/aws-cdk/issues/13276) +* **core:** customize bundling output packaging ([#13152](https://github.com/aws/aws-cdk/issues/13152)) ([6eca979](https://github.com/aws/aws-cdk/commit/6eca979f65542f3e44461588d8220e8c0bf76a6e)) +* **dynamodb:** custom timeout for replication operation ([#13354](https://github.com/aws/aws-cdk/issues/13354)) ([6a5a4f2](https://github.com/aws/aws-cdk/commit/6a5a4f2d9bb6b09ad0d10066200fe53bb45f0737)), closes [#10249](https://github.com/aws/aws-cdk/issues/10249) +* **ec2:** Add VPC endpoint for RDS ([#12497](https://github.com/aws/aws-cdk/issues/12497)) ([fc87574](https://github.com/aws/aws-cdk/commit/fc8757437c37a0947cced720ff363b8858850f72)), closes [#12402](https://github.com/aws/aws-cdk/issues/12402) +* **ec2:** client vpn endpoint ([#12234](https://github.com/aws/aws-cdk/issues/12234)) ([4fde59a](https://github.com/aws/aws-cdk/commit/4fde59ac64e8440a05d17a9b5c5622a9dfb43b1f)), closes [#4206](https://github.com/aws/aws-cdk/issues/4206) +* **ec2:** ESP and AH IPsec protocols for Security Groups ([#13471](https://github.com/aws/aws-cdk/issues/13471)) ([f5a6647](https://github.com/aws/aws-cdk/commit/f5a6647bbe1885ba86029d10550a3ffaf80b6561)), closes [#13403](https://github.com/aws/aws-cdk/issues/13403) +* **ec2:** multipart user data ([#11843](https://github.com/aws/aws-cdk/issues/11843)) ([ed94c5e](https://github.com/aws/aws-cdk/commit/ed94c5ef1b9dd3042128b0e0c5bb14b3d9c7d497)), closes [#8315](https://github.com/aws/aws-cdk/issues/8315) +* **ecr:** add imageTagMutability prop ([#10557](https://github.com/aws/aws-cdk/issues/10557)) ([c4dc3bc](https://github.com/aws/aws-cdk/commit/c4dc3bce02790903593d80b070fca81fe7b7f08c)), closes [#4640](https://github.com/aws/aws-cdk/issues/4640) +* **ecs:** ability to access tag parameter value of TagParameterContainerImage ([#13340](https://github.com/aws/aws-cdk/issues/13340)) ([e567a41](https://github.com/aws/aws-cdk/commit/e567a410d47366855ee3e6011aa096ba987b8099)), closes [#13202](https://github.com/aws/aws-cdk/issues/13202) +* **ecs:** add port mappings to containers with props ([#13262](https://github.com/aws/aws-cdk/issues/13262)) ([f511639](https://github.com/aws/aws-cdk/commit/f511639bba156f6edd15896a4dd8e27b07671ea1)), closes [#13261](https://github.com/aws/aws-cdk/issues/13261) +* **ecs:** allow selection of container and port for SRV service discovery records ([#12798](https://github.com/aws/aws-cdk/issues/12798)) ([a452bc3](https://github.com/aws/aws-cdk/commit/a452bc385640762a043392a717d49de29abcc64e)), closes [#12796](https://github.com/aws/aws-cdk/issues/12796) +* **ecs:** allow users to provide a CloudMap service to associate with an ECS service ([#13192](https://github.com/aws/aws-cdk/issues/13192)) ([a7d314c](https://github.com/aws/aws-cdk/commit/a7d314c73b9473208d94bac29ad9bd8018e00204)), closes [#10057](https://github.com/aws/aws-cdk/issues/10057) +* **ecs-patterns:** Add ECS deployment circuit breaker support to higher-level constructs ([#12719](https://github.com/aws/aws-cdk/issues/12719)) ([e80a98a](https://github.com/aws/aws-cdk/commit/e80a98aa8839e9b9b89701158d82b991e9ebaa65)), closes [#12534](https://github.com/aws/aws-cdk/issues/12534) [#12360](https://github.com/aws/aws-cdk/issues/12360) +* **elbv2:** allow control of ingress rules on redirect listener ([#12768](https://github.com/aws/aws-cdk/issues/12768)) ([b7b441f](https://github.com/aws/aws-cdk/commit/b7b441f74a07d26fd8de23df84e7ab4663c89c0c)), closes [#12766](https://github.com/aws/aws-cdk/issues/12766) +* **events:** `EventBus.grantPutEventsTo` method for granular grants ([#13429](https://github.com/aws/aws-cdk/issues/13429)) ([122a232](https://github.com/aws/aws-cdk/commit/122a232343699304d8f206d3024fcddfb2a94bc8)), closes [#11228](https://github.com/aws/aws-cdk/issues/11228) +* **events:** archive events ([#12060](https://github.com/aws/aws-cdk/issues/12060)) ([465cd9c](https://github.com/aws/aws-cdk/commit/465cd9c434acff74070ca6d33891e1481e253128)), closes [#11531](https://github.com/aws/aws-cdk/issues/11531) +* **events:** dead letter queue for Lambda Targets ([#11617](https://github.com/aws/aws-cdk/issues/11617)) ([1bb3650](https://github.com/aws/aws-cdk/commit/1bb3650c5dd2087b05793a5e903cdfb80fc5c1ad)), closes [#11612](https://github.com/aws/aws-cdk/issues/11612) +* **events:** dead-letter queue support for CodeBuild ([#13448](https://github.com/aws/aws-cdk/issues/13448)) ([abfc0ea](https://github.com/aws/aws-cdk/commit/abfc0ea63c10d8033a529b7497cf093e318fdf12)), closes [#13447](https://github.com/aws/aws-cdk/issues/13447) +* **events:** dead-letter queue support for StepFunctions ([#13450](https://github.com/aws/aws-cdk/issues/13450)) ([0ebcb41](https://github.com/aws/aws-cdk/commit/0ebcb4160ee16f0f7ff1072a40c8951f9a983048)), closes [#13449](https://github.com/aws/aws-cdk/issues/13449) +* **events:** retry-policy support ([#13660](https://github.com/aws/aws-cdk/issues/13660)) ([7966f8d](https://github.com/aws/aws-cdk/commit/7966f8d48c4bff26beb22856d289f9d0c7e7081d)), closes [#13659](https://github.com/aws/aws-cdk/issues/13659) +* **events,applicationautoscaling:** schedule can be a token ([#13064](https://github.com/aws/aws-cdk/issues/13064)) ([b1449a1](https://github.com/aws/aws-cdk/commit/b1449a178b0f9a8a951c2546428f8d75c6431f0f)) +* **iam:** SAML identity provider ([#13393](https://github.com/aws/aws-cdk/issues/13393)) ([faa0c06](https://github.com/aws/aws-cdk/commit/faa0c060dad9a5045495707e28fc85f223d4db5d)), closes [#5320](https://github.com/aws/aws-cdk/issues/5320) +* **init-templates:** app template comes with hint comments for 'env' ([#13696](https://github.com/aws/aws-cdk/issues/13696)) ([b940710](https://github.com/aws/aws-cdk/commit/b9407102304f043adcd9a4fc1cde4d23d3da9004)), closes [#12321](https://github.com/aws/aws-cdk/issues/12321) +* **lambda:** Code.fromDockerBuild ([#13318](https://github.com/aws/aws-cdk/issues/13318)) ([ad01099](https://github.com/aws/aws-cdk/commit/ad01099d5b8f835c3b87d7d20fd2dc1a5df2fd6f)), closes [#13273](https://github.com/aws/aws-cdk/issues/13273) +* **lambda-event-sources:** msk and self-managed kafka event sources ([#12507](https://github.com/aws/aws-cdk/issues/12507)) ([73209e1](https://github.com/aws/aws-cdk/commit/73209e17f314cf61f703d51ef3b9f197d2f1bdc3)), closes [#12099](https://github.com/aws/aws-cdk/issues/12099) +* **lambda-event-sources:** support for batching window to sqs event source ([#13406](https://github.com/aws/aws-cdk/issues/13406)) ([6743e3b](https://github.com/aws/aws-cdk/commit/6743e3bb79a8281a4be5677fff018d702c85038d)), closes [#11722](https://github.com/aws/aws-cdk/issues/11722) [#11724](https://github.com/aws/aws-cdk/issues/11724) [#13770](https://github.com/aws/aws-cdk/issues/13770) +* **lambda-event-sources:** tumbling window ([#13412](https://github.com/aws/aws-cdk/issues/13412)) ([e9f2773](https://github.com/aws/aws-cdk/commit/e9f2773aedeb7f01ebf2a05face719be9bb8b0d7)), closes [#13411](https://github.com/aws/aws-cdk/issues/13411) +* **neptune:** high level constructs for db clusters and instances ([#12763](https://github.com/aws/aws-cdk/issues/12763)) ([c366837](https://github.com/aws/aws-cdk/commit/c36683701d88eb0c53fdd2add66b10c47c05f56b)), closes [aws#12762](https://github.com/aws/aws/issues/12762) +* **neptune:** Support IAM authentication ([#13462](https://github.com/aws/aws-cdk/issues/13462)) ([6c5b1f4](https://github.com/aws/aws-cdk/commit/6c5b1f42fb73a132d47945b529bab73557f2b9d8)), closes [#13461](https://github.com/aws/aws-cdk/issues/13461) +* **rds:** make rds secret name configurable ([#13626](https://github.com/aws/aws-cdk/issues/13626)) ([62a91b7](https://github.com/aws/aws-cdk/commit/62a91b7a30f8b6419a983d7ea7bdb3c39f2fdfd0)), closes [#8984](https://github.com/aws/aws-cdk/issues/8984) +* **region-info:** added AppMesh ECR account for af-south-1 region ([#12814](https://github.com/aws/aws-cdk/issues/12814)) ([b3fba43](https://github.com/aws/aws-cdk/commit/b3fba43a047df61e713e8d2271d6deee7e07b716)) +* **sns:** enable passing PolicyDocument to TopicPolicy ([#10559](https://github.com/aws/aws-cdk/issues/10559)) ([0d9c300](https://github.com/aws/aws-cdk/commit/0d9c300f5244d3e5720832343830947f6cc5b352)), closes [#7934](https://github.com/aws/aws-cdk/issues/7934) +* **stepfunctions-tasks:** Support calling ApiGateway REST and HTTP APIs ([#13033](https://github.com/aws/aws-cdk/issues/13033)) ([cc608d0](https://github.com/aws/aws-cdk/commit/cc608d055ffefb798ad6378ab07f36cb241897da)), closes [#11565](https://github.com/aws/aws-cdk/issues/11565) [#11566](https://github.com/aws/aws-cdk/issues/11566) [#11565](https://github.com/aws/aws-cdk/issues/11565) + + +### Bug Fixes + +* **apigatewayv2:** error while configuring ANY as an allowed method in CORS ([#13313](https://github.com/aws/aws-cdk/issues/13313)) ([34bb338](https://github.com/aws/aws-cdk/commit/34bb338bfc8e2976691a23969baa5fd9d84727e8)), closes [#13280](https://github.com/aws/aws-cdk/issues/13280) [#13643](https://github.com/aws/aws-cdk/issues/13643) +* **appmesh:** Move Client Policy from Virtual Service to backend structure ([#12943](https://github.com/aws/aws-cdk/issues/12943)) ([d3f4284](https://github.com/aws/aws-cdk/commit/d3f428435976c55ca950279cfc841665fd504370)), closes [#11996](https://github.com/aws/aws-cdk/issues/11996) +* **autoscaling:** AutoScaling on percentile metrics doesn't work ([#13366](https://github.com/aws/aws-cdk/issues/13366)) ([46114bb](https://github.com/aws/aws-cdk/commit/46114bb1f4702019a8873b9162d0a9f10763bc61)), closes [#13144](https://github.com/aws/aws-cdk/issues/13144) +* **aws-ecs:** drain hook lambda allows tasks to stop gracefully ([#13559](https://github.com/aws/aws-cdk/issues/13559)) ([3e1148e](https://github.com/aws/aws-cdk/commit/3e1148e74dce0e15379e2cfa372bd367183f9c6f)), closes [#13506](https://github.com/aws/aws-cdk/issues/13506) +* **cfn-include:** allow boolean values for string-typed properties ([#13508](https://github.com/aws/aws-cdk/issues/13508)) ([e5dab7c](https://github.com/aws/aws-cdk/commit/e5dab7cbc67c234d191c38a8b8b84b634070b15b)) +* **cfn-include:** allow dynamic mappings to be used in Fn::FindInMap ([#13428](https://github.com/aws/aws-cdk/issues/13428)) ([623675d](https://github.com/aws/aws-cdk/commit/623675d2f8fb2786f23beb87994e687e8a7c6612)) +* **cloudfront:** cannot add two EdgeFunctions with same aliases ([#13324](https://github.com/aws/aws-cdk/issues/13324)) ([1f35351](https://github.com/aws/aws-cdk/commit/1f3535145d22b2b13ebbcbfe31a3bfd73519352d)), closes [#13237](https://github.com/aws/aws-cdk/issues/13237) +* **cloudwatch:** cannot create Alarms from labeled metrics that start with a digit ([#13560](https://github.com/aws/aws-cdk/issues/13560)) ([278029f](https://github.com/aws/aws-cdk/commit/278029f25b41d956091835364e5a8de91429712c)), closes [#13434](https://github.com/aws/aws-cdk/issues/13434) +* **cloudwatch:** MathExpression period of <5 minutes is not respected ([#13078](https://github.com/aws/aws-cdk/issues/13078)) ([d9ee914](https://github.com/aws/aws-cdk/commit/d9ee91432918aa113f728abdd61295096ed1512f)), closes [#9156](https://github.com/aws/aws-cdk/issues/9156) +* **cloudwatch:** metric `label` not rendered into Alarms ([#13070](https://github.com/aws/aws-cdk/issues/13070)) ([cbcc712](https://github.com/aws/aws-cdk/commit/cbcc712e0c4c44c83c7f4d1e8a544bccfa26bb56)) +* **codebuild:** allow FILE_PATH webhook filter for BitBucket ([#13186](https://github.com/aws/aws-cdk/issues/13186)) ([cbed348](https://github.com/aws/aws-cdk/commit/cbed3488f03bdfba16f3950bda653535c8999db1)), closes [#13175](https://github.com/aws/aws-cdk/issues/13175) +* **codebuild:** allow passing the ARN of the Secret in environment variables ([#13706](https://github.com/aws/aws-cdk/issues/13706)) ([6f6e079](https://github.com/aws/aws-cdk/commit/6f6e079569fcdb7e0631717fbe269e94f8f7b127)), closes [#12703](https://github.com/aws/aws-cdk/issues/12703) +* **codebuild:** Fixed build spec file format to return yaml ([#13445](https://github.com/aws/aws-cdk/issues/13445)) ([fab93c6](https://github.com/aws/aws-cdk/commit/fab93c63ba68c6398499e7df87a56a70d854ab88)) +* **codebuild:** module fails to load with error "Cannot use import statement outside a module" ([b1ffd33](https://github.com/aws/aws-cdk/commit/b1ffd335b6c41a26c1f88db2fc5a739c4c18c7fe)), closes [#13699](https://github.com/aws/aws-cdk/issues/13699) [#13699](https://github.com/aws/aws-cdk/issues/13699) +* **codedeploy:** script installing CodeDeploy agent fails ([#13758](https://github.com/aws/aws-cdk/issues/13758)) ([25e8d04](https://github.com/aws/aws-cdk/commit/25e8d04d7266a2642f11154750bef49a31b1892e)), closes [#13755](https://github.com/aws/aws-cdk/issues/13755) +* **codedeploy:** Use aws-cli instead of awscli for yum ([#13655](https://github.com/aws/aws-cdk/issues/13655)) ([449ce12](https://github.com/aws/aws-cdk/commit/449ce129b860ddc302e1e5270d5819ebe5aa27bf)) +* **codepipeline-actions:** BitBucketAction fails with S3 "Access denied" error ([#13637](https://github.com/aws/aws-cdk/issues/13637)) ([77ce45d](https://github.com/aws/aws-cdk/commit/77ce45d878f2d1cb453e36ae4d83228bee878ef1)), closes [#13557](https://github.com/aws/aws-cdk/issues/13557) +* **cognito:** imported userpool not retaining environment from arn ([#13715](https://github.com/aws/aws-cdk/issues/13715)) ([aa9fd9c](https://github.com/aws/aws-cdk/commit/aa9fd9cd9bbaea4149927e08d57d29e547933f49)), closes [#13691](https://github.com/aws/aws-cdk/issues/13691) +* **core:** `toJsonString()` cannot handle list intrinsics ([#13544](https://github.com/aws/aws-cdk/issues/13544)) ([a5be042](https://github.com/aws/aws-cdk/commit/a5be04270c2a372132964ab13d080a16f1a6f00c)), closes [#13465](https://github.com/aws/aws-cdk/issues/13465) +* **core:** custom resource provider NODEJS_12 now looks like Lambda's NODEJS_12_X, add Node 14 ([#13301](https://github.com/aws/aws-cdk/issues/13301)) ([3413b2f](https://github.com/aws/aws-cdk/commit/3413b2f887596d11dfb53c0e99c2a1788095a2ad)) +* **dynamodb:** replicas not created on table replacement ([#13300](https://github.com/aws/aws-cdk/issues/13300)) ([c7c424f](https://github.com/aws/aws-cdk/commit/c7c424fec42f1f14ab8bdc3011f5bdb602918aa3)), closes [#12332](https://github.com/aws/aws-cdk/issues/12332) +* **ec2:** fix typo's in WindowsImage constants ([#13446](https://github.com/aws/aws-cdk/issues/13446)) ([781aa97](https://github.com/aws/aws-cdk/commit/781aa97d53fdb7511c34ddde884fdcd84c3f68a6)) +* **ec2:** NAT provider's default outbound rules cannot be disabled ([#12674](https://github.com/aws/aws-cdk/issues/12674)) ([664133a](https://github.com/aws/aws-cdk/commit/664133a35da2bd096a237971ce662f3dd38b297f)), closes [#12673](https://github.com/aws/aws-cdk/issues/12673) +* **ec2:** readme grammar ([#13180](https://github.com/aws/aws-cdk/issues/13180)) ([fe4f056](https://github.com/aws/aws-cdk/commit/fe4f05678c06d634d3fe9e1b608e444a57f67b9c)) +* **ec2:** Security Groups support all protocols ([#13593](https://github.com/aws/aws-cdk/issues/13593)) ([8c6b3eb](https://github.com/aws/aws-cdk/commit/8c6b3ebea464e27f68ffcab32857d8baec29c413)), closes [#13403](https://github.com/aws/aws-cdk/issues/13403) +* **ec2:** Throw error on empty InitFile content ([#13009](https://github.com/aws/aws-cdk/issues/13009)) ([#13119](https://github.com/aws/aws-cdk/issues/13119)) ([81a78a3](https://github.com/aws/aws-cdk/commit/81a78a31408276ebb020e45b15ddca7a2c57ae50)) +* **ecr:** Allow referencing an EcrImage by digest instead of tag ([#13299](https://github.com/aws/aws-cdk/issues/13299)) ([266a621](https://github.com/aws/aws-cdk/commit/266a621abfc34c62ff1e26de9cb8cf0687588f89)), closes [#5082](https://github.com/aws/aws-cdk/issues/5082) +* **ecr:** Generate valid CloudFormation for imageScanOnPush ([#13420](https://github.com/aws/aws-cdk/issues/13420)) ([278fba5](https://github.com/aws/aws-cdk/commit/278fba5df4a3d785e49bdb57ccf88fd34bacacbb)), closes [#13418](https://github.com/aws/aws-cdk/issues/13418) +* **ecs:** services essential container exceptions thrown too soon ([#13240](https://github.com/aws/aws-cdk/issues/13240)) ([c174f6c](https://github.com/aws/aws-cdk/commit/c174f6c2f4dd909e07be34b66bd6b3a92d5e8484)), closes [#13239](https://github.com/aws/aws-cdk/issues/13239) +* **elasticloadbalancingv2:** should allow more than 2 certificates ([#13332](https://github.com/aws/aws-cdk/issues/13332)) ([d3155e9](https://github.com/aws/aws-cdk/commit/d3155e97fd9331a4732396941ce4ad20613fe81c)), closes [#13150](https://github.com/aws/aws-cdk/issues/13150) +* **elasticloadbalancingv2:** upgrade to v1.92.0 drops certificates on ALB if more than 2 certificates exist ([#13490](https://github.com/aws/aws-cdk/issues/13490)) ([01b94f8](https://github.com/aws/aws-cdk/commit/01b94f8aa6c88b5e676c784aec4c879acddc042f)), closes [#13332](https://github.com/aws/aws-cdk/issues/13332) [#13437](https://github.com/aws/aws-cdk/issues/13437) +* **events:** cannot trigger multiple Lambdas from the same Rule ([#13260](https://github.com/aws/aws-cdk/issues/13260)) ([c8c1762](https://github.com/aws/aws-cdk/commit/c8c1762c213aad1062c3a0bc48b22b05c3a0a185)), closes [#13231](https://github.com/aws/aws-cdk/issues/13231) +* **init:** Python init template's stack ID doesn't match other languages ([#13480](https://github.com/aws/aws-cdk/issues/13480)) ([3f1c02d](https://github.com/aws/aws-cdk/commit/3f1c02dac7a50ce7caebce1e7f8953f6e4937e6b)) +* use NodeJS 14 for all packaged custom resources ([#13488](https://github.com/aws/aws-cdk/issues/13488)) ([20a2820](https://github.com/aws/aws-cdk/commit/20a2820ee4d022663fcd0928fbc0f61153ae953f)), closes [#13534](https://github.com/aws/aws-cdk/issues/13534) [#13484](https://github.com/aws/aws-cdk/issues/13484) +* **events:** imported ECS Task Definition cannot be used as target ([#13293](https://github.com/aws/aws-cdk/issues/13293)) ([6f7cebd](https://github.com/aws/aws-cdk/commit/6f7cebdf61073cc1fb358fcac5f5b2156389cb81)), closes [#12811](https://github.com/aws/aws-cdk/issues/12811) +* **events:** imported EventBus does not correctly register source account ([#13481](https://github.com/aws/aws-cdk/issues/13481)) ([57e5404](https://github.com/aws/aws-cdk/commit/57e540432c1446f2233a9b0c0f4caba4e9e155d9)), closes [#13469](https://github.com/aws/aws-cdk/issues/13469) +* **events,applicationautoscaling:** specifying a schedule rate in seconds results in an error ([#13689](https://github.com/aws/aws-cdk/issues/13689)) ([5d62331](https://github.com/aws/aws-cdk/commit/5d6233164611d69ac1bf5c73e1518eb14dbace8d)), closes [#13566](https://github.com/aws/aws-cdk/issues/13566) +* **iam:** oidc-provider can't pull from hosts requiring SNI ([#13397](https://github.com/aws/aws-cdk/issues/13397)) ([90dbfb5](https://github.com/aws/aws-cdk/commit/90dbfb5eec19559717ac6b30f25451461027e731)) +* **iam:** policy statement tries to validate tokens ([#13493](https://github.com/aws/aws-cdk/issues/13493)) ([8d592ea](https://github.com/aws/aws-cdk/commit/8d592ea89c0eda19329d5a31517522ec02ceb874)), closes [#13479](https://github.com/aws/aws-cdk/issues/13479) +* **lambda:** fromDockerBuild output is located under /asset ([#13539](https://github.com/aws/aws-cdk/issues/13539)) ([77449f6](https://github.com/aws/aws-cdk/commit/77449f61e7075fef1240fc52becb8ea60b9ea9ad)), closes [#13439](https://github.com/aws/aws-cdk/issues/13439) +* **lambda:** incorrect values for prop UntrustedArtifactOnDeployment ([#13667](https://github.com/aws/aws-cdk/issues/13667)) ([0757686](https://github.com/aws/aws-cdk/commit/0757686790c25ab1cc0f040d9f6039cef6648d44)), closes [#13586](https://github.com/aws/aws-cdk/issues/13586) +* **lambda-nodejs:** paths with spaces break esbuild ([#13312](https://github.com/aws/aws-cdk/issues/13312)) ([f983fbb](https://github.com/aws/aws-cdk/commit/f983fbb474ecd6727b0c5a35333718cc55d78bf1)), closes [#13311](https://github.com/aws/aws-cdk/issues/13311) +* **neptune:** create correct IAM statement in grantConnect() ([#13641](https://github.com/aws/aws-cdk/issues/13641)) ([2e7f046](https://github.com/aws/aws-cdk/commit/2e7f0462fef80714abb923cf0c14ed01d698b4fa)), closes [#13640](https://github.com/aws/aws-cdk/issues/13640) +* **python:** change Python namespace to `aws_cdk` ([#13489](https://github.com/aws/aws-cdk/issues/13489)) ([2ff5ca1](https://github.com/aws/aws-cdk/commit/2ff5ca1b4fa34ad6ed9e34c01bd49cc1583cab55)) +* **rds:** fail with a descriptive error if Cluster's instance count is a deploy-time value ([#13765](https://github.com/aws/aws-cdk/issues/13765)) ([dd22e8f](https://github.com/aws/aws-cdk/commit/dd22e8fc29f1fc33d391d1bb9ae93963bfd82563)), closes [#13558](https://github.com/aws/aws-cdk/issues/13558) +* **region-info:** ap-northeast-3 data not correctly registered ([#13564](https://github.com/aws/aws-cdk/issues/13564)) ([64da84b](https://github.com/aws/aws-cdk/commit/64da84be5c60bb8132551bcc27a7ca9c7effe95d)), closes [#13561](https://github.com/aws/aws-cdk/issues/13561) +* **s3:** Notifications fail to deploy due to incompatible node runtime ([#13624](https://github.com/aws/aws-cdk/issues/13624)) ([26bc3d4](https://github.com/aws/aws-cdk/commit/26bc3d4951a96a4bdf3e3e10464a4e3b80ed563f)) +* **s3:** Notifications fail to deploy due to incompatible node runtime ([#13624](https://github.com/aws/aws-cdk/issues/13624)) ([aa32cf6](https://github.com/aws/aws-cdk/commit/aa32cf64d20e4ba1eb2bc8236daeb05e89e4c12d)) +* **stepfunctions:** `SageMakeUpdateEndpoint` adds insufficient permissions ([#13170](https://github.com/aws/aws-cdk/issues/13170)) ([6126e49](https://github.com/aws/aws-cdk/commit/6126e499e5ca22b5f751af4f4f05d74f696829f1)), closes [#11594](https://github.com/aws/aws-cdk/issues/11594) +* **stepfunctions:** no validation on state machine name ([#13387](https://github.com/aws/aws-cdk/issues/13387)) ([6c3d407](https://github.com/aws/aws-cdk/commit/6c3d4071746179dde30f615602592c2523daa56e)), closes [#13289](https://github.com/aws/aws-cdk/issues/13289) + + +* **core:** remove all references to BundlingDockerImage in the public API ([#13814](https://github.com/aws/aws-cdk/issues/13814)) ([9cceb3f](https://github.com/aws/aws-cdk/commit/9cceb3f855b1ece2effe60b5a8b84f2986c270c4)) +* **lambda-nodejs:** prepare code to reduce merge conflicts when deprecated APIs are stripped ([#13738](https://github.com/aws/aws-cdk/issues/13738)) ([ca391b5](https://github.com/aws/aws-cdk/commit/ca391b596fae1c3130a8811088d32df21a23a434)) +* **lambda-nodejs:** update default runtime ([#13664](https://github.com/aws/aws-cdk/issues/13664)) ([ca42461](https://github.com/aws/aws-cdk/commit/ca42461acd4f42a8bd7c0fb05788c7ea50834de2)) + ## [2.0.0-alpha.9](https://github.com/aws/aws-cdk/compare/v2.0.0-alpha.6...v2.0.0-alpha.9) (2021-03-24) diff --git a/version.v2.json b/version.v2.json index cbf4323ab9730..f3573c2f9cf40 100644 --- a/version.v2.json +++ b/version.v2.json @@ -1,3 +1,3 @@ { - "version": "2.0.0-alpha.9" + "version": "2.0.0-alpha.10" } From aff4e18085e8a7536c463d56d699fab7ad8c9c6e Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 1 Apr 2021 22:11:25 +0100 Subject: [PATCH 077/304] chore: correct v2 init templates (#13937) Two corrections here - * Python module name has changed from aws_cdk_lib to aws-cdk-lib. * Maven, .NET and Python do not recognize semver version ranges. Translate them into appropriate version ranges. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../%name.PythonModule%_stack.template.py | 2 +- .../v2/app/python/app.template.py | 2 +- .../v2/app/python/setup.template.py | 2 +- .../%name.PythonModule%_stack.template.py | 2 +- .../v2/sample-app/python/app.template.py | 2 +- .../v2/sample-app/python/setup.template.py | 2 +- packages/aws-cdk/lib/init.ts | 31 ++++++---- packages/aws-cdk/lib/util/version-range.ts | 38 ++++++++++++ packages/aws-cdk/test/init.test.ts | 60 +++++++++++++++++++ .../aws-cdk/test/util/version-range.test.ts | 25 ++++++++ 10 files changed, 150 insertions(+), 16 deletions(-) create mode 100644 packages/aws-cdk/lib/util/version-range.ts create mode 100644 packages/aws-cdk/test/util/version-range.test.ts diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py index 89f21fa04dbbb..5d827c579e3ea 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py @@ -1,4 +1,4 @@ -from aws_cdk_lib import Stack +from aws-cdk-lib import Stack from constructs import Construct class %name.PascalCased%Stack(Stack): diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py index a258f798a7e6f..4ad1d3bb892f2 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 import os -import aws_cdk_lib as core +import aws-cdk-lib as core from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py index 451f3a732de45..53a0e8f9482b9 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/setup.template.py @@ -20,7 +20,7 @@ install_requires=[ "aws-cdk-lib==%cdk-version%", - "constructs==%constructs-version%", + "constructs%constructs-version%", ], python_requires=">=3.6", diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py index 135d042968402..77ed46da5744f 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py @@ -1,5 +1,5 @@ from constructs import Construct -from aws_cdk_lib import ( +from aws-cdk-lib import ( Duration, Stack, aws_iam as iam, diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py index f53ecf105b8ca..caedbcec3bfc6 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -import aws_cdk_lib as core +import aws-cdk-lib as core from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py index 440a1f014ab4c..92168b2363d37 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/setup.template.py @@ -20,7 +20,7 @@ install_requires=[ "aws-cdk-lib==%cdk-version%", - "constructs==%constructs-version%", + "constructs%constructs-version%", ], python_requires=">=3.6", diff --git a/packages/aws-cdk/lib/init.ts b/packages/aws-cdk/lib/init.ts index 1165018a9b469..960a85e2399f1 100644 --- a/packages/aws-cdk/lib/init.ts +++ b/packages/aws-cdk/lib/init.ts @@ -6,6 +6,7 @@ import * as fs from 'fs-extra'; import * as semver from 'semver'; import { error, print, warning } from './logging'; import { cdkHomeDir } from './util/directories'; +import { rangeFromSemver } from './util/version-range'; import { versionNumber } from './version'; export type InvokeHook = (targetDirectory: string) => Promise; @@ -101,7 +102,7 @@ export class InitTemplate { const sourceDirectory = path.join(this.basePath, language); const hookTempDirectory = path.join(targetDirectory, 'tmp'); await fs.mkdir(hookTempDirectory); - await this.installFiles(sourceDirectory, targetDirectory, { + await this.installFiles(sourceDirectory, targetDirectory, language, { name: decamelize(path.basename(path.resolve(targetDirectory))), }); await this.applyFutureFlags(targetDirectory); @@ -109,19 +110,19 @@ export class InitTemplate { await fs.remove(hookTempDirectory); } - private async installFiles(sourceDirectory: string, targetDirectory: string, project: ProjectInfo) { + private async installFiles(sourceDirectory: string, targetDirectory: string, language:string, project: ProjectInfo) { for (const file of await fs.readdir(sourceDirectory)) { const fromFile = path.join(sourceDirectory, file); - const toFile = path.join(targetDirectory, this.expand(file, project)); + const toFile = path.join(targetDirectory, this.expand(file, language, project)); if ((await fs.stat(fromFile)).isDirectory()) { await fs.mkdir(toFile); - await this.installFiles(fromFile, toFile, project); + await this.installFiles(fromFile, toFile, language, project); continue; } else if (file.match(/^.*\.template\.[^.]+$/)) { - await this.installProcessed(fromFile, toFile.replace(/\.template(\.[^.]+)$/, '$1'), project); + await this.installProcessed(fromFile, toFile.replace(/\.template(\.[^.]+)$/, '$1'), language, project); continue; } else if (file.match(/^.*\.hook\.(d.)?[^.]+$/)) { - await this.installProcessed(fromFile, path.join(targetDirectory, 'tmp', file), project); + await this.installProcessed(fromFile, path.join(targetDirectory, 'tmp', file), language, project); continue; } else { await fs.copy(fromFile, toFile); @@ -150,17 +151,27 @@ export class InitTemplate { } } - private async installProcessed(templatePath: string, toFile: string, project: ProjectInfo) { + private async installProcessed(templatePath: string, toFile: string, language: string, project: ProjectInfo) { const template = await fs.readFile(templatePath, { encoding: 'utf-8' }); - await fs.writeFile(toFile, this.expand(template, project)); + await fs.writeFile(toFile, this.expand(template, language, project)); } - private expand(template: string, project: ProjectInfo) { + private expand(template: string, language: string, project: ProjectInfo) { const MATCH_VER_BUILD = /\+[a-f0-9]+$/; // Matches "+BUILD" in "x.y.z-beta+BUILD" // eslint-disable-next-line @typescript-eslint/no-require-imports const cdkVersion = require('../package.json').version.replace(MATCH_VER_BUILD, ''); // eslint-disable-next-line @typescript-eslint/no-require-imports - const constructsVersion = require('../package.json').devDependencies.constructs.replace(MATCH_VER_BUILD, ''); + let constructsVersion = require('../package.json').devDependencies.constructs.replace(MATCH_VER_BUILD, ''); + switch (language) { + case 'java': + case 'csharp': + case 'fsharp': + constructsVersion = rangeFromSemver(constructsVersion, 'bracket'); + break; + case 'python': + constructsVersion = rangeFromSemver(constructsVersion, 'pep'); + break; + } return template.replace(/%name%/g, project.name) .replace(/%name\.camelCased%/g, camelCase(project.name)) .replace(/%name\.PascalCased%/g, camelCase(project.name, { pascalCase: true })) diff --git a/packages/aws-cdk/lib/util/version-range.ts b/packages/aws-cdk/lib/util/version-range.ts new file mode 100644 index 0000000000000..0b1448a23f674 --- /dev/null +++ b/packages/aws-cdk/lib/util/version-range.ts @@ -0,0 +1,38 @@ +import * as semver from 'semver'; + +// bracket - https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401 +// pep - https://www.python.org/dev/peps/pep-0440/#version-specifiers +export type RangeType = 'bracket' | 'pep' + +export function rangeFromSemver(ver: string, targetType: RangeType) { + const re = ver.match(/^([^\d]*)([\d.]*)$/); + if (!re || !semver.valid(re[2])) { + throw new Error('not a semver or unsupported range syntax'); + } + const prefixPart = re[1]; + const verPart = re[2]; + + switch (targetType) { + case 'bracket': + switch (prefixPart) { + case '': + // if there's no prefix and the remaining is a valid semver, there's no range specified + return ver; + case '^': + return `[${verPart},${semver.major(verPart)+1}.0.0)`; + default: + throw new Error(`unsupported range syntax - ${prefixPart}`); + } + case 'pep': + switch (prefixPart) { + case '': + // if there's no prefix and the remaining is a valid semver, there's no range specified + return `==${ver}`; + case '^': + return `>=${verPart},<${semver.major(verPart)+1}.0.0`; + default: + throw new Error(`unsupported range syntax - ${prefixPart}`); + } + } + +} \ No newline at end of file diff --git a/packages/aws-cdk/test/init.test.ts b/packages/aws-cdk/test/init.test.ts index e659161fbb38a..637b0abbcbbd1 100644 --- a/packages/aws-cdk/test/init.test.ts +++ b/packages/aws-cdk/test/init.test.ts @@ -98,6 +98,66 @@ describe.each(['1', '2'])('v%s tests', (majorVersion) => { }); }); +describe('constructs version', () => { + beforeEach(() => { + mockMajorVersion = '2.0.0'; + jest.resetAllMocks(); + }); + + cliTest('java', async (workDir) => { + await cliInit('app', 'java', false, true, workDir); + + expect(await fs.pathExists(path.join(workDir, 'pom.xml'))).toBeTruthy(); + + const pom = (await fs.readFile(path.join(workDir, 'pom.xml'), 'utf8')).split(/\r?\n/); + const matches = pom.map(line => line.match(/\(.*)\<\/constructs\.version\>/)) + .filter(l => l); + + expect(matches.length).toEqual(1); + matches.forEach(m => { + const version = m && m[1]; + expect(version).toMatch(/\[10\.[\d]+\.[\d]+,11\.0\.0\)/); + }); + }); + + cliTest('.NET', async (workDir) => { + await cliInit('app', 'csharp', false, true, workDir); + + // convert dir name from aws-cdk-test-xyz to AwsCdkTestXyz + const slnName = path.basename(workDir).split('-').map(s => `${s[0].toUpperCase()}${s.slice(1)}`).join(''); + const csprojFile = path.join(workDir, 'src', slnName, `${slnName}.csproj`); + + expect(await fs.pathExists(csprojFile)).toBeTruthy(); + const csproj = (await fs.readFile(csprojFile, 'utf8')).split(/\r?\n/); + // return RegExpMatchArray (result of line.match()) for every lines that match re. + const matches = csproj.map(line => line.match(/\ l); + + expect(matches.length).toEqual(1); + matches.forEach(m => { + const version = m && m[1]; + expect(version).toMatch(/\[10\.[\d]+\.[\d]+,11\.0\.0\)/); + }); + }); + + cliTest('Python', async (workDir) => { + await cliInit('app', 'python', false, true, workDir); + + // convert dir name from aws-cdk-test-xyz to AwsCdkTestXyz + expect(await fs.pathExists(path.join(workDir, 'setup.py'))).toBeTruthy(); + const setupPy = (await fs.readFile(path.join(workDir, 'setup.py'), 'utf8')).split(/\r?\n/); + // return RegExpMatchArray (result of line.match()) for every lines that match re. + const matches = setupPy.map(line => line.match(/^\s*"constructs(.*)",/)) + .filter(l => l); + + expect(matches.length).toEqual(1); + matches.forEach(m => { + const version = m && m[1]; + expect(version).toMatch(/>=10\.\d+\.\d,<11\.0\.0/); + }); + }); +}); + test('when no version number is present (e.g., local development), the v1 templates are chosen by default', async () => { mockMajorVersion = '0.0.0'; jest.resetAllMocks(); diff --git a/packages/aws-cdk/test/util/version-range.test.ts b/packages/aws-cdk/test/util/version-range.test.ts new file mode 100644 index 0000000000000..9057edbcc2699 --- /dev/null +++ b/packages/aws-cdk/test/util/version-range.test.ts @@ -0,0 +1,25 @@ +import { rangeFromSemver } from '../../lib/util/version-range'; + +describe('rangeFromSemver', () => { + describe('bracket', () => { + test('valid', () => { + expect(rangeFromSemver('1.2.3', 'bracket')).toEqual('1.2.3'); + expect(rangeFromSemver('^1.2.3', 'bracket')).toEqual('[1.2.3,2.0.0)'); + }); + }); + + describe('pep', () => { + test('valid', () => { + expect(rangeFromSemver('1.2.3', 'pep')).toEqual('==1.2.3'); + expect(rangeFromSemver('^1.2.3', 'pep')).toEqual('>=1.2.3,<2.0.0'); + }); + }); + + test('invalid', () => { + expect(() => rangeFromSemver('1.2', 'bracket')).toThrow(); + expect(() => rangeFromSemver('~1.2.3', 'bracket')).toThrow(); + expect(() => rangeFromSemver('1.2.3-1.4.5', 'bracket')).toThrow(); + expect(() => rangeFromSemver('>2.4.5', 'bracket')).toThrow(); + expect(() => rangeFromSemver('2.*', 'bracket')).toThrow(); + }); +}); \ No newline at end of file From 1945c609d32ef8ad93f63c0c359deaaa95239ebb Mon Sep 17 00:00:00 2001 From: Elad Ben-Israel Date: Tue, 6 Apr 2021 16:53:41 +0300 Subject: [PATCH 078/304] chore(core): remove deprecated construct dependency APIs (#13871) Delete bunch of remaining APIs that are deprecated and available in constructs 10.x Follow up of https://github.com/aws/aws-cdk/pull/12054 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../aws-ec2/lib/client-vpn-endpoint-types.ts | 3 +- .../aws-ec2/lib/client-vpn-endpoint.ts | 8 +- packages/@aws-cdk/aws-ec2/lib/vpc.ts | 20 ++-- .../@aws-cdk/aws-efs/lib/efs-file-system.ts | 8 +- .../lib/shared/base-target-group.ts | 8 +- .../lib/shared/imported.ts | 4 +- packages/@aws-cdk/aws-iam/lib/grant.ts | 20 ++-- packages/@aws-cdk/aws-iam/lib/principals.ts | 3 +- .../aws-iam/lib/private/immutable-role.ts | 8 +- .../@aws-cdk/aws-iam/lib/unknown-principal.ts | 6 +- .../@aws-cdk/aws-lambda/lib/filesystem.ts | 3 +- .../aws-lambda/lib/singleton-lambda.ts | 4 +- packages/@aws-cdk/aws-s3/lib/destination.ts | 5 +- packages/@aws-cdk/core/lib/dependency.ts | 102 ------------------ packages/@aws-cdk/core/lib/index.ts | 1 - .../@aws-cdk/core/rosetta/default.ts-fixture | 1 - 16 files changed, 51 insertions(+), 153 deletions(-) delete mode 100644 packages/@aws-cdk/core/lib/dependency.ts diff --git a/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint-types.ts b/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint-types.ts index ef33493a8f225..ee432f54b7dbb 100644 --- a/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint-types.ts +++ b/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint-types.ts @@ -1,4 +1,5 @@ -import { IDependable, IResource } from '@aws-cdk/core'; +import { IResource } from '@aws-cdk/core'; +import { IDependable } from 'constructs'; import { IConnectable } from './connections'; /** diff --git a/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint.ts b/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint.ts index 43431bd649046..753652652d0ca 100644 --- a/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint.ts +++ b/packages/@aws-cdk/aws-ec2/lib/client-vpn-endpoint.ts @@ -1,7 +1,7 @@ import { ISamlProvider } from '@aws-cdk/aws-iam'; import * as logs from '@aws-cdk/aws-logs'; -import { CfnOutput, ConcreteDependable, IDependable, Resource, Token } from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { CfnOutput, Resource, Token } from '@aws-cdk/core'; +import { Construct, DependencyGroup, IDependable } from 'constructs'; import { ClientVpnAuthorizationRule, ClientVpnAuthorizationRuleOptions } from './client-vpn-authorization-rule'; import { IClientVpnConnectionHandler, IClientVpnEndpoint, TransportProtocol, VpnPort } from './client-vpn-endpoint-types'; import { ClientVpnRoute, ClientVpnRouteOptions } from './client-vpn-route'; @@ -243,7 +243,7 @@ export class ClientVpnEndpoint extends Resource implements IClientVpnEndpoint { class Import extends Resource implements IClientVpnEndpoint { public readonly endpointId = attrs.endpointId; public readonly connections = new Connections({ securityGroups: attrs.securityGroups }); - public readonly targetNetworksAssociated: IDependable = new ConcreteDependable(); + public readonly targetNetworksAssociated: IDependable = new DependencyGroup(); } return new Import(scope, id); } @@ -257,7 +257,7 @@ export class ClientVpnEndpoint extends Resource implements IClientVpnEndpoint { public readonly targetNetworksAssociated: IDependable; - private readonly _targetNetworksAssociated = new ConcreteDependable(); + private readonly _targetNetworksAssociated = new DependencyGroup(); constructor(scope: Construct, id: string, props: ClientVpnEndpointProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-ec2/lib/vpc.ts b/packages/@aws-cdk/aws-ec2/lib/vpc.ts index d5a1854ea0cfe..2272c20209956 100644 --- a/packages/@aws-cdk/aws-ec2/lib/vpc.ts +++ b/packages/@aws-cdk/aws-ec2/lib/vpc.ts @@ -1,10 +1,10 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { - Annotations, ConcreteDependable, ContextProvider, DependableTrait, - IDependable, IResource, Lazy, Resource, Stack, Token, Tags, Names, + Annotations, ContextProvider, + IResource, Lazy, Resource, Stack, Token, Tags, Names, } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; -import { Construct, IConstruct, Node } from 'constructs'; +import { Construct, Dependable, DependencyGroup, IConstruct, IDependable, Node } from 'constructs'; import { ClientVpnEndpoint, ClientVpnEndpointOptions } from './client-vpn-endpoint'; import { CfnEIP, CfnInternetGateway, CfnNatGateway, CfnRoute, CfnRouteTable, CfnSubnet, @@ -1177,7 +1177,7 @@ export class Vpc extends VpcBase { */ private subnetConfiguration: SubnetConfiguration[] = []; - private readonly _internetConnectivityEstablished = new ConcreteDependable(); + private readonly _internetConnectivityEstablished = new DependencyGroup(); /** * Vpc creates a VPC that spans a whole region. @@ -1529,7 +1529,7 @@ export class Subnet extends Resource implements ISubnet { public readonly internetConnectivityEstablished: IDependable; - private readonly _internetConnectivityEstablished = new ConcreteDependable(); + private readonly _internetConnectivityEstablished = new DependencyGroup(); private _networkAcl: INetworkAcl; @@ -1809,7 +1809,7 @@ class ImportedVpc extends VpcBase { public readonly privateSubnets: ISubnet[]; public readonly isolatedSubnets: ISubnet[]; public readonly availabilityZones: string[]; - public readonly internetConnectivityEstablished: IDependable = new ConcreteDependable(); + public readonly internetConnectivityEstablished: IDependable = new DependencyGroup(); private readonly cidr?: string | undefined; constructor(scope: Construct, id: string, props: VpcAttributes, isIncomplete: boolean) { @@ -1849,7 +1849,7 @@ class ImportedVpc extends VpcBase { class LookedUpVpc extends VpcBase { public readonly vpcId: string; - public readonly internetConnectivityEstablished: IDependable = new ConcreteDependable(); + public readonly internetConnectivityEstablished: IDependable = new DependencyGroup(); public readonly availabilityZones: string[]; public readonly publicSubnets: ISubnet[]; public readonly privateSubnets: ISubnet[]; @@ -1918,11 +1918,11 @@ class CompositeDependable implements IDependable { constructor() { const self = this; - DependableTrait.implement(this, { + Dependable.implement(this, { get dependencyRoots() { const ret = new Array(); for (const dep of self.dependables) { - ret.push(...DependableTrait.get(dep).dependencyRoots); + ret.push(...Dependable.of(dep).dependencyRoots); } return ret; }, @@ -1946,7 +1946,7 @@ function tap(x: T, fn: (x: T) => void): T { } class ImportedSubnet extends Resource implements ISubnet, IPublicSubnet, IPrivateSubnet { - public readonly internetConnectivityEstablished: IDependable = new ConcreteDependable(); + public readonly internetConnectivityEstablished: IDependable = new DependencyGroup(); public readonly subnetId: string; public readonly routeTable: IRouteTable; private readonly _availabilityZone?: string; diff --git a/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts b/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts index 60af6fde51752..767f424ea356d 100644 --- a/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts +++ b/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts @@ -1,7 +1,7 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as kms from '@aws-cdk/aws-kms'; -import { ConcreteDependable, IDependable, IResource, RemovalPolicy, Resource, Size, Tags } from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { IResource, RemovalPolicy, Resource, Size, Tags } from '@aws-cdk/core'; +import { Construct, DependencyGroup, IDependable } from 'constructs'; import { AccessPoint, AccessPointOptions } from './access-point'; import { CfnFileSystem, CfnMountTarget } from './efs.generated'; @@ -237,7 +237,7 @@ export class FileSystem extends Resource implements IFileSystem { public readonly mountTargetsAvailable: IDependable; - private readonly _mountTargetsAvailable = new ConcreteDependable(); + private readonly _mountTargetsAvailable = new DependencyGroup(); /** * Constructor for creating a new EFS FileSystem. @@ -327,6 +327,6 @@ class ImportedFileSystem extends Resource implements IFileSystem { defaultPort: ec2.Port.tcp(FileSystem.DEFAULT_PORT), }); - this.mountTargetsAvailable = new ConcreteDependable(); + this.mountTargetsAvailable = new DependencyGroup(); } } \ No newline at end of file diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts index cdc34537f6613..f1169a4a76ba0 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/base-target-group.ts @@ -1,6 +1,6 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as cdk from '@aws-cdk/core'; -import { Construct, IConstruct } from 'constructs'; +import { Construct, DependencyGroup, IConstruct, IDependable } from 'constructs'; import { CfnTargetGroup } from '../elasticloadbalancingv2.generated'; import { Protocol, TargetType } from './enums'; import { Attributes, renderAttributes } from './util'; @@ -194,7 +194,7 @@ export abstract class TargetGroupBase extends Construct implements ITargetGroup /** * Configurable dependable with all resources that lead to load balancer attachment */ - protected readonly loadBalancerAttachedDependencies = new cdk.ConcreteDependable(); + protected readonly loadBalancerAttachedDependencies = new DependencyGroup(); /** * The types of the directly registered members of this target group @@ -276,7 +276,7 @@ export abstract class TargetGroupBase extends Construct implements ITargetGroup /** * List of constructs that need to be depended on to ensure the TargetGroup is associated to a load balancer */ - public get loadBalancerAttached(): cdk.IDependable { + public get loadBalancerAttached(): IDependable { return this.loadBalancerAttachedDependencies; } @@ -376,7 +376,7 @@ export interface ITargetGroup extends IConstruct { /** * Return an object to depend on the listeners added to this target group */ - readonly loadBalancerAttached: cdk.IDependable; + readonly loadBalancerAttached: IDependable; } /** diff --git a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts index 76979b2f62548..999758e10dfdd 100644 --- a/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts +++ b/packages/@aws-cdk/aws-elasticloadbalancingv2/lib/shared/imported.ts @@ -1,5 +1,5 @@ import * as cdk from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Construct, DependencyGroup, IDependable } from 'constructs'; import { ITargetGroup, TargetGroupImportProps } from './base-target-group'; /** @@ -19,7 +19,7 @@ export abstract class ImportedTargetGroupBase extends Construct implements ITarg /** * Return an object to depend on the listeners added to this target group */ - public readonly loadBalancerAttached: cdk.IDependable = new cdk.ConcreteDependable(); + public readonly loadBalancerAttached: IDependable = new DependencyGroup(); constructor(scope: Construct, id: string, props: TargetGroupImportProps) { super(scope, id); diff --git a/packages/@aws-cdk/aws-iam/lib/grant.ts b/packages/@aws-cdk/aws-iam/lib/grant.ts index 783f87f776441..4c8000c6ad4e7 100644 --- a/packages/@aws-cdk/aws-iam/lib/grant.ts +++ b/packages/@aws-cdk/aws-iam/lib/grant.ts @@ -1,5 +1,5 @@ import * as cdk from '@aws-cdk/core'; -import { IConstruct } from 'constructs'; +import { Dependable, IConstruct, IDependable } from 'constructs'; import { PolicyStatement } from './policy-statement'; import { IGrantable, IPrincipal } from './principals'; @@ -101,7 +101,7 @@ export interface GrantOnPrincipalAndResourceOptions extends CommonGrantOptions { * This class is not instantiable by consumers on purpose, so that they will be * required to call the Grant factory functions. */ -export class Grant implements cdk.IDependable { +export class Grant implements IDependable { /** * Grant the given permissions to the principal * @@ -252,9 +252,9 @@ export class Grant implements cdk.IDependable { this.principalStatement = props.principalStatement; this.resourceStatement = props.resourceStatement; - cdk.DependableTrait.implement(this, { + Dependable.implement(this, { get dependencyRoots() { - return props.policyDependable ? cdk.DependableTrait.get(props.policyDependable).dependencyRoots : []; + return props.policyDependable ? Dependable.of(props.policyDependable).dependencyRoots : []; }, }); } @@ -302,7 +302,7 @@ interface GrantProps { * * Used to add dependencies on grants */ - readonly policyDependable?: cdk.IDependable; + readonly policyDependable?: IDependable; } /** @@ -330,7 +330,7 @@ export interface AddToResourcePolicyResult { * @default - If `statementAdded` is true, the resource object itself. * Otherwise, no dependable. */ - readonly policyDependable?: cdk.IDependable; + readonly policyDependable?: IDependable; } /** @@ -340,11 +340,11 @@ export interface AddToResourcePolicyResult { * inner dependables, as they may be mutable so we need to defer * the query. */ -export class CompositeDependable implements cdk.IDependable { - constructor(...dependables: cdk.IDependable[]) { - cdk.DependableTrait.implement(this, { +export class CompositeDependable implements IDependable { + constructor(...dependables: IDependable[]) { + Dependable.implement(this, { get dependencyRoots(): IConstruct[] { - return Array.prototype.concat.apply([], dependables.map(d => cdk.DependableTrait.get(d).dependencyRoots)); + return Array.prototype.concat.apply([], dependables.map(d => Dependable.of(d).dependencyRoots)); }, }); } diff --git a/packages/@aws-cdk/aws-iam/lib/principals.ts b/packages/@aws-cdk/aws-iam/lib/principals.ts index 6295b8fa966e9..903d207f74048 100644 --- a/packages/@aws-cdk/aws-iam/lib/principals.ts +++ b/packages/@aws-cdk/aws-iam/lib/principals.ts @@ -1,5 +1,6 @@ import * as cdk from '@aws-cdk/core'; import { Default, RegionInfo } from '@aws-cdk/region-info'; +import { IDependable } from 'constructs'; import { IOpenIdConnectProvider } from './oidc-provider'; import { Condition, Conditions, PolicyStatement } from './policy-statement'; import { ISamlProvider } from './saml-provider'; @@ -85,7 +86,7 @@ export interface AddToPrincipalPolicyResult { * @default - Required if `statementAdded` is true. * @experimental */ - readonly policyDependable?: cdk.IDependable; + readonly policyDependable?: IDependable; } /** diff --git a/packages/@aws-cdk/aws-iam/lib/private/immutable-role.ts b/packages/@aws-cdk/aws-iam/lib/private/immutable-role.ts index 6f5bf102175ef..fc8695b44645a 100644 --- a/packages/@aws-cdk/aws-iam/lib/private/immutable-role.ts +++ b/packages/@aws-cdk/aws-iam/lib/private/immutable-role.ts @@ -1,5 +1,5 @@ -import { ConcreteDependable, DependableTrait, Resource } from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Resource } from '@aws-cdk/core'; +import { Construct, Dependable, DependencyGroup } from 'constructs'; import { Grant } from '../grant'; import { IManagedPolicy } from '../managed-policy'; import { Policy } from '../policy'; @@ -36,7 +36,7 @@ export class ImmutableRole extends Resource implements IRole { }); // implement IDependable privately - DependableTrait.implement(this, { + Dependable.implement(this, { dependencyRoots: [role], }); } @@ -55,7 +55,7 @@ export class ImmutableRole extends Resource implements IRole { public addToPrincipalPolicy(_statement: PolicyStatement): AddToPrincipalPolicyResult { // Not really added, but for the purposes of consumer code pretend that it was. - return { statementAdded: true, policyDependable: new ConcreteDependable() }; + return { statementAdded: true, policyDependable: new DependencyGroup() }; } public grant(grantee: IPrincipal, ...actions: string[]): Grant { diff --git a/packages/@aws-cdk/aws-iam/lib/unknown-principal.ts b/packages/@aws-cdk/aws-iam/lib/unknown-principal.ts index 7b06dd27fe381..f2761d0ab386e 100644 --- a/packages/@aws-cdk/aws-iam/lib/unknown-principal.ts +++ b/packages/@aws-cdk/aws-iam/lib/unknown-principal.ts @@ -1,5 +1,5 @@ -import { Annotations, ConcreteDependable, Stack } from '@aws-cdk/core'; -import { IConstruct, Node } from 'constructs'; +import { Annotations, Stack } from '@aws-cdk/core'; +import { DependencyGroup, IConstruct, Node } from 'constructs'; import { PolicyStatement } from './policy-statement'; import { AddToPrincipalPolicyResult, IPrincipal, PrincipalPolicyFragment } from './principals'; @@ -43,7 +43,7 @@ export class UnknownPrincipal implements IPrincipal { const repr = JSON.stringify(stack.resolve(statement)); Annotations.of(this.resource).addWarning(`Add statement to this resource's role: ${repr}`); // Pretend we did the work. The human will do it for us, eventually. - return { statementAdded: true, policyDependable: new ConcreteDependable() }; + return { statementAdded: true, policyDependable: new DependencyGroup() }; } public addToPolicy(statement: PolicyStatement): boolean { diff --git a/packages/@aws-cdk/aws-lambda/lib/filesystem.ts b/packages/@aws-cdk/aws-lambda/lib/filesystem.ts index 388db50e045ec..992d0ec263310 100644 --- a/packages/@aws-cdk/aws-lambda/lib/filesystem.ts +++ b/packages/@aws-cdk/aws-lambda/lib/filesystem.ts @@ -1,7 +1,8 @@ import { Connections } from '@aws-cdk/aws-ec2'; import * as efs from '@aws-cdk/aws-efs'; import * as iam from '@aws-cdk/aws-iam'; -import { IDependable, Stack } from '@aws-cdk/core'; +import { Stack } from '@aws-cdk/core'; +import { IDependable } from 'constructs'; /** * FileSystem configurations for the Lambda function diff --git a/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts b/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts index 6092e1c51d567..f50a060daf0d4 100644 --- a/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts +++ b/packages/@aws-cdk/aws-lambda/lib/singleton-lambda.ts @@ -1,6 +1,6 @@ import * as iam from '@aws-cdk/aws-iam'; import * as cdk from '@aws-cdk/core'; -import { Construct, IConstruct, Node } from 'constructs'; +import { Construct, IConstruct, IDependable, Node } from 'constructs'; import { Function as LambdaFunction, FunctionProps } from './function'; import { FunctionBase } from './function-base'; import { Version } from './lambda-version'; @@ -83,7 +83,7 @@ export class SingletonFunction extends FunctionBase { * Using node.addDependency() does not work on this method as the underlying lambda function is modeled * as a singleton across the stack. Use this method instead to declare dependencies. */ - public addDependency(...up: cdk.IDependable[]) { + public addDependency(...up: IDependable[]) { this.lambdaFunction.node.addDependency(...up); } diff --git a/packages/@aws-cdk/aws-s3/lib/destination.ts b/packages/@aws-cdk/aws-s3/lib/destination.ts index d8b8e1aa55e85..e515d742880e5 100644 --- a/packages/@aws-cdk/aws-s3/lib/destination.ts +++ b/packages/@aws-cdk/aws-s3/lib/destination.ts @@ -1,5 +1,4 @@ -import * as cdk from '@aws-cdk/core'; -import { Construct } from 'constructs'; +import { Construct, IDependable } from 'constructs'; import { IBucket } from './bucket'; /** @@ -34,7 +33,7 @@ export interface BucketNotificationDestinationConfig { * Any additional dependencies that should be resolved before the bucket notification * can be configured (for example, the SNS Topic Policy resource). */ - readonly dependencies?: cdk.IDependable[] + readonly dependencies?: IDependable[] } /** diff --git a/packages/@aws-cdk/core/lib/dependency.ts b/packages/@aws-cdk/core/lib/dependency.ts deleted file mode 100644 index 6e5c775958b9d..0000000000000 --- a/packages/@aws-cdk/core/lib/dependency.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { IConstruct } from 'constructs'; - -/** - * Trait marker for classes that can be depended upon - * - * The presence of this interface indicates that an object has - * an `IDependableTrait` implementation. - * - * This interface can be used to take an (ordering) dependency on a set of - * constructs. An ordering dependency implies that the resources represented by - * those constructs are deployed before the resources depending ON them are - * deployed. - */ -export interface IDependable { - // Empty, this interface is a trait marker -} - -/** - * A set of constructs to be used as a dependable - * - * This class can be used when a set of constructs which are disjoint in the - * construct tree needs to be combined to be used as a single dependable. - * - * @experimental - */ -export class ConcreteDependable implements IDependable { - private readonly _dependencyRoots = new Array(); - - constructor() { - const self = this; - DependableTrait.implement(this, { - get dependencyRoots() { return self._dependencyRoots; }, - }); - } - - /** - * Add a construct to the dependency roots - */ - public add(construct: IConstruct) { - this._dependencyRoots.push(construct); - } -} - -const DEPENDABLE_SYMBOL = Symbol.for('@aws-cdk/core.DependableTrait'); - -/** - * Trait for IDependable - * - * Traits are interfaces that are privately implemented by objects. Instead of - * showing up in the public interface of a class, they need to be queried - * explicitly. This is used to implement certain framework features that are - * not intended to be used by Construct consumers, and so should be hidden - * from accidental use. - * - * @example - * - * // Usage - * const roots = DependableTrait.get(construct).dependencyRoots; - * - * // Definition - * class TraitImplementation implements DependableTrait { - * public readonly dependencyRoots: IConstruct[]; - * constructor() { - * this.dependencyRoots = [constructA, constructB, constructC]; - * } - * } - * DependableTrait.implement(construct, new TraitImplementation()); - * - * @experimental - */ -export abstract class DependableTrait { - /** - * Register `instance` to have the given DependableTrait - * - * Should be called in the class constructor. - */ - public static implement(instance: IDependable, trait: DependableTrait) { - // I would also like to reference classes (to cut down on the list of objects - // we need to manage), but we can't do that either since jsii doesn't have the - // concept of a class reference. - (instance as any)[DEPENDABLE_SYMBOL] = trait; - } - - /** - * Return the matching DependableTrait for the given class instance. - */ - public static get(instance: IDependable): DependableTrait { - const ret = (instance as any)[DEPENDABLE_SYMBOL]; - if (!ret) { - throw new Error(`${instance} does not implement DependableTrait`); - } - return ret; - } - - /** - * The set of constructs that form the root of this dependable - * - * All resources under all returned constructs are included in the ordering - * dependency. - */ - public abstract readonly dependencyRoots: IConstruct[]; -} diff --git a/packages/@aws-cdk/core/lib/index.ts b/packages/@aws-cdk/core/lib/index.ts index 2cad352835973..c080ef1440851 100644 --- a/packages/@aws-cdk/core/lib/index.ts +++ b/packages/@aws-cdk/core/lib/index.ts @@ -5,7 +5,6 @@ export * from './token'; export * from './resolvable'; export * from './lazy'; export * from './tag-manager'; -export * from './dependency'; export * from './string-fragments'; export * from './stack-synthesizers'; diff --git a/packages/@aws-cdk/core/rosetta/default.ts-fixture b/packages/@aws-cdk/core/rosetta/default.ts-fixture index 558cc09b1c049..b4fc6518a606e 100644 --- a/packages/@aws-cdk/core/rosetta/default.ts-fixture +++ b/packages/@aws-cdk/core/rosetta/default.ts-fixture @@ -23,7 +23,6 @@ import { CustomResource, CustomResourceProvider, CustomResourceProviderRuntime, - DependableTrait, Duration, Fn, IConstruct, From d194fc62013393d3847fd8bc38ce7a46209ce253 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Thu, 8 Apr 2021 18:53:44 +0100 Subject: [PATCH 079/304] chore(cdk): public package on v2 (#14056) On v2, this was accidentally marked as 'private'. Changing this back to public visibility with the correct npm dist-tag. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/cdk/package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cdk/package.json b/packages/cdk/package.json index f2718b48eebab..34d31eb42e7fe 100644 --- a/packages/cdk/package.json +++ b/packages/cdk/package.json @@ -1,7 +1,6 @@ { "name": "cdk", "version": "0.0.0", - "private": true, "description": "AWS CDK Toolkit", "bin": { "cdk": "bin/cdk" @@ -36,5 +35,8 @@ }, "engines": { "node": ">= 8.10.0" + }, + "publishConfig": { + "tag": "next" } } From 2819b32eb72137aa3278377b8de72a8a3a14758e Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Fri, 9 Apr 2021 15:08:03 +0200 Subject: [PATCH 080/304] chore(v2): init template fixes (#14025) * Fix namespace for Java, remove `.lib` suffix (it's silly and unnecessary) * Fix version suffix for Java and .NET packages * Fix init test that fails intermittently to validate the .NET project file. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/aws-cdk-lib/package.json | 8 ++--- .../myorg/%name.PascalCased%App.template.java | 4 +-- .../%name.PascalCased%Stack.template.java | 4 +-- .../%name.PascalCased%Test.template.java | 2 +- .../myorg/%name.PascalCased%App.template.java | 2 +- .../%name.PascalCased%Stack.template.java | 6 ++-- .../%name.PascalCased%StackTest.template.java | 2 +- packages/aws-cdk/test/init.test.ts | 36 ++++++++++++------- 8 files changed, 36 insertions(+), 28 deletions(-) diff --git a/packages/aws-cdk-lib/package.json b/packages/aws-cdk-lib/package.json index 4e151a5552955..84dafacfea154 100644 --- a/packages/aws-cdk-lib/package.json +++ b/packages/aws-cdk-lib/package.json @@ -52,15 +52,13 @@ "dotnet": { "namespace": "Amazon.CDK", "packageId": "Amazon.CDK.Lib", - "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png", - "versionSuffix": "-devpreview" + "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png" }, "java": { - "package": "software.amazon.awscdk.core", + "package": "software.amazon.awscdk", "maven": { "groupId": "software.amazon.awscdk", - "artifactId": "aws-cdk-lib", - "versionSuffix": ".DEVPREVIEW" + "artifactId": "aws-cdk-lib" } }, "python": { diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java index d68e49440506b..56a537b52c181 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java @@ -1,7 +1,7 @@ package com.myorg; -import software.amazon.awscdk.lib.App; -import software.amazon.awscdk.lib.Environment; +import software.amazon.awscdk.App; +import software.amazon.awscdk.Environment; import java.util.Arrays; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java index ce8f0d84c2cba..0d8cbf10bf988 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java @@ -1,8 +1,8 @@ package com.myorg; import software.constructs.Construct; -import software.amazon.awscdk.lib.Stack; -import software.amazon.awscdk.lib.StackProps; +import software.amazon.awscdk.Stack; +import software.amazon.awscdk.StackProps; public class %name.PascalCased%Stack extends Stack { public %name.PascalCased%Stack(final Construct scope, final String id) { diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java index 724dedacf5dc2..c837381b712ae 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/test/java/com/myorg/%name.PascalCased%Test.template.java @@ -1,6 +1,6 @@ package com.myorg; -import software.amazon.awscdk.lib.App; +import software.amazon.awscdk.App; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java index fb3c52db81d4e..e015c59bc73bf 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java @@ -1,6 +1,6 @@ package com.myorg; -import software.amazon.awscdk.lib.App; +import software.amazon.awscdk.App; public final class %name.PascalCased%App { public static void main(final String[] args) { diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java index cffd26afb5567..263b425be5add 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/main/java/com/myorg/%name.PascalCased%Stack.template.java @@ -1,9 +1,9 @@ package com.myorg; import software.constructs.Construct; -import software.amazon.awscdk.lib.Duration; -import software.amazon.awscdk.lib.Stack; -import software.amazon.awscdk.lib.StackProps; +import software.amazon.awscdk.Duration; +import software.amazon.awscdk.Stack; +import software.amazon.awscdk.StackProps; import software.amazon.awscdk.services.sns.Topic; import software.amazon.awscdk.services.sns.subscriptions.SqsSubscription; import software.amazon.awscdk.services.sqs.Queue; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java index 6930c2bcc44a0..a6f7c4f4590b4 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/src/test/java/com/myorg/%name.PascalCased%StackTest.template.java @@ -1,6 +1,6 @@ package com.myorg; -import software.amazon.awscdk.lib.App; +import software.amazon.awscdk.App; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; diff --git a/packages/aws-cdk/test/init.test.ts b/packages/aws-cdk/test/init.test.ts index 637b0abbcbbd1..d23c59df9cebb 100644 --- a/packages/aws-cdk/test/init.test.ts +++ b/packages/aws-cdk/test/init.test.ts @@ -123,27 +123,17 @@ describe('constructs version', () => { cliTest('.NET', async (workDir) => { await cliInit('app', 'csharp', false, true, workDir); - // convert dir name from aws-cdk-test-xyz to AwsCdkTestXyz - const slnName = path.basename(workDir).split('-').map(s => `${s[0].toUpperCase()}${s.slice(1)}`).join(''); - const csprojFile = path.join(workDir, 'src', slnName, `${slnName}.csproj`); + const csprojFile = (await recursiveListFiles(workDir)).filter(f => f.endsWith('.csproj'))[0]; + expect(csprojFile).toBeDefined(); - expect(await fs.pathExists(csprojFile)).toBeTruthy(); const csproj = (await fs.readFile(csprojFile, 'utf8')).split(/\r?\n/); - // return RegExpMatchArray (result of line.match()) for every lines that match re. - const matches = csproj.map(line => line.match(/\ l); - expect(matches.length).toEqual(1); - matches.forEach(m => { - const version = m && m[1]; - expect(version).toMatch(/\[10\.[\d]+\.[\d]+,11\.0\.0\)/); - }); + expect(csproj).toContainEqual(expect.stringMatching(/\ { await cliInit('app', 'python', false, true, workDir); - // convert dir name from aws-cdk-test-xyz to AwsCdkTestXyz expect(await fs.pathExists(path.join(workDir, 'setup.py'))).toBeTruthy(); const setupPy = (await fs.readFile(path.join(workDir, 'setup.py'), 'utf8')).split(/\r?\n/); // return RegExpMatchArray (result of line.match()) for every lines that match re. @@ -177,3 +167,23 @@ async function withTempDir(cb: (dir: string) => void | Promise) { await fs.remove(tmpDir); } } + +/** + * List all files underneath dir + */ +async function recursiveListFiles(rdir: string): Promise { + const ret = new Array(); + await recurse(rdir); + return ret; + + async function recurse(dir: string) { + for (const name of await fs.readdir(dir)) { + const fullPath = path.join(dir, name); + if ((await fs.stat(fullPath)).isDirectory()) { + await recurse(fullPath); + } else { + ret.push(fullPath); + } + } + } +} \ No newline at end of file From 1192358763ca7a59898883c42b206f004407def7 Mon Sep 17 00:00:00 2001 From: nija-at Date: Mon, 12 Apr 2021 12:38:15 +0000 Subject: [PATCH 081/304] automatic pkglint fixes --- packages/@aws-cdk/assert-internal/package.json | 4 ++-- packages/@aws-cdk/assert/package.json | 2 +- .../aws-globalaccelerator-endpoints/package.json | 9 +++++---- packages/@aws-cdk/yaml-cfn/package.json | 3 ++- packages/aws-cdk-migration/package.json | 5 +++-- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/@aws-cdk/assert-internal/package.json b/packages/@aws-cdk/assert-internal/package.json index 7b96667edc773..f7303beb134bb 100644 --- a/packages/@aws-cdk/assert-internal/package.json +++ b/packages/@aws-cdk/assert-internal/package.json @@ -33,11 +33,11 @@ "@aws-cdk/cloudformation-diff": "0.0.0", "@aws-cdk/core": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "constructs": "^3.3.69" + "constructs": "^10.0.0" }, "peerDependencies": { "@aws-cdk/core": "0.0.0", - "constructs": "^3.3.69", + "constructs": "^10.0.0", "jest": "^26.6.3" }, "repository": { diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 606bd600c28c2..17e50e063157b 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -37,7 +37,7 @@ "aws-cdk-migration": "0.0.0", "@types/jest": "^26.0.22", "cdk-build-tools": "0.0.0", - "constructs": "^3.3.69", + "constructs": "^10.0.0", "jest": "^26.6.3", "pkglint": "0.0.0", "@aws-cdk/assert-internal": "0.0.0", diff --git a/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json b/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json index b910ad03cb07f..866de2aa1733b 100644 --- a/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json +++ b/packages/@aws-cdk/aws-globalaccelerator-endpoints/package.json @@ -81,7 +81,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0", "@aws-cdk/aws-globalaccelerator": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.3.69" + "constructs": "^10.0.0" }, "homepage": "https://github.com/aws/aws-cdk", "peerDependencies": { @@ -89,7 +89,7 @@ "@aws-cdk/aws-elasticloadbalancingv2": "0.0.0", "@aws-cdk/aws-globalaccelerator": "0.0.0", "@aws-cdk/core": "0.0.0", - "constructs": "^3.3.69" + "constructs": "^10.0.0" }, "engines": { "node": ">= 10.13.0 <13 || >=13.7.0" @@ -100,6 +100,7 @@ }, "maturity": "stable", "publishConfig": { - "tag": "latest" - } + "tag": "next" + }, + "private": true } diff --git a/packages/@aws-cdk/yaml-cfn/package.json b/packages/@aws-cdk/yaml-cfn/package.json index ec441e24ebf20..0c9d508e9b4f2 100644 --- a/packages/@aws-cdk/yaml-cfn/package.json +++ b/packages/@aws-cdk/yaml-cfn/package.json @@ -90,5 +90,6 @@ }, "publishConfig": { "tag": "next" - } + }, + "private": true } diff --git a/packages/aws-cdk-migration/package.json b/packages/aws-cdk-migration/package.json index b1ce33926dd9f..857dedfd35015 100644 --- a/packages/aws-cdk-migration/package.json +++ b/packages/aws-cdk-migration/package.json @@ -54,6 +54,7 @@ "node": ">= 10.13.0 <13 || >=13.7.0" }, "publishConfig": { - "tag": "latest" - } + "tag": "next" + }, + "private": true } From e8ffe8474ec9bdf6fb0cf6001007e9186a8f26a4 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Mon, 12 Apr 2021 13:41:41 +0100 Subject: [PATCH 082/304] chore(assert): fix dependencies for v2 Co-authored-by: Rico Huijbers --- packages/@aws-cdk/assert/package.json | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 17e50e063157b..20da89ef879c7 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -34,23 +34,18 @@ }, "license": "Apache-2.0", "devDependencies": { - "aws-cdk-migration": "0.0.0", + "@aws-cdk/assert-internal": "0.0.0", "@types/jest": "^26.0.22", + "aws-cdk-lib": "0.0.0", + "aws-cdk-migration": "0.0.0", "cdk-build-tools": "0.0.0", "constructs": "^10.0.0", "jest": "^26.6.3", "pkglint": "0.0.0", - "@aws-cdk/assert-internal": "0.0.0", "ts-jest": "^26.5.4" }, - "dependencies": { - "@aws-cdk/cloudformation-diff": "0.0.0", - "@aws-cdk/core": "0.0.0", - "@aws-cdk/cx-api": "0.0.0", - "constructs": "^10.0.0" - }, "peerDependencies": { - "@aws-cdk/core": "0.0.0", + "aws-cdk-lib": "0.0.0", "constructs": "^10.0.0", "jest": "^26.6.3" }, From 2957591a35cfd22df12a8ab2be9197b9894c127d Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Mon, 12 Apr 2021 16:50:01 +0200 Subject: [PATCH 083/304] Revert "chore(assert): fix dependencies for v2" This reverts commit e8ffe8474ec9bdf6fb0cf6001007e9186a8f26a4. --- packages/@aws-cdk/assert/package.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 20da89ef879c7..17e50e063157b 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -34,18 +34,23 @@ }, "license": "Apache-2.0", "devDependencies": { - "@aws-cdk/assert-internal": "0.0.0", - "@types/jest": "^26.0.22", - "aws-cdk-lib": "0.0.0", "aws-cdk-migration": "0.0.0", + "@types/jest": "^26.0.22", "cdk-build-tools": "0.0.0", "constructs": "^10.0.0", "jest": "^26.6.3", "pkglint": "0.0.0", + "@aws-cdk/assert-internal": "0.0.0", "ts-jest": "^26.5.4" }, + "dependencies": { + "@aws-cdk/cloudformation-diff": "0.0.0", + "@aws-cdk/core": "0.0.0", + "@aws-cdk/cx-api": "0.0.0", + "constructs": "^10.0.0" + }, "peerDependencies": { - "aws-cdk-lib": "0.0.0", + "@aws-cdk/core": "0.0.0", "constructs": "^10.0.0", "jest": "^26.6.3" }, From 6f3e1dd797ed94a6cef75d389c7eefb73e0b8fcd Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Mon, 12 Apr 2021 16:50:38 +0200 Subject: [PATCH 084/304] Don't do assert trasnform for v2 --- packages/@aws-cdk/assert/clone.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/@aws-cdk/assert/clone.sh b/packages/@aws-cdk/assert/clone.sh index a4e441512f9a6..a4b24ec7ad6b4 100755 --- a/packages/@aws-cdk/assert/clone.sh +++ b/packages/@aws-cdk/assert/clone.sh @@ -15,6 +15,7 @@ for file in ${files}; do cp $src/$file . done -if [[ "$majorversion" = "2" ]]; then - npx rewrite-imports-v2 "**/*.ts" -fi +# TEMPORARILY DISABLED TO FIX FORWARD MERGE +# if [[ "$majorversion" = "2" ]]; then +# npx rewrite-imports-v2 "**/*.ts" +# fi From c48be218a6bfb171d5685dda969770995df6a6ed Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Mon, 12 Apr 2021 17:07:09 +0200 Subject: [PATCH 085/304] chore: add missing import --- packages/@aws-cdk/core/test/resource.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/core/test/resource.test.ts b/packages/@aws-cdk/core/test/resource.test.ts index 0945e79127c0b..e1ab6b714b18e 100644 --- a/packages/@aws-cdk/core/test/resource.test.ts +++ b/packages/@aws-cdk/core/test/resource.test.ts @@ -4,7 +4,7 @@ import { nodeunitShim, Test } from 'nodeunit-shim'; import { App, App as Root, CfnCondition, CfnDeletionPolicy, CfnResource, - Fn, RemovalPolicy, Stack, + Fn, RemovalPolicy, Resource, Stack, } from '../lib'; import { synthesize } from '../lib/private/synthesis'; import { toCloudFormation } from './util'; From 02bf334ee71bd3736e0edbeca239e5efc6ba4491 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Mon, 12 Apr 2021 17:24:21 +0100 Subject: [PATCH 086/304] chore(assert-internal): SynthesisOptions -> StageSynthesisOptions --- packages/@aws-cdk/assert-internal/lib/synth-utils.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/@aws-cdk/assert-internal/lib/synth-utils.ts b/packages/@aws-cdk/assert-internal/lib/synth-utils.ts index bb8d9a437afd9..3cd69d0889aee 100644 --- a/packages/@aws-cdk/assert-internal/lib/synth-utils.ts +++ b/packages/@aws-cdk/assert-internal/lib/synth-utils.ts @@ -7,7 +7,7 @@ export class SynthUtils { /** * Returns the cloud assembly template artifact for a stack. */ - public static synthesize(stack: core.Stack, options: core.SynthesisOptions = { }): cxapi.CloudFormationStackArtifact { + public static synthesize(stack: core.Stack, options: core.StageSynthesisOptions = { }): cxapi.CloudFormationStackArtifact { // always synthesize against the root (be it an App or whatever) so all artifacts will be included const assembly = synthesizeApp(stack, options); return assembly.getStackArtifact(stack.artifactId); @@ -16,7 +16,7 @@ export class SynthUtils { /** * Synthesizes the stack and returns the resulting CloudFormation template. */ - public static toCloudFormation(stack: core.Stack, options: core.SynthesisOptions = { }): any { + public static toCloudFormation(stack: core.Stack, options: core.StageSynthesisOptions = { }): any { const synth = this._synthesizeWithNested(stack, options); if (synth instanceof cxapi.CloudFormationStackArtifact) { return synth.template; @@ -48,7 +48,7 @@ export class SynthUtils { * @return CloudFormationStackArtifact for normal stacks or the actual template for nested stacks * @internal */ - public static _synthesizeWithNested(stack: core.Stack, options: core.SynthesisOptions = { }): cxapi.CloudFormationStackArtifact | object { + public static _synthesizeWithNested(stack: core.Stack, options: core.StageSynthesisOptions = { }): cxapi.CloudFormationStackArtifact | object { // always synthesize against the root (be it an App or whatever) so all artifacts will be included const assembly = synthesizeApp(stack, options); @@ -64,7 +64,7 @@ export class SynthUtils { /** * Synthesizes the app in which a stack resides and returns the cloud assembly object. */ -function synthesizeApp(stack: core.Stack, options: core.SynthesisOptions) { +function synthesizeApp(stack: core.Stack, options: core.StageSynthesisOptions) { const root = stack.node.root; if (!core.Stage.isStage(root)) { throw new Error('unexpected: all stacks must be part of a Stage or an App'); From fbe2ec568348fffb2575f7527bbb23c4043d2d95 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Tue, 13 Apr 2021 09:18:46 +0100 Subject: [PATCH 087/304] chore(efs): fix duplicate import --- packages/@aws-cdk/aws-efs/lib/efs-file-system.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts b/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts index ae10592aff5f2..168920a3348c0 100644 --- a/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts +++ b/packages/@aws-cdk/aws-efs/lib/efs-file-system.ts @@ -1,10 +1,7 @@ import * as ec2 from '@aws-cdk/aws-ec2'; import * as kms from '@aws-cdk/aws-kms'; -// keep this import separate from other imports to reduce chance for merge conflicts with v2-main -// eslint-disable-next-line no-duplicate-imports -import { FeatureFlags } from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; -import { IResource, RemovalPolicy, Resource, Size, Tags } from '@aws-cdk/core'; +import { FeatureFlags, IResource, RemovalPolicy, Resource, Size, Tags } from '@aws-cdk/core'; import { Construct, DependencyGroup, IDependable } from 'constructs'; import { AccessPoint, AccessPointOptions } from './access-point'; import { CfnFileSystem, CfnMountTarget } from './efs.generated'; From 8187117a567f5d0adcc13f45a76e981e964ea910 Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Tue, 13 Apr 2021 11:13:32 +0100 Subject: [PATCH 088/304] fix expire feature flag --- packages/@aws-cdk/cx-api/lib/features.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/@aws-cdk/cx-api/lib/features.ts b/packages/@aws-cdk/cx-api/lib/features.ts index ddcb358816674..4df6bcfb91a08 100644 --- a/packages/@aws-cdk/cx-api/lib/features.ts +++ b/packages/@aws-cdk/cx-api/lib/features.ts @@ -176,6 +176,7 @@ export const FUTURE_FLAGS: { [key: string]: any } = { * and block usages of old feature flags in the new major version of CDK. */ export const FUTURE_FLAGS_EXPIRED: string[] = [ + APIGATEWAY_USAGEPLANKEY_ORDERINSENSITIVE_ID, DOCKER_IGNORE_SUPPORT, ENABLE_DIFF_NO_FAIL_CONTEXT, ENABLE_STACK_NAME_DUPLICATES_CONTEXT, From a4be66825adbd8f5c4d80d9bbaec88838ffb608e Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Tue, 13 Apr 2021 11:42:08 +0100 Subject: [PATCH 089/304] use constructs.Construct in aws-codepipeline-actions --- .../lib/codestar-connections/source-action.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/aws-codepipeline-actions/lib/codestar-connections/source-action.ts b/packages/@aws-cdk/aws-codepipeline-actions/lib/codestar-connections/source-action.ts index 9a883affe859d..62f547982119e 100644 --- a/packages/@aws-cdk/aws-codepipeline-actions/lib/codestar-connections/source-action.ts +++ b/packages/@aws-cdk/aws-codepipeline-actions/lib/codestar-connections/source-action.ts @@ -6,7 +6,7 @@ import { sourceArtifactBounds } from '../common'; // keep this import separate from other imports to reduce chance for merge conflicts with v2-main // eslint-disable-next-line no-duplicate-imports, import/order -import { Construct } from '@aws-cdk/core'; +import { Construct } from 'constructs'; /** * Construction properties for {@link CodeStarConnectionsSourceAction}. From 0054fac1ee2dd42fb43a3b23b206f0082fc3196e Mon Sep 17 00:00:00 2001 From: Niranjan Jayakar Date: Tue, 13 Apr 2021 13:53:57 +0100 Subject: [PATCH 090/304] fix rds --- .../@aws-cdk/aws-rds/test/instance.test.ts | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/@aws-cdk/aws-rds/test/instance.test.ts b/packages/@aws-cdk/aws-rds/test/instance.test.ts index 4dcbb84d1703e..db227fa24c3a5 100644 --- a/packages/@aws-cdk/aws-rds/test/instance.test.ts +++ b/packages/@aws-cdk/aws-rds/test/instance.test.ts @@ -9,7 +9,7 @@ import * as logs from '@aws-cdk/aws-logs'; import * as s3 from '@aws-cdk/aws-s3'; import * as cdk from '@aws-cdk/core'; import * as cxapi from '@aws-cdk/cx-api'; -import { testFutureBehavior, testLegacyBehavior } from 'cdk-build-tools/lib/feature-flag'; +import { testFutureBehavior } from 'cdk-build-tools/lib/feature-flag'; import * as rds from '../lib'; let stack: cdk.Stack; @@ -1280,33 +1280,33 @@ describe('instance', () => { }); }); - testFutureBehavior( - 'changes the case of the cluster identifier if the lowercaseDbIdentifier feature flag is enabled', - { [cxapi.RDS_LOWERCASE_DB_IDENTIFIER]: true }, cdk.App, (app, - ) => { - // GIVEN - stack = new cdk.Stack( app ); - vpc = new ec2.Vpc( stack, 'VPC' ); - - // WHEN - const instanceIdentifier = 'TestInstanceIdentifier'; - new rds.DatabaseInstance( stack, 'DB', { - engine: rds.DatabaseInstanceEngine.mysql({ - version: rds.MysqlEngineVersion.VER_8_0_19, - }), - vpc, - instanceIdentifier, - } ); + test('changes the case of the cluster identifier if the lowercaseDbIdentifier feature flag is enabled', () => { + // GIVEN + const app = new cdk.App({ + context: { [cxapi.RDS_LOWERCASE_DB_IDENTIFIER]: true }, + }); + stack = new cdk.Stack( app ); + vpc = new ec2.Vpc( stack, 'VPC' ); - // THEN - expect(stack).toHaveResource('AWS::RDS::DBInstance', { - DBInstanceIdentifier: instanceIdentifier.toLowerCase(), - }); + // WHEN + const instanceIdentifier = 'TestInstanceIdentifier'; + new rds.DatabaseInstance( stack, 'DB', { + engine: rds.DatabaseInstanceEngine.mysql({ + version: rds.MysqlEngineVersion.VER_8_0_19, + }), + vpc, + instanceIdentifier, + } ); + + // THEN + expect(stack).toHaveResource('AWS::RDS::DBInstance', { + DBInstanceIdentifier: instanceIdentifier.toLowerCase(), }); + }); - testLegacyBehavior( 'does not changes the case of the cluster identifier if the lowercaseDbIdentifier feature flag is disabled', cdk.App, (app ) => { + test( 'does not changes the case of the cluster identifier if the lowercaseDbIdentifier feature flag is disabled', () => { // GIVEN - stack = new cdk.Stack( app ); + stack = new cdk.Stack(); vpc = new ec2.Vpc( stack, 'VPC' ); // WHEN From b45869b5ad7a24a789c5e1468f36b13474c0e587 Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Tue, 13 Apr 2021 17:46:17 +0200 Subject: [PATCH 091/304] chore(assert): fix dependencies for v2 (#14113) We will build a different flavor of `@aws-cdk/assert` for v2. That means it needs to have different dependencies; it should no longer depend on `@aws-cdk/core`, but on `aws-cdk-lib`. This should only be merged AFTER the commit that changes how `@aws-cdk/assert` is built on the v1 branch. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/assert/package.json | 13 ++++--------- tools/cdk-integ-tools/bin/cdk-integ-assert.ts | 2 +- tools/cdk-integ-tools/package.json | 4 ++-- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 17e50e063157b..073c5e6dcaf6f 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -37,20 +37,15 @@ "aws-cdk-migration": "0.0.0", "@types/jest": "^26.0.22", "cdk-build-tools": "0.0.0", - "constructs": "^10.0.0", - "jest": "^26.6.3", + "constructs": "10.0.0", + "aws-cdk-lib": "0.0.0", + "jest": "26.6.3", "pkglint": "0.0.0", "@aws-cdk/assert-internal": "0.0.0", "ts-jest": "^26.5.4" }, - "dependencies": { - "@aws-cdk/cloudformation-diff": "0.0.0", - "@aws-cdk/core": "0.0.0", - "@aws-cdk/cx-api": "0.0.0", - "constructs": "^10.0.0" - }, "peerDependencies": { - "@aws-cdk/core": "0.0.0", + "aws-cdk-lib": "^0.0.0", "constructs": "^10.0.0", "jest": "^26.6.3" }, diff --git a/tools/cdk-integ-tools/bin/cdk-integ-assert.ts b/tools/cdk-integ-tools/bin/cdk-integ-assert.ts index 2fd262a933792..3c5cb049cf0d0 100644 --- a/tools/cdk-integ-tools/bin/cdk-integ-assert.ts +++ b/tools/cdk-integ-tools/bin/cdk-integ-assert.ts @@ -1,6 +1,6 @@ #!/usr/bin/env node // Verify that all integration tests still match their expected output -import { canonicalizeTemplate } from '@aws-cdk/assert'; +import { canonicalizeTemplate } from '@aws-cdk/assert-internal'; import { diffTemplate, formatDifferences } from '@aws-cdk/cloudformation-diff'; import { DEFAULT_SYNTH_OPTIONS, IntegrationTests } from '../lib/integ-helpers'; diff --git a/tools/cdk-integ-tools/package.json b/tools/cdk-integ-tools/package.json index bb9fbacb970b0..4526dcb65e6b2 100644 --- a/tools/cdk-integ-tools/package.json +++ b/tools/cdk-integ-tools/package.json @@ -37,7 +37,7 @@ "dependencies": { "@aws-cdk/cloudformation-diff": "0.0.0", "@aws-cdk/cx-api": "0.0.0", - "@aws-cdk/assert": "0.0.0", + "@aws-cdk/assert-internal": "0.0.0", "aws-cdk": "0.0.0", "fs-extra": "^9.1.0", "yargs": "^16.2.0" @@ -51,7 +51,7 @@ "node": ">= 10.13.0 <13 || >=13.7.0" }, "peerDependencies": { - "@aws-cdk/assert": "0.0.0" + "@aws-cdk/assert-internal": "0.0.0" }, "ubergen": { "exclude": true From ddfad3bb0d638593adc5162fc2753e64592f1a53 Mon Sep 17 00:00:00 2001 From: Eli Polonsky Date: Tue, 13 Apr 2021 22:39:16 -1000 Subject: [PATCH 092/304] chore(msk): Break dependency of stable modules (#14133) As part of v2 stabilization, we decide to pull `aws-msk` out of `aws-cdk-lib` as an experimental module. Problem is we have stable modules that depend on it. This PR breaks those dependencies by un-typing the references and renaming the properties. Once `aws-msk` graduates, it can be pulled into `aws-cdk-lib` without any breaking changes. Note that this change cannot be done on `master` since it involves breaking stable API's. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../@aws-cdk/aws-lambda-event-sources/lib/kafka.ts | 11 +++++------ .../@aws-cdk/aws-lambda-event-sources/package.json | 2 -- .../aws-lambda-event-sources/test/test.kafka.ts | 9 ++++----- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts b/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts index 56e6b2a64ce26..e0c66477d0d35 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts +++ b/packages/@aws-cdk/aws-lambda-event-sources/lib/kafka.ts @@ -2,7 +2,6 @@ import * as crypto from 'crypto'; import { ISecurityGroup, IVpc, SubnetSelection } from '@aws-cdk/aws-ec2'; import * as iam from '@aws-cdk/aws-iam'; import * as lambda from '@aws-cdk/aws-lambda'; -import * as msk from '@aws-cdk/aws-msk'; import * as secretsmanager from '@aws-cdk/aws-secretsmanager'; import { Stack } from '@aws-cdk/core'; import { Construct } from 'constructs'; @@ -27,9 +26,9 @@ export interface KafkaEventSourceProps extends StreamEventSourceProps { */ export interface ManagedKafkaEventSourceProps extends KafkaEventSourceProps { /** - * an MSK cluster construct + * an MSK cluster ARN. */ - readonly cluster: msk.ICluster + readonly clusterArn: string } /** @@ -100,9 +99,9 @@ export class ManagedKafkaEventSource extends StreamEventSource { public bind(target: lambda.IFunction) { target.addEventSourceMapping( - `KafkaEventSource:${this.innerProps.cluster.clusterArn}${this.innerProps.topic}`, + `KafkaEventSource:${this.innerProps.clusterArn}${this.innerProps.topic}`, this.enrichMappingOptions({ - eventSourceArn: this.innerProps.cluster.clusterArn, + eventSourceArn: this.innerProps.clusterArn, startingPosition: this.innerProps.startingPosition, // From https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html#msk-password-limitations, "Amazon MSK only supports SCRAM-SHA-512 authentication." sourceAccessConfigurations: [{ type: lambda.SourceAccessConfigurationType.SASL_SCRAM_512_AUTH, uri: this.innerProps.secret.secretArn }], @@ -115,7 +114,7 @@ export class ManagedKafkaEventSource extends StreamEventSource { target.addToRolePolicy(new iam.PolicyStatement( { actions: ['kafka:DescribeCluster', 'kafka:GetBootstrapBrokers', 'kafka:ListScramSecrets'], - resources: [this.innerProps.cluster.clusterArn], + resources: [this.innerProps.clusterArn], }, )); diff --git a/packages/@aws-cdk/aws-lambda-event-sources/package.json b/packages/@aws-cdk/aws-lambda-event-sources/package.json index c0f7e886cacb5..e4f972d643611 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/package.json +++ b/packages/@aws-cdk/aws-lambda-event-sources/package.json @@ -78,7 +78,6 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kinesis": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", - "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-s3-notifications": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", @@ -97,7 +96,6 @@ "@aws-cdk/aws-iam": "0.0.0", "@aws-cdk/aws-kinesis": "0.0.0", "@aws-cdk/aws-lambda": "0.0.0", - "@aws-cdk/aws-msk": "0.0.0", "@aws-cdk/aws-s3": "0.0.0", "@aws-cdk/aws-s3-notifications": "0.0.0", "@aws-cdk/aws-secretsmanager": "0.0.0", diff --git a/packages/@aws-cdk/aws-lambda-event-sources/test/test.kafka.ts b/packages/@aws-cdk/aws-lambda-event-sources/test/test.kafka.ts index 452794014b6e4..3c88a3ae23828 100644 --- a/packages/@aws-cdk/aws-lambda-event-sources/test/test.kafka.ts +++ b/packages/@aws-cdk/aws-lambda-event-sources/test/test.kafka.ts @@ -1,7 +1,6 @@ import { arrayWith, expect, haveResource } from '@aws-cdk/assert-internal'; import { SecurityGroup, SubnetType, Vpc } from '@aws-cdk/aws-ec2'; import * as lambda from '@aws-cdk/aws-lambda'; -import * as msk from '@aws-cdk/aws-msk'; import { Secret } from '@aws-cdk/aws-secretsmanager'; import * as cdk from '@aws-cdk/core'; import { Test } from 'nodeunit'; @@ -14,14 +13,14 @@ export = { // GIVEN const stack = new cdk.Stack(); const fn = new TestFunction(stack, 'Fn'); - const cluster = msk.Cluster.fromClusterArn(stack, 'Cluster', 'some-arn'); + const clusterArn = 'some-arn'; const kafkaTopic = 'some-topic'; const secret = new Secret(stack, 'Secret', { secretName: 'AmazonMSK_KafkaSecret' }); // WHEN fn.addEventSource(new sources.ManagedKafkaEventSource( { - cluster: cluster, + clusterArn: clusterArn, topic: kafkaTopic, secret: secret, startingPosition: lambda.StartingPosition.TRIM_HORIZON, @@ -48,7 +47,7 @@ export = { 'kafka:ListScramSecrets', ], Effect: 'Allow', - Resource: cluster.clusterArn, + Resource: clusterArn, }, ], Version: '2012-10-17', @@ -62,7 +61,7 @@ export = { })); expect(stack).to(haveResource('AWS::Lambda::EventSourceMapping', { - EventSourceArn: cluster.clusterArn, + EventSourceArn: clusterArn, FunctionName: { Ref: 'Fn9270CBC0', }, From d70fab6fdbe595cced25defcc4741e69eae400fe Mon Sep 17 00:00:00 2001 From: aws-cdk-automation Date: Wed, 14 Apr 2021 09:06:13 +0000 Subject: [PATCH 093/304] automatic pkglint fixes --- packages/@aws-cdk/assert/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 073c5e6dcaf6f..7ec794f601be9 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -37,7 +37,7 @@ "aws-cdk-migration": "0.0.0", "@types/jest": "^26.0.22", "cdk-build-tools": "0.0.0", - "constructs": "10.0.0", + "constructs": "^10.0.0", "aws-cdk-lib": "0.0.0", "jest": "26.6.3", "pkglint": "0.0.0", From db0878e74f3acf3142e4c60b64e3c14fdc8c2d22 Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Wed, 14 Apr 2021 16:47:13 +0200 Subject: [PATCH 094/304] chore(v2): more init template updates (#14145) * There were still `aws-cdk-lib` imports in Python * The Maven artifactId was wrong * C# templates confused the ArtifactId and the Namespace NOTE: After merging, this change should be backported to the v1 branch. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- .../%name.PascalCased%Stack.template.cs | 2 +- .../app/csharp/src/%name.PascalCased%/Program.template.cs | 2 +- .../%name.PascalCased%Stack.template.fs | 2 +- .../app/fsharp/src/%name.PascalCased%/Program.template.fs | 2 +- .../lib/init-templates/v2/app/java/pom.template.xml | 2 +- .../java/com/myorg/%name.PascalCased%App.template.java | 1 + .../%name.PythonModule%_stack.template.py | 2 +- .../lib/init-templates/v2/app/python/app.template.py | 8 ++++---- .../%name.PascalCased%Stack.template.cs | 2 +- .../csharp/src/%name.PascalCased%/Program.template.cs | 2 +- .../%name.PascalCased%Stack.template.fs | 2 +- .../fsharp/src/%name.PascalCased%/Program.template.fs | 2 +- .../init-templates/v2/sample-app/java/pom.template.xml | 2 +- .../%name.PythonModule%_stack.template.py | 2 +- .../init-templates/v2/sample-app/python/app.template.py | 4 ++-- packages/aws-cdk/test/integ/run-against-dist.bash | 7 +++++-- 16 files changed, 24 insertions(+), 20 deletions(-) diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs index 88a0b473e00be..2e8c5e654324a 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs @@ -1,4 +1,4 @@ -using Amazon.CDK.Lib; +using Amazon.CDK; using Constructs; namespace %name.PascalCased% diff --git a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs index b514172b49459..0a35f06be9217 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs +++ b/packages/aws-cdk/lib/init-templates/v2/app/csharp/src/%name.PascalCased%/Program.template.cs @@ -1,4 +1,4 @@ -using Amazon.CDK.Lib; +using Amazon.CDK; using System; using System.Collections.Generic; using System.Linq; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs index 40f90dc43d77e..5e4d9ef94e748 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs @@ -1,6 +1,6 @@ namespace %name.PascalCased% -open Amazon.CDK.Lib +open Amazon.CDK type %name.PascalCased%Stack(scope, id, props) as this = inherit Stack(scope, id, props) diff --git a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs index 4b28d1e03ba9a..dc618af3fbbf1 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs +++ b/packages/aws-cdk/lib/init-templates/v2/app/fsharp/src/%name.PascalCased%/Program.template.fs @@ -1,4 +1,4 @@ -open Amazon.CDK.Lib +open Amazon.CDK open %name.PascalCased% [] diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml index 2ce365f94c1a0..1d0eb742d4f8e 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/pom.template.xml @@ -41,7 +41,7 @@ software.amazon.awscdk - lib + aws-cdk-lib ${cdk.version} diff --git a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java index 1cfc03a068e7f..6499cbc9d2870 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java +++ b/packages/aws-cdk/lib/init-templates/v2/app/java/src/main/java/com/myorg/%name.PascalCased%App.template.java @@ -2,6 +2,7 @@ import software.amazon.awscdk.App; import software.amazon.awscdk.Environment; +import software.amazon.awscdk.StackProps; import java.util.Arrays; diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py index 5d827c579e3ea..4599c4f6e19f6 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py @@ -1,4 +1,4 @@ -from aws-cdk-lib import Stack +from aws_cdk import Stack from constructs import Construct class %name.PascalCased%Stack(Stack): diff --git a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py index 4ad1d3bb892f2..65cd03f7253da 100644 --- a/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/app/python/app.template.py @@ -1,12 +1,12 @@ #!/usr/bin/env python3 import os -import aws-cdk-lib as core +import aws_cdk as cdk from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack -app = core.App() +app = cdk.App() %name.PascalCased%Stack(app, "%name.PascalCased%Stack", # If you don't specify 'env', this stack will be environment-agnostic. # Account/Region-dependent features and context lookups will not work, @@ -15,12 +15,12 @@ # Uncomment the next line to specialize this stack for the AWS Account # and Region that are implied by the current CLI configuration. - #env=core.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')), + #env=cdk.Environment(account=os.getenv('CDK_DEFAULT_ACCOUNT'), region=os.getenv('CDK_DEFAULT_REGION')), # Uncomment the next line if you know exactly what Account and Region you # want to deploy the stack to. */ - #env=core.Environment(account='123456789012', region='us-east-1'), + #env=cdk.Environment(account='123456789012', region='us-east-1'), # For more information, see https://docs.aws.amazon.com/cdk/latest/guide/environments.html ) diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs index 3b600b95b0395..c29344200226b 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.cs @@ -1,4 +1,4 @@ -using Amazon.CDK.Lib; +using Amazon.CDK; using Amazon.CDK.AWS.SNS; using Amazon.CDK.AWS.SNS.Subscriptions; using Amazon.CDK.AWS.SQS; diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs index ce88608d08cfe..20d5337f09888 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/csharp/src/%name.PascalCased%/Program.template.cs @@ -1,4 +1,4 @@ -using Amazon.CDK.Lib; +using Amazon.CDK; namespace %name.PascalCased% { diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs index fb527366dfb7b..1582e37f4faaf 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/%name.PascalCased%Stack.template.fs @@ -1,6 +1,6 @@ namespace %name.PascalCased% -open Amazon.CDK.Lib +open Amazon.CDK open Amazon.CDK.AWS.SNS open Amazon.CDK.AWS.SNS.Subscriptions open Amazon.CDK.AWS.SQS diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs index 4b28d1e03ba9a..dc618af3fbbf1 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/fsharp/src/%name.PascalCased%/Program.template.fs @@ -1,4 +1,4 @@ -open Amazon.CDK.Lib +open Amazon.CDK open %name.PascalCased% [] diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml index fcf9e64e4c3af..79c769157ceee 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/java/pom.template.xml @@ -36,7 +36,7 @@ software.amazon.awscdk - lib + aws-cdk-lib ${cdk.version} diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py index 77ed46da5744f..5b9c876d0baf3 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/%name.PythonModule%/%name.PythonModule%_stack.template.py @@ -1,5 +1,5 @@ from constructs import Construct -from aws-cdk-lib import ( +from aws_cdk import ( Duration, Stack, aws_iam as iam, diff --git a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py index caedbcec3bfc6..1f64e6a67bc56 100644 --- a/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py +++ b/packages/aws-cdk/lib/init-templates/v2/sample-app/python/app.template.py @@ -1,11 +1,11 @@ #!/usr/bin/env python3 -import aws-cdk-lib as core +import aws_cdk as cdk from %name.PythonModule%.%name.PythonModule%_stack import %name.PascalCased%Stack -app = core.App() +app = cdk.App() %name.PascalCased%Stack(app, "%name.StackName%", env={'region': 'us-west-2'}) app.synth() diff --git a/packages/aws-cdk/test/integ/run-against-dist.bash b/packages/aws-cdk/test/integ/run-against-dist.bash index d3d349b9302f3..0d5dc245df5e7 100644 --- a/packages/aws-cdk/test/integ/run-against-dist.bash +++ b/packages/aws-cdk/test/integ/run-against-dist.bash @@ -4,8 +4,6 @@ npmws=/tmp/cdk-rundist rm -rf $npmws mkdir -p $npmws -set -x - # This script must create 1 or 2 traps, and the 'trap' command will replace # the previous trap, so get some 'dynamic traps' mechanism in place TRAPS=() @@ -43,6 +41,11 @@ function serve_npm_packages() { tarballs_glob="$dist_root/js/*.tgz" + if [[ -f package.json ]]; then + echo "Do not run this script in a directory with a package.json! It will most likely break!" >&2 + # Cowardly not running 'exit 1' because I'm not sure I won't mess up the build/canaries by doing so + fi + # When using '--daemon', 'npm install' first so the files are permanent, or # 'npx' will remove them too soon. npm install serve-npm-tarballs From e72d4c0ca418d5b0ac662d4ea24bf58de3d6d50c Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Thu, 15 Apr 2021 12:56:06 +0200 Subject: [PATCH 095/304] chore: `@aws-cdk/assert` package should be public for v2 (#14189) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/assert/package.json | 1 - tools/pkglint/lib/rules.ts | 8 +++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index 7ec794f601be9..bb1a9f3c9979c 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -1,7 +1,6 @@ { "name": "@aws-cdk/assert", "version": "0.0.0", - "private": true, "description": "An assertion library for use with CDK Apps", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/tools/pkglint/lib/rules.ts b/tools/pkglint/lib/rules.ts index 2301ffd8476ea..2f6bdceef5bbd 100644 --- a/tools/pkglint/lib/rules.ts +++ b/tools/pkglint/lib/rules.ts @@ -1568,8 +1568,10 @@ export class JestSetup extends ValidationRule { export class UbergenPackageVisibility extends ValidationRule { public readonly name = 'ubergen/package-visibility'; + // The ONLY packages that should be published for v2. // These include dependencies of the CDK CLI (aws-cdk). - private readonly publicPackages = [ + private readonly v2PublicPackages = [ + '@aws-cdk/assert', '@aws-cdk/cfnspec', '@aws-cdk/cloud-assembly-schema', '@aws-cdk/cloudformation-diff', @@ -1585,7 +1587,7 @@ export class UbergenPackageVisibility extends ValidationRule { public validate(pkg: PackageJson): void { if (cdkMajorVersion() === 2) { // Only packages in the publicPackages list should be "public". Everything else should be private. - if (this.publicPackages.includes(pkg.json.name) && pkg.json.private === true) { + if (this.v2PublicPackages.includes(pkg.json.name) && pkg.json.private === true) { pkg.report({ ruleName: this.name, message: 'Package must be public', @@ -1593,7 +1595,7 @@ export class UbergenPackageVisibility extends ValidationRule { delete pkg.json.private; }, }); - } else if (!this.publicPackages.includes(pkg.json.name) && pkg.json.private !== true) { + } else if (!this.v2PublicPackages.includes(pkg.json.name) && pkg.json.private !== true) { pkg.report({ ruleName: this.name, message: 'Package must not be public', From 7cb06f69d62ecfdb273d52829be937990cbbc8f0 Mon Sep 17 00:00:00 2001 From: nija-at Date: Thu, 15 Apr 2021 13:28:00 +0000 Subject: [PATCH 096/304] automatic pkglint fixes --- packages/@aws-cdk/assert/README.md | 12 ++++++------ packages/@aws-cdk/assert/package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/@aws-cdk/assert/README.md b/packages/@aws-cdk/assert/README.md index 9256b46d2b154..81f44c725f6b5 100644 --- a/packages/@aws-cdk/assert/README.md +++ b/packages/@aws-cdk/assert/README.md @@ -3,13 +3,13 @@ --- -![cdk-constructs: Experimental](https://img.shields.io/badge/cdk--constructs-experimental-important.svg?style=for-the-badge) +![cdk-constructs: Developer Preview](https://img.shields.io/badge/cdk--constructs-developer--preview-informational.svg?style=for-the-badge) -> The APIs of higher level constructs in this module are experimental and under active development. -> They are subject to non-backward compatible changes or removal in any future version. These are -> not subject to the [Semantic Versioning](https://semver.org/) model and breaking changes will be -> announced in the release notes. This means that while you may use them, you may need to update -> your source code when upgrading to a newer version of this package. +> The APIs of higher level constructs in this module are in **developer preview** before they +> become stable. We will only make breaking changes to address unforeseen API issues. Therefore, +> these APIs are not subject to [Semantic Versioning](https://semver.org/), and breaking changes +> will be announced in release notes. This means that while you may use them, you may need to +> update your source code when upgrading to a newer version of this package. --- diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index bb1a9f3c9979c..d276cd96ab885 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -67,6 +67,6 @@ "stability": "experimental", "maturity": "developer-preview", "publishConfig": { - "tag": "latest" + "tag": "next" } } From 8e88a6aeda544b658d0a5781ec13bfaf4fcf64c0 Mon Sep 17 00:00:00 2001 From: Rico Huijbers Date: Fri, 16 Apr 2021 14:45:13 +0200 Subject: [PATCH 097/304] chore(v2): re-enable the assert transform for v2 (#14207) We disabled it to make the previous builds work; now the absence of the tranforms is blocking the test because `assert` still depends on `@aws-cdk/core`. ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license* --- packages/@aws-cdk/assert/.gitignore | 6 +- packages/@aws-cdk/assert/README.md | 227 --------- packages/@aws-cdk/assert/clone.sh | 16 +- packages/@aws-cdk/assert/jest.ts | 107 ----- packages/@aws-cdk/assert/lib/assertion.ts | 40 -- .../assert/lib/assertions/and-assertion.ts | 19 - .../assert/lib/assertions/count-resources.ts | 58 --- .../@aws-cdk/assert/lib/assertions/exist.ts | 18 - .../assert/lib/assertions/have-output.ts | 116 ----- .../lib/assertions/have-resource-matchers.ts | 430 ------------------ .../assert/lib/assertions/have-resource.ts | 163 ------- .../assert/lib/assertions/have-type.ts | 21 - .../assert/lib/assertions/match-template.ts | 96 ---- .../lib/assertions/negated-assertion.ts | 16 - .../assert/lib/canonicalize-assets.ts | 71 --- packages/@aws-cdk/assert/lib/expect.ts | 12 - packages/@aws-cdk/assert/lib/index.ts | 15 - packages/@aws-cdk/assert/lib/inspector.ts | 74 --- packages/@aws-cdk/assert/lib/synth-utils.ts | 87 ---- packages/@aws-cdk/assert/package.json | 3 + .../@aws-cdk/assert/test/assertions.test.ts | 349 -------------- .../assert/test/canonicalize-assets.test.ts | 135 ------ .../@aws-cdk/assert/test/have-output.test.ts | 202 -------- .../assert/test/have-resource.test.ts | 279 ------------ .../@aws-cdk/assert/test/synth-utils.test.ts | 14 - .../aws-cdk-migration/bin/rewrite-imports-v2 | 2 +- 26 files changed, 21 insertions(+), 2555 deletions(-) delete mode 100644 packages/@aws-cdk/assert/README.md delete mode 100644 packages/@aws-cdk/assert/jest.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertion.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/and-assertion.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/count-resources.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/exist.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/have-output.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/have-resource-matchers.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/have-resource.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/have-type.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/match-template.ts delete mode 100644 packages/@aws-cdk/assert/lib/assertions/negated-assertion.ts delete mode 100644 packages/@aws-cdk/assert/lib/canonicalize-assets.ts delete mode 100644 packages/@aws-cdk/assert/lib/expect.ts delete mode 100644 packages/@aws-cdk/assert/lib/index.ts delete mode 100644 packages/@aws-cdk/assert/lib/inspector.ts delete mode 100644 packages/@aws-cdk/assert/lib/synth-utils.ts delete mode 100644 packages/@aws-cdk/assert/test/assertions.test.ts delete mode 100644 packages/@aws-cdk/assert/test/canonicalize-assets.test.ts delete mode 100644 packages/@aws-cdk/assert/test/have-output.test.ts delete mode 100644 packages/@aws-cdk/assert/test/have-resource.test.ts delete mode 100644 packages/@aws-cdk/assert/test/synth-utils.test.ts diff --git a/packages/@aws-cdk/assert/.gitignore b/packages/@aws-cdk/assert/.gitignore index 6a8dcb15f4bcf..f18f865e5fb57 100644 --- a/packages/@aws-cdk/assert/.gitignore +++ b/packages/@aws-cdk/assert/.gitignore @@ -20,4 +20,8 @@ nyc.config.js !.eslintrc.js !jest.config.js -junit.xml \ No newline at end of file +junit.xml +./lib +./test +README.md +jest.ts diff --git a/packages/@aws-cdk/assert/README.md b/packages/@aws-cdk/assert/README.md deleted file mode 100644 index 81f44c725f6b5..0000000000000 --- a/packages/@aws-cdk/assert/README.md +++ /dev/null @@ -1,227 +0,0 @@ -# Testing utilities and assertions for CDK libraries - - ---- - -![cdk-constructs: Developer Preview](https://img.shields.io/badge/cdk--constructs-developer--preview-informational.svg?style=for-the-badge) - -> The APIs of higher level constructs in this module are in **developer preview** before they -> become stable. We will only make breaking changes to address unforeseen API issues. Therefore, -> these APIs are not subject to [Semantic Versioning](https://semver.org/), and breaking changes -> will be announced in release notes. This means that while you may use them, you may need to -> update your source code when upgrading to a newer version of this package. - ---- - - - -This library contains helpers for writing unit tests and integration tests for CDK libraries - -## Unit tests - -Write your unit tests like this: - -```ts -const stack = new Stack(); - -new MyConstruct(stack, 'MyConstruct', { - ... -}); - -expect(stack).to(someExpectation(...)); -``` - -Here are the expectations you can use: - -## Verify (parts of) a template - -Check that the synthesized stack template looks like the given template, or is a superset of it. These functions match logical IDs and all properties of a resource. - -```ts -matchTemplate(template, matchStyle) -exactlyMatchTemplate(template) -beASupersetOfTemplate(template) -``` - -Example: - -```ts -expect(stack).to(beASupersetOfTemplate({ - Resources: { - HostedZone674DD2B7: { - Type: "AWS::Route53::HostedZone", - Properties: { - Name: "test.private.", - VPCs: [{ - VPCId: { Ref: 'VPC06C5F037' }, - VPCRegion: { Ref: 'AWS::Region' } - }] - } - } - } -})); -``` - - -## Check existence of a resource - -If you only care that a resource of a particular type exists (regardless of its logical identifier), and that *some* of its properties are set to specific values: - -```ts -haveResource(type, subsetOfProperties) -haveResourceLike(type, subsetOfProperties) -``` - -Example: - -```ts -expect(stack).to(haveResource('AWS::CertificateManager::Certificate', { - DomainName: 'test.example.com', - // Note: some properties omitted here - - ShouldNotExist: ABSENT -})); -``` - -The object you give to `haveResource`/`haveResourceLike` like can contain the -following values: - -- **Literal values**: the given property in the resource must match the given value *exactly*. -- `ABSENT`: a magic value to assert that a particular key in an object is *not* set (or set to `undefined`). -- special matchers for inexact matching. You can use these to match values based on more lenient conditions - than the default (such as an array containing at least one element, ignoring the rest, or an inexact string - match). - -The following matchers exist: - -- `objectLike(O)` - the value has to be an object matching at least the keys in `O` (but may contain - more). The nested values must match exactly. -- `deepObjectLike(O)` - as `objectLike`, but nested objects are also treated as partial specifications. -- `exactValue(X)` - must match exactly the given value. Use this to escape from `deepObjectLike`'s leniency - back to exact value matching. -- `arrayWith(E, [F, ...])` - value must be an array containing the given elements (or matchers) in any order. -- `stringLike(S)` - value must be a string matching `S`. `S` may contain `*` as wildcard to match any number - of characters. -- `anything()` - matches any value. -- `notMatching(M)` - any value that does NOT match the given matcher (or exact value) given. -- `encodedJson(M)` - value must be a string which, when decoded as JSON, matches the given matcher or - exact value. - -Slightly more complex example with array matchers: - -```ts -expect(stack).to(haveResourceLike('AWS::IAM::Policy', { - PolicyDocument: { - Statement: arrayWith(objectLike({ - Action: ['s3:GetObject'], - Resource: ['arn:my:arn'], - }}) - } -})); -``` - -## Capturing values from a match - -Special `Capture` matchers exist to capture values encountered during a match. These can be -used for two typical purposes: - -- Apply additional assertions to the values found during a matching operation. -- Use the value found during a matching operation in a new matching operation. - -`Capture` matchers take an inner matcher as an argument, and will only capture the value -if the inner matcher succeeds in matching the given value. - -Here's an example which asserts that a policy for `RoleA` contains two statements -with *different* ARNs (without caring what those ARNs might be), and that -a policy for `RoleB` *also* has a statement for one of those ARNs (again, without -caring what the ARN might be): - -```ts -const arn1 = Capture.aString(); -const arn2 = Capture.aString(); - -expect(stack).to(haveResourceLike('AWS::IAM::Policy', { - Roles: ['RoleA'], - PolicyDocument: { - Statement: [ - objectLike({ - Resource: [arn1.capture()], - }), - objectLike({ - Resource: [arn2.capture()], - }), - ], - }, -})); - -// Don't care about the values as long as they are not the same -expect(arn1.capturedValue).not.toEqual(arn2.capturedValue); - -expect(stack).to(haveResourceLike('AWS::IAM::Policy', { - Roles: ['RoleB'], - PolicyDocument: { - Statement: [ - objectLike({ - // This ARN must be the same as ARN1 above. - Resource: [arn1.capturedValue] - }), - ], - }, -})); -``` - -NOTE: `Capture` look somewhat like *bindings* in other pattern matching -libraries you might be used to, but they are far simpler and very -deterministic. In particular, they don't do unification: if the same Capture -is either used multiple times in the same structure expression or matches -multiple times, no restarting of the match is done to make them all match the -same value: the last value encountered by the `Capture` (as determined by the -behavior of the matchers around it) is stored into it and will be the one -available after the match has completed. - -## Check number of resources - -If you want to assert that `n` number of resources of a particular type exist, with or without specific properties: - -```ts -countResources(type, count) -countResourcesLike(type, count, props) -``` - -Example: - -```ts -expect(stack).to(countResources('AWS::ApiGateway::Method', 3)); -expect(stack).to(countResourcesLike('AWS::ApiGateway::Method', 1, { - HttpMethod: 'GET', - ResourceId: { - "Ref": "MyResource01234" - } -})); -``` - -## Check existence of an output - -`haveOutput` assertion can be used to check that a stack contains specific output. -Parameters to check against can be: - -- `outputName` -- `outputValue` -- `exportName` - -If `outputValue` is provided, at least one of `outputName`, `exportName` should be provided as well - -Example - -```ts -expect(synthStack).to(haveOutput({ - outputName: 'TestOutputName', - exportName: 'TestOutputExportName', - outputValue: { - 'Fn::GetAtt': [ - 'TestResource', - 'Arn' - ] - } -})); -``` diff --git a/packages/@aws-cdk/assert/clone.sh b/packages/@aws-cdk/assert/clone.sh index a4b24ec7ad6b4..c8d6c6e82af9f 100755 --- a/packages/@aws-cdk/assert/clone.sh +++ b/packages/@aws-cdk/assert/clone.sh @@ -4,6 +4,9 @@ scriptdir=$(cd $(dirname $0) && pwd) cd $scriptdir set -euo pipefail src="../assert-internal" + +# Don't copy .d.ts and .js files -- otherwise tsc might not recreate +# those files after we have rewritten the .ts files (probably due to timestamps) rsync -av $src/lib/ lib/ rsync -av $src/test/ test/ @@ -15,7 +18,12 @@ for file in ${files}; do cp $src/$file . done -# TEMPORARILY DISABLED TO FIX FORWARD MERGE -# if [[ "$majorversion" = "2" ]]; then -# npx rewrite-imports-v2 "**/*.ts" -# fi +if [[ "$majorversion" = "2" ]]; then + echo "Rewriting TS files..." + npx rewrite-imports-v2 "**/*.ts" + + # This forces a recompile even if this file already exists + rm -f tsconfig.tsbuildinfo + + echo "Done." +fi diff --git a/packages/@aws-cdk/assert/jest.ts b/packages/@aws-cdk/assert/jest.ts deleted file mode 100644 index 5c6db5727ed8d..0000000000000 --- a/packages/@aws-cdk/assert/jest.ts +++ /dev/null @@ -1,107 +0,0 @@ -import * as core from '@aws-cdk/core'; -import * as cxapi from '@aws-cdk/cx-api'; -import { countResources } from './lib'; -import { JestFriendlyAssertion } from './lib/assertion'; -import { haveOutput, HaveOutputProperties } from './lib/assertions/have-output'; -import { HaveResourceAssertion, ResourcePart } from './lib/assertions/have-resource'; -import { MatchStyle, matchTemplate } from './lib/assertions/match-template'; -import { expect as ourExpect } from './lib/expect'; -import { StackInspector } from './lib/inspector'; - -declare global { - namespace jest { - interface Matchers { - toMatchTemplate( - template: any, - matchStyle?: MatchStyle): R; - - toHaveResource( - resourceType: string, - properties?: any, - comparison?: ResourcePart): R; - - toHaveResourceLike( - resourceType: string, - properties?: any, - comparison?: ResourcePart): R; - - toHaveOutput(props: HaveOutputProperties): R; - - toCountResources(resourceType: string, count: number): R; - } - } -} - -expect.extend({ - toMatchTemplate( - actual: cxapi.CloudFormationStackArtifact | core.Stack, - template: any, - matchStyle?: MatchStyle) { - - const assertion = matchTemplate(template, matchStyle); - const inspector = ourExpect(actual); - const pass = assertion.assertUsing(inspector); - if (pass) { - return { - pass, - message: () => 'Not ' + assertion.description, - }; - } else { - return { - pass, - message: () => assertion.description, - }; - } - }, - - toHaveResource( - actual: cxapi.CloudFormationStackArtifact | core.Stack, - resourceType: string, - properties?: any, - comparison?: ResourcePart) { - - const assertion = new HaveResourceAssertion(resourceType, properties, comparison, false); - return applyAssertion(assertion, actual); - }, - - toHaveResourceLike( - actual: cxapi.CloudFormationStackArtifact | core.Stack, - resourceType: string, - properties?: any, - comparison?: ResourcePart) { - - const assertion = new HaveResourceAssertion(resourceType, properties, comparison, true); - return applyAssertion(assertion, actual); - }, - - toHaveOutput( - actual: cxapi.CloudFormationStackArtifact | core.Stack, - props: HaveOutputProperties) { - - return applyAssertion(haveOutput(props), actual); - }, - - toCountResources( - actual: cxapi.CloudFormationStackArtifact | core.Stack, - resourceType: string, - count = 1) { - - return applyAssertion(countResources(resourceType, count), actual); - }, -}); - -function applyAssertion(assertion: JestFriendlyAssertion, actual: cxapi.CloudFormationStackArtifact | core.Stack) { - const inspector = ourExpect(actual); - const pass = assertion.assertUsing(inspector); - if (pass) { - return { - pass, - message: () => 'Not ' + assertion.generateErrorMessage(), - }; - } else { - return { - pass, - message: () => assertion.generateErrorMessage(), - }; - } -} diff --git a/packages/@aws-cdk/assert/lib/assertion.ts b/packages/@aws-cdk/assert/lib/assertion.ts deleted file mode 100644 index 376b099f8433f..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertion.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Inspector } from './inspector'; - -export abstract class Assertion { - public abstract readonly description: string; - - public abstract assertUsing(inspector: InspectorClass): boolean; - - /** - * Assert this thing and another thing - */ - public and(assertion: Assertion): Assertion { - // Needs to delegate to a function so that we can import mutually dependent classes in the right order - return and(this, assertion); - } - - public assertOrThrow(inspector: InspectorClass) { - if (!this.assertUsing(inspector)) { - throw new Error(`${JSON.stringify(inspector.value, null, 2)} does not match ${this.description}`); - } - } -} - -export abstract class JestFriendlyAssertion extends Assertion { - /** - * Generates an error message that can be used by Jest. - */ - public abstract generateErrorMessage(): string; -} - -import { AndAssertion } from './assertions/and-assertion'; - -function and(left: Assertion, right: Assertion): Assertion { - return new AndAssertion(left, right); -} - -import { NegatedAssertion } from './assertions/negated-assertion'; - -export function not(assertion: Assertion): Assertion { - return new NegatedAssertion(assertion); -} diff --git a/packages/@aws-cdk/assert/lib/assertions/and-assertion.ts b/packages/@aws-cdk/assert/lib/assertions/and-assertion.ts deleted file mode 100644 index 737dbaca67e5e..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/and-assertion.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Assertion } from '../assertion'; -import { Inspector } from '../inspector'; - -export class AndAssertion extends Assertion { - public description: string = 'Combined assertion'; - - constructor(private readonly first: Assertion, private readonly second: Assertion) { - super(); - } - - public assertUsing(_inspector: InspectorClass): boolean { - throw new Error('This is never called'); - } - - public assertOrThrow(inspector: InspectorClass) { - this.first.assertOrThrow(inspector); - this.second.assertOrThrow(inspector); - } -} diff --git a/packages/@aws-cdk/assert/lib/assertions/count-resources.ts b/packages/@aws-cdk/assert/lib/assertions/count-resources.ts deleted file mode 100644 index 0827ba1f18306..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/count-resources.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { Assertion, JestFriendlyAssertion } from '../assertion'; -import { StackInspector } from '../inspector'; -import { isSuperObject } from './have-resource'; - -/** - * An assertion to check whether a resource of a given type and with the given properties exists, disregarding properties - */ -export function countResources(resourceType: string, count = 1): JestFriendlyAssertion { - return new CountResourcesAssertion(resourceType, count); -} - -/** - * An assertion to check whether a resource of a given type and with the given properties exists, considering properties - */ -export function countResourcesLike(resourceType: string, count = 1, props: any): Assertion { - return new CountResourcesAssertion(resourceType, count, props); -} - -class CountResourcesAssertion extends JestFriendlyAssertion { - private inspected: number = 0; - private readonly props: any; - - constructor( - private readonly resourceType: string, - private readonly count: number, - props: any = null) { - super(); - this.props = props; - } - - public assertUsing(inspector: StackInspector): boolean { - let counted = 0; - for (const logicalId of Object.keys(inspector.value.Resources || {})) { - const resource = inspector.value.Resources[logicalId]; - if (resource.Type === this.resourceType) { - if (this.props) { - if (isSuperObject(resource.Properties, this.props, [], true)) { - counted++; - this.inspected += 1; - } - } else { - counted++; - this.inspected += 1; - } - } - } - - return counted === this.count; - } - - public generateErrorMessage(): string { - return this.description; - } - - public get description(): string { - return `stack only has ${this.inspected} resource of type ${this.resourceType}${this.props ? ' with specified properties' : ''} but we expected to find ${this.count}`; - } -} diff --git a/packages/@aws-cdk/assert/lib/assertions/exist.ts b/packages/@aws-cdk/assert/lib/assertions/exist.ts deleted file mode 100644 index 3cc62f0444de4..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/exist.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Assertion } from '../assertion'; -import { StackPathInspector } from '../inspector'; - -class ExistingResourceAssertion extends Assertion { - public description: string = 'an existing resource'; - - constructor() { - super(); - } - - public assertUsing(inspector: StackPathInspector): boolean { - return inspector.value !== undefined; - } -} - -export function exist(): Assertion { - return new ExistingResourceAssertion(); -} diff --git a/packages/@aws-cdk/assert/lib/assertions/have-output.ts b/packages/@aws-cdk/assert/lib/assertions/have-output.ts deleted file mode 100644 index 36f76b3e573a0..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/have-output.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { JestFriendlyAssertion } from '../assertion'; -import { StackInspector } from '../inspector'; - -class HaveOutputAssertion extends JestFriendlyAssertion { - private readonly inspected: InspectionFailure[] = []; - - constructor(private readonly outputName?: string, private readonly exportName?: any, private outputValue?: any) { - super(); - if (!this.outputName && !this.exportName) { - throw new Error('At least one of [outputName, exportName] should be provided'); - } - } - - public get description(): string { - const descriptionPartsArray = new Array(); - - if (this.outputName) { - descriptionPartsArray.push(`name '${this.outputName}'`); - } - if (this.exportName) { - descriptionPartsArray.push(`export name ${JSON.stringify(this.exportName)}`); - } - if (this.outputValue) { - descriptionPartsArray.push(`value ${JSON.stringify(this.outputValue)}`); - } - - return 'output with ' + descriptionPartsArray.join(', '); - } - - public assertUsing(inspector: StackInspector): boolean { - if (!('Outputs' in inspector.value)) { - return false; - } - - for (const [name, props] of Object.entries(inspector.value.Outputs as Record)) { - const mismatchedFields = new Array(); - - if (this.outputName && name !== this.outputName) { - mismatchedFields.push('name'); - } - - if (this.exportName && JSON.stringify(this.exportName) !== JSON.stringify(props.Export?.Name)) { - mismatchedFields.push('export name'); - } - - if (this.outputValue && JSON.stringify(this.outputValue) !== JSON.stringify(props.Value)) { - mismatchedFields.push('value'); - } - - if (mismatchedFields.length === 0) { - return true; - } - - this.inspected.push({ - output: { [name]: props }, - failureReason: `mismatched ${mismatchedFields.join(', ')}`, - }); - } - - return false; - } - - public generateErrorMessage() { - const lines = new Array(); - - lines.push(`None of ${this.inspected.length} outputs matches ${this.description}.`); - - for (const inspected of this.inspected) { - lines.push(`- ${inspected.failureReason} in:`); - lines.push(indent(4, JSON.stringify(inspected.output, null, 2))); - } - - return lines.join('\n'); - } -} - -/** - * Interface for haveOutput function properties - * NOTE that at least one of [outputName, exportName] should be provided - */ -export interface HaveOutputProperties { - /** - * Logical ID of the output - * @default - the logical ID of the output will not be checked - */ - outputName?: string; - /** - * Export name of the output, when it's exported for cross-stack referencing - * @default - the export name is not required and will not be checked - */ - exportName?: any; - /** - * Value of the output; - * @default - the value will not be checked - */ - outputValue?: any; -} - -interface InspectionFailure { - output: any; - failureReason: string; -} - -/** - * An assertion to check whether Output with particular properties is present in a stack - * @param props properties of the Output that is being asserted against. - * Check ``HaveOutputProperties`` interface to get full list of available parameters - */ -export function haveOutput(props: HaveOutputProperties): JestFriendlyAssertion { - return new HaveOutputAssertion(props.outputName, props.exportName, props.outputValue); -} - -function indent(n: number, s: string) { - const prefix = ' '.repeat(n); - return prefix + s.replace(/\n/g, '\n' + prefix); -} diff --git a/packages/@aws-cdk/assert/lib/assertions/have-resource-matchers.ts b/packages/@aws-cdk/assert/lib/assertions/have-resource-matchers.ts deleted file mode 100644 index deb64b769ff16..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/have-resource-matchers.ts +++ /dev/null @@ -1,430 +0,0 @@ -import { ABSENT, InspectionFailure, PropertyMatcher } from './have-resource'; - -/** - * A matcher for an object that contains at least the given fields with the given matchers (or literals) - * - * Only does lenient matching one level deep, at the next level all objects must declare the - * exact expected keys again. - */ -export function objectLike(pattern: A): PropertyMatcher { - return _objectContaining(pattern, false); -} - -/** - * A matcher for an object that contains at least the given fields with the given matchers (or literals) - * - * Switches to "deep" lenient matching. Nested objects also only need to contain declared keys. - */ -export function deepObjectLike(pattern: A): PropertyMatcher { - return _objectContaining(pattern, true); -} - -function _objectContaining(pattern: A, deep: boolean): PropertyMatcher { - const anno = { [deep ? '$deepObjectLike' : '$objectLike']: pattern }; - - return annotateMatcher(anno, (value: any, inspection: InspectionFailure): boolean => { - if (typeof value !== 'object' || !value) { - return failMatcher(inspection, `Expect an object but got '${typeof value}'`); - } - - const errors = new Array(); - - for (const [patternKey, patternValue] of Object.entries(pattern)) { - if (patternValue === ABSENT) { - if (value[patternKey] !== undefined) { errors.push(`Field ${patternKey} present, but shouldn't be`); } - continue; - } - - if (!(patternKey in value)) { - errors.push(`Field ${patternKey} missing`); - continue; - } - - // If we are doing DEEP objectLike, translate object literals in the pattern into - // more `deepObjectLike` matchers, even if they occur in lists. - const matchValue = deep ? deepMatcherFromObjectLiteral(patternValue) : patternValue; - - const innerInspection = { ...inspection, failureReason: '' }; - const valueMatches = match(value[patternKey], matchValue, innerInspection); - if (!valueMatches) { - errors.push(`Field ${patternKey} mismatch: ${innerInspection.failureReason}`); - } - } - - /** - * Transform nested object literals into more deep object matchers, if applicable - * - * Object literals in lists are also transformed. - */ - function deepMatcherFromObjectLiteral(nestedPattern: any): any { - if (isObject(nestedPattern)) { - return deepObjectLike(nestedPattern); - } - if (Array.isArray(nestedPattern)) { - return nestedPattern.map(deepMatcherFromObjectLiteral); - } - return nestedPattern; - } - - if (errors.length > 0) { - return failMatcher(inspection, errors.join(', ')); - } - return true; - }); -} - -/** - * Match exactly the given value - * - * This is the default, you only need this to escape from the deep lenient matching - * of `deepObjectLike`. - */ -export function exactValue(expected: any): PropertyMatcher { - const anno = { $exactValue: expected }; - return annotateMatcher(anno, (value: any, inspection: InspectionFailure): boolean => { - return matchLiteral(value, expected, inspection); - }); -} - -/** - * A matcher for a list that contains all of the given elements in any order - */ -export function arrayWith(...elements: any[]): PropertyMatcher { - if (elements.length === 0) { return anything(); } - - const anno = { $arrayContaining: elements.length === 1 ? elements[0] : elements }; - return annotateMatcher(anno, (value: any, inspection: InspectionFailure): boolean => { - if (!Array.isArray(value)) { - return failMatcher(inspection, `Expect an array but got '${typeof value}'`); - } - - for (const element of elements) { - const failure = longestFailure(value, element); - if (failure) { - return failMatcher(inspection, `Array did not contain expected element, closest match at index ${failure[0]}: ${failure[1]}`); - } - } - - return true; - - /** - * Return 'null' if the matcher matches anywhere in the array, otherwise the longest error and its index - */ - function longestFailure(array: any[], matcher: any): [number, string] | null { - let fail: [number, string] | null = null; - for (let i = 0; i < array.length; i++) { - const innerInspection = { ...inspection, failureReason: '' }; - if (match(array[i], matcher, innerInspection)) { - return null; - } - - if (fail === null || innerInspection.failureReason.length > fail[1].length) { - fail = [i, innerInspection.failureReason]; - } - } - return fail; - } - }); -} - -/** - * Whether a value is an object - */ -function isObject(x: any): x is object { - // Because `typeof null === 'object'`. - return x && typeof x === 'object'; -} - -/** - * Helper function to make matcher failure reporting a little easier - * - * Our protocol is weird (change a string on a passed-in object and return 'false'), - * but I don't want to change that right now. - */ -export function failMatcher(inspection: InspectionFailure, error: string): boolean { - inspection.failureReason = error; - return false; -} - -/** - * Match a given literal value against a matcher - * - * If the matcher is a callable, use that to evaluate the value. Otherwise, the values - * must be literally the same. - */ -export function match(value: any, matcher: any, inspection: InspectionFailure) { - if (isCallable(matcher)) { - // Custom matcher (this mostly looks very weird because our `InspectionFailure` signature is weird) - const innerInspection: InspectionFailure = { ...inspection, failureReason: '' }; - const result = matcher(value, innerInspection); - if (typeof result !== 'boolean') { - return failMatcher(inspection, `Predicate returned non-boolean return value: ${result}`); - } - if (!result && !innerInspection.failureReason) { - // Custom matcher neglected to return an error - return failMatcher(inspection, 'Predicate returned false'); - } - // Propagate inner error in case of failure - if (!result) { inspection.failureReason = innerInspection.failureReason; } - return result; - } - - return matchLiteral(value, matcher, inspection); -} - -/** - * Match a literal value at the top level. - * - * When recursing into arrays or objects, the nested values can be either matchers - * or literals. - */ -function matchLiteral(value: any, pattern: any, inspection: InspectionFailure) { - if (pattern == null) { return true; } - - const errors = new Array(); - - if (Array.isArray(value) !== Array.isArray(pattern)) { - return failMatcher(inspection, 'Array type mismatch'); - } - if (Array.isArray(value)) { - if (pattern.length !== value.length) { - return failMatcher(inspection, 'Array length mismatch'); - } - - // Recurse comparison for individual objects - for (let i = 0; i < pattern.length; i++) { - if (!match(value[i], pattern[i], { ...inspection })) { - errors.push(`Array element ${i} mismatch`); - } - } - - if (errors.length > 0) { - return failMatcher(inspection, errors.join(', ')); - } - return true; - } - if ((typeof value === 'object') !== (typeof pattern === 'object')) { - return failMatcher(inspection, 'Object type mismatch'); - } - if (typeof pattern === 'object') { - // Check that all fields in the pattern have the right value - const innerInspection = { ...inspection, failureReason: '' }; - const matcher = objectLike(pattern)(value, innerInspection); - if (!matcher) { - inspection.failureReason = innerInspection.failureReason; - return false; - } - - // Check no fields uncovered - const realFields = new Set(Object.keys(value)); - for (const key of Object.keys(pattern)) { realFields.delete(key); } - if (realFields.size > 0) { - return failMatcher(inspection, `Unexpected keys present in object: ${Array.from(realFields).join(', ')}`); - } - return true; - } - - if (value !== pattern) { - return failMatcher(inspection, 'Different values'); - } - - return true; -} - -/** - * Whether a value is a callable - */ -function isCallable(x: any): x is ((...args: any[]) => any) { - return x && {}.toString.call(x) === '[object Function]'; -} - -/** - * Do a glob-like pattern match (which only supports *s) - */ -export function stringLike(pattern: string): PropertyMatcher { - // Replace * with .* in the string, escape the rest and brace with ^...$ - const regex = new RegExp(`^${pattern.split('*').map(escapeRegex).join('.*')}$`); - - return annotateMatcher({ $stringContaining: pattern }, (value: any, failure: InspectionFailure) => { - if (typeof value !== 'string') { - failure.failureReason = `Expected a string, but got '${typeof value}'`; - return false; - } - - if (!regex.test(value)) { - failure.failureReason = 'String did not match pattern'; - return false; - } - - return true; - }); -} - -/** - * Matches any value - */ -export function anything(): PropertyMatcher { - return annotateMatcher({ $anything: true }, () => true); -} - -/** - * Negate an inner matcher - */ -export function notMatching(matcher: any): PropertyMatcher { - return annotateMatcher({ $notMatching: matcher }, (value: any, failure: InspectionFailure) => { - const result = matcherFrom(matcher)(value, failure); - if (result) { - failure.failureReason = 'Should not have matched, but did'; - return false; - } - return true; - }); -} - -export type TypeValidator = (x: any) => x is T; - -/** - * Captures a value onto an object if it matches a given inner matcher - * - * @example - * - * const someValue = Capture.aString(); - * expect(stack).toHaveResource({ - * // ... - * Value: someValue.capture(stringMatching('*a*')), - * }); - * console.log(someValue.capturedValue); - */ -export class Capture { - /** - * A Capture object that captures any type - */ - public static anyType(): Capture { - return new Capture(); - } - - /** - * A Capture object that captures a string type - */ - public static aString(): Capture { - return new Capture((x: any): x is string => { - if (typeof x !== 'string') { - throw new Error(`Expected to capture a string, got '${x}'`); - } - return true; - }); - } - - /** - * A Capture object that captures a custom type - */ - // eslint-disable-next-line @typescript-eslint/no-shadow - public static a(validator: TypeValidator): Capture { - return new Capture(validator); - } - - private _value?: T; - private _didCapture = false; - private _wasInvoked = false; - - protected constructor(private readonly typeValidator?: TypeValidator) { - } - - /** - * Capture the value if the inner matcher successfully matches it - * - * If no matcher is given, `anything()` is assumed. - * - * And exception will be thrown if the inner matcher returns `true` and - * the value turns out to be of a different type than the `Capture` object - * is expecting. - */ - public capture(matcher?: any): PropertyMatcher { - if (matcher === undefined) { - matcher = anything(); - } - - return annotateMatcher({ $capture: matcher }, (value: any, failure: InspectionFailure) => { - this._wasInvoked = true; - const result = matcherFrom(matcher)(value, failure); - if (result) { - if (this.typeValidator && !this.typeValidator(value)) { - throw new Error(`Value not of the expected type: ${value}`); - } - this._didCapture = true; - this._value = value; - } - return result; - }); - } - - /** - * Whether a value was successfully captured - */ - public get didCapture() { - return this._didCapture; - } - - /** - * Return the value that was captured - * - * Throws an exception if now value was captured - */ - public get capturedValue(): T { - // When this module is ported to jsii, the type parameter will obviously - // have to be dropped and this will have to turn into an `any`. - if (!this.didCapture) { - throw new Error(`Did not capture a value: ${this._wasInvoked ? 'inner matcher failed' : 'never invoked'}`); - } - return this._value!; - } -} - -/** - * Match on the innards of a JSON string, instead of the complete string - */ -export function encodedJson(matcher: any): PropertyMatcher { - return annotateMatcher({ $encodedJson: matcher }, (value: any, failure: InspectionFailure) => { - if (typeof value !== 'string') { - failure.failureReason = `Expected a string, but got '${typeof value}'`; - return false; - } - - let decoded; - try { - decoded = JSON.parse(value); - } catch (e) { - failure.failureReason = `String is not JSON: ${e}`; - return false; - } - - return matcherFrom(matcher)(decoded, failure); - }); -} - -function escapeRegex(s: string) { - return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string -} - -/** - * Make a matcher out of the given argument if it's not a matcher already - * - * If it's not a matcher, it will be treated as a literal. - */ -export function matcherFrom(matcher: any): PropertyMatcher { - return isCallable(matcher) ? matcher : exactValue(matcher); -} - -/** - * Annotate a matcher with toJSON - * - * We will JSON.stringify() values if we have a match failure, but for matchers this - * would show (in traditional JS fashion) something like '[function Function]', or more - * accurately nothing at all since functions cannot be JSONified. - * - * We override to JSON() in order to produce a readadable version of the matcher. - */ -export function annotateMatcher(how: A, matcher: PropertyMatcher): PropertyMatcher { - (matcher as any).toJSON = () => how; - return matcher; -} diff --git a/packages/@aws-cdk/assert/lib/assertions/have-resource.ts b/packages/@aws-cdk/assert/lib/assertions/have-resource.ts deleted file mode 100644 index 5a977d8252fd4..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/have-resource.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { Assertion, JestFriendlyAssertion } from '../assertion'; -import { StackInspector } from '../inspector'; -import { anything, deepObjectLike, match, objectLike } from './have-resource-matchers'; - -/** - * Magic value to signify that a certain key should be absent from the property bag. - * - * The property is either not present or set to `undefined. - * - * NOTE: `ABSENT` only works with the `haveResource()` and `haveResourceLike()` - * assertions. - */ -export const ABSENT = '{{ABSENT}}'; - -/** - * An assertion to check whether a resource of a given type and with the given properties exists, disregarding properties - * - * @param resourceType the type of the resource that is expected to be present. - * @param properties the properties that the resource is expected to have. A function may be provided, in which case - * it will be called with the properties of candidate resources and an ``InspectionFailure`` - * instance on which errors should be appended, and should return a truthy value to denote a match. - * @param comparison the entity that is being asserted against. - * @param allowValueExtension if properties is an object, tells whether values must match exactly, or if they are - * allowed to be supersets of the reference values. Meaningless if properties is a function. - */ -export function haveResource( - resourceType: string, - properties?: any, - comparison?: ResourcePart, - allowValueExtension: boolean = false): Assertion { - return new HaveResourceAssertion(resourceType, properties, comparison, allowValueExtension); -} - -/** - * Sugar for calling ``haveResource`` with ``allowValueExtension`` set to ``true``. - */ -export function haveResourceLike( - resourceType: string, - properties?: any, - comparison?: ResourcePart) { - return haveResource(resourceType, properties, comparison, true); -} - -export type PropertyMatcher = (props: any, inspection: InspectionFailure) => boolean; - -export class HaveResourceAssertion extends JestFriendlyAssertion { - private readonly inspected: InspectionFailure[] = []; - private readonly part: ResourcePart; - private readonly matcher: any; - - constructor( - private readonly resourceType: string, - properties?: any, - part?: ResourcePart, - allowValueExtension: boolean = false) { - super(); - - this.matcher = isCallable(properties) ? properties : - properties === undefined ? anything() : - allowValueExtension ? deepObjectLike(properties) : - objectLike(properties); - this.part = part ?? ResourcePart.Properties; - } - - public assertUsing(inspector: StackInspector): boolean { - for (const logicalId of Object.keys(inspector.value.Resources || {})) { - const resource = inspector.value.Resources[logicalId]; - if (resource.Type === this.resourceType) { - const propsToCheck = this.part === ResourcePart.Properties ? (resource.Properties ?? {}) : resource; - - // Pass inspection object as 2nd argument, initialize failure with default string, - // to maintain backwards compatibility with old predicate API. - const inspection = { resource, failureReason: 'Object did not match predicate' }; - - if (match(propsToCheck, this.matcher, inspection)) { - return true; - } - - this.inspected.push(inspection); - } - } - - return false; - } - - public generateErrorMessage() { - const lines: string[] = []; - lines.push(`None of ${this.inspected.length} resources matches ${this.description}.`); - - for (const inspected of this.inspected) { - lines.push(`- ${inspected.failureReason} in:`); - lines.push(indent(4, JSON.stringify(inspected.resource, null, 2))); - } - - return lines.join('\n'); - } - - public assertOrThrow(inspector: StackInspector) { - if (!this.assertUsing(inspector)) { - throw new Error(this.generateErrorMessage()); - } - } - - public get description(): string { - // eslint-disable-next-line max-len - return `resource '${this.resourceType}' with ${JSON.stringify(this.matcher, undefined, 2)}`; - } -} - -function indent(n: number, s: string) { - const prefix = ' '.repeat(n); - return prefix + s.replace(/\n/g, '\n' + prefix); -} - -export interface InspectionFailure { - resource: any; - failureReason: string; -} - -/** - * What part of the resource to compare - */ -export enum ResourcePart { - /** - * Only compare the resource's properties - */ - Properties, - - /** - * Check the entire CloudFormation config - * - * (including UpdateConfig, DependsOn, etc.) - */ - CompleteDefinition -} - -/** - * Whether a value is a callable - */ -function isCallable(x: any): x is ((...args: any[]) => any) { - return x && {}.toString.call(x) === '[object Function]'; -} - -/** - * Return whether `superObj` is a super-object of `obj`. - * - * A super-object has the same or more property values, recursing into sub properties if ``allowValueExtension`` is true. - * - * At any point in the object, a value may be replaced with a function which will be used to check that particular field. - * The type of a matcher function is expected to be of type PropertyMatcher. - * - * @deprecated - Use `objectLike` or a literal object instead. - */ -export function isSuperObject(superObj: any, pattern: any, errors: string[] = [], allowValueExtension: boolean = false): boolean { - const matcher = allowValueExtension ? deepObjectLike(pattern) : objectLike(pattern); - - const inspection: InspectionFailure = { resource: superObj, failureReason: '' }; - const ret = match(superObj, matcher, inspection); - if (!ret) { - errors.push(inspection.failureReason); - } - return ret; -} diff --git a/packages/@aws-cdk/assert/lib/assertions/have-type.ts b/packages/@aws-cdk/assert/lib/assertions/have-type.ts deleted file mode 100644 index a04d8a450a338..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/have-type.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Assertion } from '../assertion'; -import { StackPathInspector } from '../inspector'; - -export function haveType(type: string): Assertion { - return new StackPathHasTypeAssertion(type); -} - -class StackPathHasTypeAssertion extends Assertion { - constructor(private readonly type: string) { - super(); - } - - public assertUsing(inspector: StackPathInspector): boolean { - const resource = inspector.value; - return resource !== undefined && resource.Type === this.type; - } - - public get description(): string { - return `resource of type ${this.type}`; - } -} diff --git a/packages/@aws-cdk/assert/lib/assertions/match-template.ts b/packages/@aws-cdk/assert/lib/assertions/match-template.ts deleted file mode 100644 index e668466d12416..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/match-template.ts +++ /dev/null @@ -1,96 +0,0 @@ -import * as cfnDiff from '@aws-cdk/cloudformation-diff'; -import { Assertion } from '../assertion'; -import { StackInspector } from '../inspector'; - -export enum MatchStyle { - /** Requires an exact match */ - EXACT = 'exactly', - /** Allows any change that does not cause a resource replacement */ - NO_REPLACES = 'no replaces', - /** Allows additions, but no updates */ - SUPERSET = 'superset' -} - -export function exactlyMatchTemplate(template: { [key: string]: any }) { - return matchTemplate(template, MatchStyle.EXACT); -} - -export function beASupersetOfTemplate(template: { [key: string]: any }) { - return matchTemplate(template, MatchStyle.SUPERSET); -} - -export function matchTemplate( - template: { [key: string]: any }, - matchStyle: MatchStyle = MatchStyle.EXACT): Assertion { - return new StackMatchesTemplateAssertion(template, matchStyle); -} - -class StackMatchesTemplateAssertion extends Assertion { - constructor( - private readonly template: { [key: string]: any }, - private readonly matchStyle: MatchStyle) { - super(); - } - - public assertOrThrow(inspector: StackInspector) { - if (!this.assertUsing(inspector)) { - // The details have already been printed, so don't generate a huge error message - throw new Error('Template comparison produced unacceptable match'); - } - } - - public assertUsing(inspector: StackInspector): boolean { - const diff = cfnDiff.diffTemplate(this.template, inspector.value); - const acceptable = this.isDiffAcceptable(diff); - if (!acceptable) { - // Print the diff - cfnDiff.formatDifferences(process.stderr, diff); - - // Print the actual template - process.stdout.write('--------------------------------------------------------------------------------------\n'); - process.stdout.write(JSON.stringify(inspector.value, undefined, 2) + '\n'); - } - - return acceptable; - } - - private isDiffAcceptable(diff: cfnDiff.TemplateDiff): boolean { - switch (this.matchStyle) { - case MatchStyle.EXACT: - return diff.differenceCount === 0; - case MatchStyle.NO_REPLACES: - for (const change of Object.values(diff.resources.changes)) { - if (change.changeImpact === cfnDiff.ResourceImpact.MAY_REPLACE) { return false; } - if (change.changeImpact === cfnDiff.ResourceImpact.WILL_REPLACE) { return false; } - } - - for (const change of Object.values(diff.parameters.changes)) { - if (change.isUpdate) { return false; } - } - - for (const change of Object.values(diff.outputs.changes)) { - if (change.isUpdate) { return false; } - } - return true; - case MatchStyle.SUPERSET: - for (const change of Object.values(diff.resources.changes)) { - if (change.changeImpact !== cfnDiff.ResourceImpact.WILL_CREATE) { return false; } - } - - for (const change of Object.values(diff.parameters.changes)) { - if (change.isAddition) { return false; } - } - - for (const change of Object.values(diff.outputs.changes)) { - if (change.isAddition || change.isUpdate) { return false; } - } - - return true; - } - throw new Error(`Unsupported match style: ${this.matchStyle}`); - } - - public get description(): string { - return `template (${this.matchStyle}): ${JSON.stringify(this.template, null, 2)}`; - } -} diff --git a/packages/@aws-cdk/assert/lib/assertions/negated-assertion.ts b/packages/@aws-cdk/assert/lib/assertions/negated-assertion.ts deleted file mode 100644 index 4c62225ee48a9..0000000000000 --- a/packages/@aws-cdk/assert/lib/assertions/negated-assertion.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Assertion } from '../assertion'; -import { Inspector } from '../inspector'; - -export class NegatedAssertion extends Assertion { - constructor(private readonly negated: Assertion) { - super(); - } - - public assertUsing(inspector: I): boolean { - return !this.negated.assertUsing(inspector); - } - - public get description(): string { - return `not ${this.negated.description}`; - } -} diff --git a/packages/@aws-cdk/assert/lib/canonicalize-assets.ts b/packages/@aws-cdk/assert/lib/canonicalize-assets.ts deleted file mode 100644 index 9cee3d4742b3c..0000000000000 --- a/packages/@aws-cdk/assert/lib/canonicalize-assets.ts +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Reduce template to a normal form where asset references have been normalized - * - * This makes it possible to compare templates if all that's different between - * them is the hashes of the asset values. - * - * Currently only handles parameterized assets, but can (and should) - * be adapted to handle convention-mode assets as well when we start using - * more of those. - */ -export function canonicalizeTemplate(template: any): any { - // For the weird case where we have an array of templates... - if (Array.isArray(template)) { - return template.map(canonicalizeTemplate); - } - - // Find assets via parameters - const stringSubstitutions = new Array<[RegExp, string]>(); - const paramRe = /^AssetParameters([a-zA-Z0-9]{64})(S3Bucket|S3VersionKey|ArtifactHash)([a-zA-Z0-9]{8})$/; - - const assetsSeen = new Set(); - for (const paramName of Object.keys(template?.Parameters || {})) { - const m = paramRe.exec(paramName); - if (!m) { continue; } - if (assetsSeen.has(m[1])) { continue; } - - assetsSeen.add(m[1]); - const ix = assetsSeen.size; - - // Full parameter reference - stringSubstitutions.push([ - new RegExp(`AssetParameters${m[1]}(S3Bucket|S3VersionKey|ArtifactHash)([a-zA-Z0-9]{8})`), - `Asset${ix}$1`, - ]); - // Substring asset hash reference - stringSubstitutions.push([ - new RegExp(`${m[1]}`), - `Asset${ix}Hash`, - ]); - } - - // Substitute them out - return substitute(template); - - function substitute(what: any): any { - if (Array.isArray(what)) { - return what.map(substitute); - } - - if (typeof what === 'object' && what !== null) { - const ret: any = {}; - for (const [k, v] of Object.entries(what)) { - ret[stringSub(k)] = substitute(v); - } - return ret; - } - - if (typeof what === 'string') { - return stringSub(what); - } - - return what; - } - - function stringSub(x: string) { - for (const [re, replacement] of stringSubstitutions) { - x = x.replace(re, replacement); - } - return x; - } -} diff --git a/packages/@aws-cdk/assert/lib/expect.ts b/packages/@aws-cdk/assert/lib/expect.ts deleted file mode 100644 index 21dd7e011c826..0000000000000 --- a/packages/@aws-cdk/assert/lib/expect.ts +++ /dev/null @@ -1,12 +0,0 @@ -import * as cdk from '@aws-cdk/core'; -import * as api from '@aws-cdk/cx-api'; -import { StackInspector } from './inspector'; -import { SynthUtils } from './synth-utils'; - -export function expect(stack: api.CloudFormationStackArtifact | cdk.Stack | Record, skipValidation = false): StackInspector { - // if this is already a synthesized stack, then just inspect it. - const artifact = stack instanceof api.CloudFormationStackArtifact ? stack - : cdk.Stack.isStack(stack) ? SynthUtils._synthesizeWithNested(stack, { skipValidation }) - : stack; // This is a template already - return new StackInspector(artifact); -} diff --git a/packages/@aws-cdk/assert/lib/index.ts b/packages/@aws-cdk/assert/lib/index.ts deleted file mode 100644 index 902a5c222f003..0000000000000 --- a/packages/@aws-cdk/assert/lib/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -export * from './assertion'; -export * from './canonicalize-assets'; -export * from './expect'; -export * from './inspector'; -export * from './synth-utils'; - -export * from './assertions/exist'; -export * from './assertions/have-output'; -export * from './assertions/have-resource'; -export * from './assertions/have-resource-matchers'; -export * from './assertions/have-type'; -export * from './assertions/match-template'; -export * from './assertions/and-assertion'; -export * from './assertions/negated-assertion'; -export * from './assertions/count-resources'; diff --git a/packages/@aws-cdk/assert/lib/inspector.ts b/packages/@aws-cdk/assert/lib/inspector.ts deleted file mode 100644 index f633de428f4f2..0000000000000 --- a/packages/@aws-cdk/assert/lib/inspector.ts +++ /dev/null @@ -1,74 +0,0 @@ -import * as cxschema from '@aws-cdk/cloud-assembly-schema'; -import * as api from '@aws-cdk/cx-api'; -import { Assertion, not } from './assertion'; -import { MatchStyle, matchTemplate } from './assertions/match-template'; - -export abstract class Inspector { - public aroundAssert?: (cb: () => void) => any; - - constructor() { - this.aroundAssert = undefined; - } - - public to(assertion: Assertion): any { - return this.aroundAssert ? this.aroundAssert(() => this._to(assertion)) - : this._to(assertion); - } - - public notTo(assertion: Assertion): any { - return this.to(not(assertion)); - } - - abstract get value(): any; - - private _to(assertion: Assertion): any { - assertion.assertOrThrow(this); - } -} - -export class StackInspector extends Inspector { - - private readonly template: { [key: string]: any }; - - constructor(public readonly stack: api.CloudFormationStackArtifact | object) { - super(); - - this.template = stack instanceof api.CloudFormationStackArtifact ? stack.template : stack; - } - - public at(path: string | string[]): StackPathInspector { - if (!(this.stack instanceof api.CloudFormationStackArtifact)) { - throw new Error('Cannot use "expect(stack).at(path)" for a raw template, only CloudFormationStackArtifact'); - } - - const strPath = typeof path === 'string' ? path : path.join('/'); - return new StackPathInspector(this.stack, strPath); - } - - public toMatch(template: { [key: string]: any }, matchStyle = MatchStyle.EXACT) { - return this.to(matchTemplate(template, matchStyle)); - } - - public get value(): { [key: string]: any } { - return this.template; - } -} - -export class StackPathInspector extends Inspector { - constructor(public readonly stack: api.CloudFormationStackArtifact, public readonly path: string) { - super(); - } - - public get value(): { [key: string]: any } | undefined { - // The names of paths in metadata in tests are very ill-defined. Try with the full path first, - // then try with the stack name preprended for backwards compat with most tests that happen to give - // their stack an ID that's the same as the stack name. - const metadata = this.stack.manifest.metadata || {}; - const md = metadata[this.path] || metadata[`/${this.stack.id}${this.path}`]; - if (md === undefined) { return undefined; } - const resourceMd = md.find(entry => entry.type === cxschema.ArtifactMetadataEntryType.LOGICAL_ID); - if (resourceMd === undefined) { return undefined; } - const logicalId = resourceMd.data as cxschema.LogMessageMetadataEntry; - return this.stack.template.Resources[logicalId]; - } -} diff --git a/packages/@aws-cdk/assert/lib/synth-utils.ts b/packages/@aws-cdk/assert/lib/synth-utils.ts deleted file mode 100644 index 3cd69d0889aee..0000000000000 --- a/packages/@aws-cdk/assert/lib/synth-utils.ts +++ /dev/null @@ -1,87 +0,0 @@ -import * as fs from 'fs'; -import * as path from 'path'; -import * as core from '@aws-cdk/core'; -import * as cxapi from '@aws-cdk/cx-api'; - -export class SynthUtils { - /** - * Returns the cloud assembly template artifact for a stack. - */ - public static synthesize(stack: core.Stack, options: core.StageSynthesisOptions = { }): cxapi.CloudFormationStackArtifact { - // always synthesize against the root (be it an App or whatever) so all artifacts will be included - const assembly = synthesizeApp(stack, options); - return assembly.getStackArtifact(stack.artifactId); - } - - /** - * Synthesizes the stack and returns the resulting CloudFormation template. - */ - public static toCloudFormation(stack: core.Stack, options: core.StageSynthesisOptions = { }): any { - const synth = this._synthesizeWithNested(stack, options); - if (synth instanceof cxapi.CloudFormationStackArtifact) { - return synth.template; - } else { - return synth; - } - } - - /** - * @returns Returns a subset of the synthesized CloudFormation template (only specific resource types). - */ - public static subset(stack: core.Stack, options: SubsetOptions): any { - const template = this.toCloudFormation(stack); - if (template.Resources) { - for (const [key, resource] of Object.entries(template.Resources)) { - if (options.resourceTypes && !options.resourceTypes.includes((resource as any).Type)) { - delete template.Resources[key]; - } - } - } - - return template; - } - - /** - * Synthesizes the stack and returns a `CloudFormationStackArtifact` which can be inspected. - * Supports nested stacks as well as normal stacks. - * - * @return CloudFormationStackArtifact for normal stacks or the actual template for nested stacks - * @internal - */ - public static _synthesizeWithNested(stack: core.Stack, options: core.StageSynthesisOptions = { }): cxapi.CloudFormationStackArtifact | object { - // always synthesize against the root (be it an App or whatever) so all artifacts will be included - const assembly = synthesizeApp(stack, options); - - // if this is a nested stack (it has a parent), then just read the template as a string - if (stack.nestedStackParent) { - return JSON.parse(fs.readFileSync(path.join(assembly.directory, stack.templateFile)).toString('utf-8')); - } - - return assembly.getStackArtifact(stack.artifactId); - } -} - -/** - * Synthesizes the app in which a stack resides and returns the cloud assembly object. - */ -function synthesizeApp(stack: core.Stack, options: core.StageSynthesisOptions) { - const root = stack.node.root; - if (!core.Stage.isStage(root)) { - throw new Error('unexpected: all stacks must be part of a Stage or an App'); - } - - // to support incremental assertions (i.e. "expect(stack).toNotContainSomething(); doSomething(); expect(stack).toContainSomthing()") - const force = true; - - return root.synth({ - force, - ...options, - }); -} - -export interface SubsetOptions { - /** - * Match all resources of the given type - */ - resourceTypes?: string[]; -} diff --git a/packages/@aws-cdk/assert/package.json b/packages/@aws-cdk/assert/package.json index d276cd96ab885..61912d6f89f0a 100644 --- a/packages/@aws-cdk/assert/package.json +++ b/packages/@aws-cdk/assert/package.json @@ -43,6 +43,9 @@ "@aws-cdk/assert-internal": "0.0.0", "ts-jest": "^26.5.4" }, + "dependencies": { + "@aws-cdk/cloudformation-diff": "0.0.0" + }, "peerDependencies": { "aws-cdk-lib": "^0.0.0", "constructs": "^10.0.0", diff --git a/packages/@aws-cdk/assert/test/assertions.test.ts b/packages/@aws-cdk/assert/test/assertions.test.ts deleted file mode 100644 index bd20d60032d76..0000000000000 --- a/packages/@aws-cdk/assert/test/assertions.test.ts +++ /dev/null @@ -1,349 +0,0 @@ -import * as cdk from '@aws-cdk/core'; -import * as cx from '@aws-cdk/cx-api'; -import * as constructs from 'constructs'; - -import { countResources, countResourcesLike, exist, expect as cdkExpect, haveType, MatchStyle, matchTemplate } from '../lib/index'; - -passingExample('expect at to have ', () => { - const resourceType = 'Test::Resource'; - const synthStack = synthesizedStack(stack => { - new TestResource(stack, 'TestResource', { type: resourceType }); - }); - cdkExpect(synthStack).at('/TestResource').to(haveType(resourceType)); -}); -passingExample('expect non-synthesized stack at to have ', () => { - const resourceType = 'Test::Resource'; - const stack = new cdk.Stack(); - new TestResource(stack, 'TestResource', { type: resourceType }); - cdkExpect(stack).at('/TestResource').to(haveType(resourceType)); -}); -passingExample('expect at *not* to have ', () => { - const resourceType = 'Test::Resource'; - const synthStack = synthesizedStack(stack => { - new TestResource(stack, 'TestResource', { type: resourceType }); - }); - cdkExpect(synthStack).at('/TestResource').notTo(haveType('Foo::Bar')); -}); -passingExample('expect at to exist', () => { - const resourceType = 'Test::Resource'; - const synthStack = synthesizedStack(stack => { - new TestResource(stack, 'TestResource', { type: resourceType }); - }); - cdkExpect(synthStack).at('/TestResource').to(exist()); -}); -passingExample('expect to match (exactly)