From 7715f1de1056bebe742156360259070d4703f519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=91=A8=F0=9F=8F=BC=E2=80=8D=F0=9F=92=BB=20Romain=20M?= =?UTF-8?q?arcadier-Muller?= Date: Fri, 17 Aug 2018 12:08:51 +0200 Subject: [PATCH 1/6] chore: Update CloudFormation & SAM Resource Specs * Updating CloudFormation Resource Specification v2.4.0 to v2.6.0 * Updating Serverless Application Model (SAM) Specification --- CHANGELOG.md | 70 + create-missing-libraries.sh | 64 +- packages/@aws-cdk/aws-sagemaker/.gitignore | 13 + packages/@aws-cdk/aws-sagemaker/.npmignore | 16 + packages/@aws-cdk/aws-sagemaker/LICENSE | 201 +++ packages/@aws-cdk/aws-sagemaker/NOTICE | 2 + packages/@aws-cdk/aws-sagemaker/README.md | 5 + packages/@aws-cdk/aws-sagemaker/lib/index.ts | 2 + packages/@aws-cdk/aws-sagemaker/package.json | 58 + .../aws-sagemaker/test/test.aws-sagemaker.ts | 9 + .../@aws-cdk/cfnspec/build-tools/spec-diff.ts | 76 +- packages/@aws-cdk/cfnspec/package.json | 2 +- ...0_CloudFormationResourceSpecification.json | 1153 ++++++++++++++++- .../cfnspec/spec-source/000_sam.spec.json | 24 + 14 files changed, 1628 insertions(+), 67 deletions(-) create mode 100644 packages/@aws-cdk/aws-sagemaker/.gitignore create mode 100644 packages/@aws-cdk/aws-sagemaker/.npmignore create mode 100644 packages/@aws-cdk/aws-sagemaker/LICENSE create mode 100644 packages/@aws-cdk/aws-sagemaker/NOTICE create mode 100644 packages/@aws-cdk/aws-sagemaker/README.md create mode 100644 packages/@aws-cdk/aws-sagemaker/lib/index.ts create mode 100644 packages/@aws-cdk/aws-sagemaker/package.json create mode 100644 packages/@aws-cdk/aws-sagemaker/test/test.aws-sagemaker.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index f3072d1a3403b..42f9b0962b919 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,76 @@ [@Mortifera]: https://github.com/Mortifera [@maciejwalkowiak]: https://github.com/maciejwalkowiak +## [UNRELEASED] + +* __@aws-cdk/cfnspec__: Updated [CloudFormation resource specification] to `v2.6.0` + + **New Resource Types** + - AWS::AmazonMQ::Broker + - AWS::AmazonMQ::Configuration + - AWS::CodePipeline::Webhook + - AWS::Config::AggregationAuthorization + - AWS::Config::ConfigurationAggregator + - AWS::EC2::VPCEndpointConnectionNotification + - AWS::EC2::VPCEndpointServicePermissions + - AWS::IAM::ServiceLinkedRole + - AWS::SSM::ResourceDataSync + - AWS::SageMaker::Endpoint + - AWS::SageMaker::EndpointConfig + - AWS::SageMaker::Model + - AWS::SageMaker::NotebookInstance + - AWS::SageMaker::NotebookInstanceLifecycleConfig + + **Attribute Changes** + - AWS::CodePipeline::Pipeline Version (__added__) + + **Property Changes** + - AWS::AppSync::DataSource HttpConfig (__added__) + - AWS::DAX::Cluster SSESpecification (__added__) + - AWS::EC2::VPCEndpoint IsPrivateDnsEnabled (__added__) + - AWS::EC2::VPCEndpoint SecurityGroupIds (__added__) + - AWS::EC2::VPCEndpoint SubnetIds (__added__) + - AWS::EC2::VPCEndpoint VPCEndpointType (__added__) + - AWS::EC2::VPCEndpoint RouteTableIds.DuplicatesAllowed (__deleted__) + - AWS::EC2::VPCPeeringConnection PeerRegion (__added__) + - AWS::EFS::FileSystem ProvisionedThroughputInMibps (__added__) + - AWS::EFS::FileSystem ThroughputMode (__added__) + - AWS::EMR::Cluster KerberosAttributes (__added__) + - AWS::Glue::Classifier JsonClassifier (__added__) + - AWS::Glue::Classifier XMLClassifier (__added__) + - AWS::Glue::Crawler Configuration (__added__) + - AWS::Neptune::DBInstance DBSubnetGroupName.UpdateType (__changed__) + - Old: Mutable + - New: Immutable + - AWS::SNS::Subscription DeliveryPolicy (__added__) + - AWS::SNS::Subscription FilterPolicy (__added__) + - AWS::SNS::Subscription RawMessageDelivery (__added__) + - AWS::SNS::Subscription Region (__added__) + - AWS::SQS::Queue Tags (__added__) + - AWS::ServiceDiscovery::Service HealthCheckCustomConfig (__added__) + + **Property Type Changes** + - AWS::AppSync::DataSource.HttpConfig (__added__) + - AWS::DAX::Cluster.SSESpecification (__added__) + - AWS::EMR::Cluster.KerberosAttributes (__added__) + - AWS::Glue::Classifier.JsonClassifier (__added__) + - AWS::Glue::Classifier.XMLClassifier (__added__) + - AWS::ServiceDiscovery::Service.HealthCheckCustomConfig (__added__) + - AWS::CloudFront::Distribution.CacheBehavior FieldLevelEncryptionId (__added__) + - AWS::CloudFront::Distribution.DefaultCacheBehavior FieldLevelEncryptionId (__added__) + - AWS::CodeBuild::Project.Artifacts EncryptionDisabled (__added__) + - AWS::CodeBuild::Project.Artifacts OverrideArtifactName (__added__) + - AWS::CodeBuild::Project.Environment Certificate (__added__) + - AWS::CodeBuild::Project.Source ReportBuildStatus (__added__) + - AWS::ServiceDiscovery::Service.DnsConfig RoutingPolicy (__added__) + - AWS::WAF::WebACL.ActivatedRule Action.Required (__changed__) + - Old: true + - New: false + +* __@aws-cdk/cfnspec__: Updated Serverless Application Model (SAM) Resource Specification + + **Property Changes** + - AWS::Serverless::Api MethodSettings (__added__) + + **Property Type Changes** + - AWS::Serverless::Function.SQSEvent (__added__) + - AWS::Serverless::Function.EventSource Properties.Types (__changed__) + - Added SQSEvent + ## 0.8.2 - 2018-08-15 ### Features diff --git a/create-missing-libraries.sh b/create-missing-libraries.sh index b30d423c4aa55..889982b0449ff 100755 --- a/create-missing-libraries.sh +++ b/create-missing-libraries.sh @@ -24,27 +24,38 @@ for S in $(node -e 'console.log(require("./packages/@aws-cdk/cfnspec").namespace mkdir -p packages/${P}/test mkdir -p packages/${P}/lib cat < packages/${P}/.gitignore -*.js -*.js.map *.d.ts *.generated.ts -tsconfig.json -tslint.json -node_modules -dist +*.js +*.js.map .jsii +.LAST_BUILD +.LAST_PACKAGE +.nycrc .nyc_output coverage -.LAST_BUILD +dist +tsconfig.json +tslint.json EOM cat < packages/${P}/.npmignore -# Don't include original .ts files when doing \`npm pack\` +# The basics *.ts +*.tgz !*.d.ts +!*.js + +# Coverage coverage .nyc_output -*.tgz +.nycrc + +# Build gear +dist +.LAST_BUILD +.LAST_PACKAGE +.jsii EOM cat < packages/${P}/package.json @@ -58,28 +69,28 @@ EOM "outdir": "dist", "targets": { "java": { - "package": "software.amazon.awscdk.services.${PB}", + "package": "software.amazon.awscdk.${PB/aws-/services.}", "maven": { "groupId": "software.amazon.awscdk", - "artifactId": "${PB}" + "artifactId": "${PB/aws-/}" } }, - "dotnet": { - "namespace": "${S/AWS::/Amazon.CDK.AWS.}" - } + "sphinx": {} } }, "repository": { "type": "git", - "url": "git://github.com/awslabs/aws-cdk" + "url": "https://github.com/awslabs/aws-cdk.git" }, + "homepage": "https://github.com/awslabs/aws-cdk", "scripts": { "build": "cdk-build", - "watch": "cdk-watch", + "integ": "cdk-integ", "lint": "cdk-lint", + "package": "cdk-package", + "pkglint": "pkglint -f", "test": "cdk-test", - "integ": "cdk-integ", - "pkglint": "pkglint -f" + "watch": "cdk-watch" }, "cdk-build": { "cloudformation": "${S}" @@ -92,9 +103,10 @@ EOM ], "author": { "name": "Amazon Web Services", - "url": "https://aws.amazon.com" + "url": "https://aws.amazon.com", + "organization": true }, - "license": "LicenseRef-LICENSE", + "license": "Apache-2.0", "devDependencies": { "@aws-cdk/assert": "^${VERSION}", "cdk-build-tools": "^${VERSION}", @@ -109,7 +121,7 @@ EOM cat < packages/${P}/lib/index.ts // ${S} CloudFormation Resources: -export * from './${PB}.generated'; +export * from './${PB/aws-/}.generated'; EOM cat < packages/${P}/test/test.${PB}.ts @@ -124,6 +136,16 @@ exports = testCase({ }); EOM + cat < packages/${P}/README.md +## ${S/::/ } Construct Library + +\`\`\`ts +const ${PB/aws-/} = require('${P}'); +\`\`\` +EOM + + cp LICENSE NOTICE packages/${P}/ + echo "⌛️ Bootstrapping & building ${P}" lerna bootstrap --scope=${P} lerna run build --scope=${P} diff --git a/packages/@aws-cdk/aws-sagemaker/.gitignore b/packages/@aws-cdk/aws-sagemaker/.gitignore new file mode 100644 index 0000000000000..367f92c1435ff --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/.gitignore @@ -0,0 +1,13 @@ +*.d.ts +*.generated.ts +*.js +*.js.map +.jsii +.LAST_BUILD +.LAST_PACKAGE +.nycrc +.nyc_output +coverage +dist +tsconfig.json +tslint.json diff --git a/packages/@aws-cdk/aws-sagemaker/.npmignore b/packages/@aws-cdk/aws-sagemaker/.npmignore new file mode 100644 index 0000000000000..bad75ae282e9f --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/.npmignore @@ -0,0 +1,16 @@ +# The basics +*.ts +*.tgz +!*.d.ts +!*.js + +# Coverage +coverage +.nyc_output +.nycrc + +# Build gear +dist +.LAST_BUILD +.LAST_PACKAGE +.jsii diff --git a/packages/@aws-cdk/aws-sagemaker/LICENSE b/packages/@aws-cdk/aws-sagemaker/LICENSE new file mode 100644 index 0000000000000..1739faaebb745 --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/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-2018 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-sagemaker/NOTICE b/packages/@aws-cdk/aws-sagemaker/NOTICE new file mode 100644 index 0000000000000..95fd48569c743 --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/NOTICE @@ -0,0 +1,2 @@ +AWS Cloud Development Kit (AWS CDK) +Copyright 2018-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. diff --git a/packages/@aws-cdk/aws-sagemaker/README.md b/packages/@aws-cdk/aws-sagemaker/README.md new file mode 100644 index 0000000000000..a8664b0adec93 --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/README.md @@ -0,0 +1,5 @@ +## AWS SageMaker Construct Library + +```ts +const sagemaker = require('@aws-cdk/aws-sagemaker'); +``` diff --git a/packages/@aws-cdk/aws-sagemaker/lib/index.ts b/packages/@aws-cdk/aws-sagemaker/lib/index.ts new file mode 100644 index 0000000000000..4c40a31057568 --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/lib/index.ts @@ -0,0 +1,2 @@ +// AWS::SageMaker CloudFormation Resources: +export * from './sagemaker.generated'; diff --git a/packages/@aws-cdk/aws-sagemaker/package.json b/packages/@aws-cdk/aws-sagemaker/package.json new file mode 100644 index 0000000000000..9b1e37b9ca13f --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/package.json @@ -0,0 +1,58 @@ +{ + "name": "@aws-cdk/aws-sagemaker", + "version": "0.8.2", + "description": "The CDK Construct Library for AWS::SageMaker", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "jsii": { + "outdir": "dist", + "targets": { + "java": { + "package": "software.amazon.awscdk.services.sagemaker", + "maven": { + "groupId": "software.amazon.awscdk", + "artifactId": "sagemaker" + } + }, + "sphinx": {} + } + }, + "repository": { + "type": "git", + "url": "https://github.com/awslabs/aws-cdk.git" + }, + "homepage": "https://github.com/awslabs/aws-cdk", + "scripts": { + "build": "cdk-build", + "integ": "cdk-integ", + "lint": "cdk-lint", + "package": "cdk-package", + "pkglint": "pkglint -f", + "test": "cdk-test", + "watch": "cdk-watch" + }, + "cdk-build": { + "cloudformation": "AWS::SageMaker" + }, + "keywords": [ + "aws", + "cdk", + "constructs", + "aws-sagemaker" + ], + "author": { + "name": "Amazon Web Services", + "url": "https://aws.amazon.com", + "organization": true + }, + "license": "Apache-2.0", + "devDependencies": { + "@aws-cdk/assert": "^0.8.2", + "cdk-build-tools": "^0.8.2", + "cfn2ts": "^0.8.2", + "pkglint": "^0.8.2" + }, + "dependencies": { + "@aws-cdk/cdk": "^0.8.2" + } +} diff --git a/packages/@aws-cdk/aws-sagemaker/test/test.aws-sagemaker.ts b/packages/@aws-cdk/aws-sagemaker/test/test.aws-sagemaker.ts new file mode 100644 index 0000000000000..2222a288762d5 --- /dev/null +++ b/packages/@aws-cdk/aws-sagemaker/test/test.aws-sagemaker.ts @@ -0,0 +1,9 @@ +import { Test, testCase } from 'nodeunit'; +import {} from '../lib'; + +exports = testCase({ + notTested(test: Test) { + test.ok(true, 'No tests are specified for this package.'); + test.done(); + } +}); diff --git a/packages/@aws-cdk/cfnspec/build-tools/spec-diff.ts b/packages/@aws-cdk/cfnspec/build-tools/spec-diff.ts index 24dd62147957c..d385a4c842a90 100644 --- a/packages/@aws-cdk/cfnspec/build-tools/spec-diff.ts +++ b/packages/@aws-cdk/cfnspec/build-tools/spec-diff.ts @@ -24,6 +24,7 @@ async function main() { } const resourceTypeAdditions = new Set(); + const attributeChanges = new Array(); const propertyChanges = new Array(); const propertyTypeChanges = new Array(); @@ -43,6 +44,11 @@ async function main() { resourceTypeAdditions.forEach(type => line(`* ${type}`)); line(); + line('## Attribute Changes'); + line(); + attributeChanges.forEach(x => line(x)); + line(); + line('## Property Changes'); line(); propertyChanges.forEach(x => line(x)); @@ -64,14 +70,26 @@ async function main() { throw new Error('Something really bad happened. Resource types should never be deleted: ' + deleted); } - if (Object.keys(update).length !== 1 && Object.keys(update)[0] === 'Properties') { - throw new Error('Unexpected update to a resource type. Expecting only "Properties" to change: ' + resourceType); - } - - for (const prop of Object.keys(update.Properties)) { - describeChanges(resourceType, prop, update.Properties[prop]).forEach(change => { - propertyChanges.push(change); - }); + pushDownFirstAdditions(update); + for (const key of Object.keys(update)) { + switch (key) { + case 'Properties': + for (const prop of Object.keys(update.Properties)) { + describeChanges(resourceType, prop, update.Properties[prop]).forEach(change => { + propertyChanges.push(change); + }); + } + break; + case 'Attributes': + for (const attr of Object.keys(update.Attributes)) { + describeChanges(resourceType, attr, update.Attributes[attr]).forEach(change => { + attributeChanges.push(change); + }); + } + break; + default: + throw new Error(`Unexpected update to ${resourceType}: ${key}`); + } } } @@ -98,6 +116,19 @@ async function main() { } } + function pushDownFirstAdditions(update: any) { + for (const key of Object.keys(update)) { + const added = isAdded(key); + if (!added) { continue; } + const data = update[key]; + delete update[key]; + update[added] = {}; + for (const subKey of Object.keys(data)) { + update[added][`${subKey}__added`] = data[subKey]; + } + } + } + function isDeleted(key: string) { return isSuffix(key, '__deleted'); } @@ -137,9 +168,30 @@ async function main() { return changes; } - for (const key of Object.keys(update)) { - for (const change of describeChanges(namespace, `${prefix}.${key}`, update[key])) { - changes.push(change); + if (Array.isArray(update)) { + changes.push(`* ${namespace} ${prefix} (__changed__)`); + for (const entry of update) { + if (entry.length !== 2) { + throw new Error(`Unexpected array diff entry: ${JSON.stringify(entry)}`); + } + switch (entry[0]) { + case '+': + changes.push(` * Added ${entry[1]}`); + break; + case '-': + throw new Error(`Something awkward happened: ${entry[1]} was deleted from ${namespace} ${prefix}!`); + case ' ': + // This entry is "context" + break; + default: + throw new Error(`Unexpected array diff entry: ${JSON.stringify(entry)}`); + } + } + } else { + for (const key of Object.keys(update)) { + for (const change of describeChanges(namespace, `${prefix}.${key}`, update[key])) { + changes.push(change); + } } } @@ -148,7 +200,7 @@ async function main() { } main().catch(e => { - process.stderr.write(e.toString()); + process.stderr.write(e.stack); process.stderr.write('\n'); process.exit(1); }); diff --git a/packages/@aws-cdk/cfnspec/package.json b/packages/@aws-cdk/cfnspec/package.json index 0e8ad10b145f3..36f66dc168bf4 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.8.2", "scripts": { - "update": "/bin/bash build-tools/update.sh", + "update": "cdk-build && /bin/bash build-tools/update.sh", "build": "cdk-build && node build-tools/build", "watch": "cdk-watch", "pkglint": "pkglint -f", diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json index 5f38418ec51a6..bd462c4331a4e 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json @@ -1,5 +1,92 @@ { "PropertyTypes": { + "AWS::AmazonMQ::Broker.ConfigurationId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html", + "Properties": { + "Id": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html#cfn-amazonmq-broker-configurationid-id", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Revision": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-configurationid.html#cfn-amazonmq-broker-configurationid-revision", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::AmazonMQ::Broker.LogList": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-loglist.html", + "Properties": { + "Audit": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-loglist.html#cfn-amazonmq-broker-loglist-audit", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "General": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-loglist.html#cfn-amazonmq-broker-loglist-general", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::AmazonMQ::Broker.MaintenanceWindow": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html", + "Properties": { + "DayOfWeek": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-dayofweek", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "TimeOfDay": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-timeofday", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "TimeZone": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-maintenancewindow.html#cfn-amazonmq-broker-maintenancewindow-timezone", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, + "AWS::AmazonMQ::Broker.User": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html", + "Properties": { + "ConsoleAccess": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-consoleaccess", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "Groups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-groups", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "Password": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-password", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Username": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amazonmq-broker-user.html#cfn-amazonmq-broker-user-username", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::ApiGateway::ApiKey.StageKey": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-apikey-stagekey.html", "Properties": { @@ -578,6 +665,17 @@ } } }, + "AWS::AppSync::DataSource.HttpConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html", + "Properties": { + "Endpoint": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-httpconfig.html#cfn-appsync-datasource-httpconfig-endpoint", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::AppSync::DataSource.LambdaConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-lambdaconfig.html", "Properties": { @@ -1972,6 +2070,12 @@ "Required": false, "UpdateType": "Mutable" }, + "FieldLevelEncryptionId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-fieldlevelencryptionid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "ForwardedValues": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-cachebehavior.html#cfn-cloudfront-distribution-cachebehavior-forwardedvalues", "Required": true, @@ -2148,6 +2252,12 @@ "Required": false, "UpdateType": "Mutable" }, + "FieldLevelEncryptionId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-fieldlevelencryptionid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "ForwardedValues": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cloudfront-distribution-defaultcachebehavior.html#cfn-cloudfront-distribution-defaultcachebehavior-forwardedvalues", "Required": true, @@ -2674,6 +2784,12 @@ "AWS::CodeBuild::Project.Artifacts": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html", "Properties": { + "EncryptionDisabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-encryptiondisabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "Location": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-location", "PrimitiveType": "String", @@ -2692,6 +2808,12 @@ "Required": false, "UpdateType": "Mutable" }, + "OverrideArtifactName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-overrideartifactname", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "Packaging": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-artifacts.html#cfn-codebuild-project-artifacts-packaging", "PrimitiveType": "String", @@ -2715,6 +2837,12 @@ "AWS::CodeBuild::Project.Environment": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html", "Properties": { + "Certificate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-certificate", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "ComputeType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-environment.html#cfn-codebuild-project-environment-computetype", "PrimitiveType": "String", @@ -2832,6 +2960,12 @@ "Required": false, "UpdateType": "Mutable" }, + "ReportBuildStatus": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-reportbuildstatus", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "Type": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-type", "PrimitiveType": "String", @@ -3516,6 +3650,40 @@ } } }, + "AWS::CodePipeline::Webhook.WebhookAuthConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html", + "Properties": { + "AllowedIPRange": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html#cfn-codepipeline-webhook-webhookauthconfiguration-allowediprange", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "SecretToken": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookauthconfiguration.html#cfn-codepipeline-webhook-webhookauthconfiguration-secrettoken", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::CodePipeline::Webhook.WebhookFilterRule": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html", + "Properties": { + "JsonPath": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html#cfn-codepipeline-webhook-webhookfilterrule-jsonpath", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "MatchEquals": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codepipeline-webhook-webhookfilterrule.html#cfn-codepipeline-webhook-webhookfilterrule-matchequals", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Cognito::IdentityPool.CognitoIdentityProvider": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cognito-identitypool-cognitoidentityprovider.html", "Properties": { @@ -4017,6 +4185,55 @@ } } }, + "AWS::Config::ConfigurationAggregator.AccountAggregationSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html", + "Properties": { + "AccountIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html#cfn-config-configurationaggregator-accountaggregationsource-accountids", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "AllAwsRegions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html#cfn-config-configurationaggregator-accountaggregationsource-allawsregions", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "AwsRegions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-accountaggregationsource.html#cfn-config-configurationaggregator-accountaggregationsource-awsregions", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::Config::ConfigurationAggregator.OrganizationAggregationSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html", + "Properties": { + "AllAwsRegions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html#cfn-config-configurationaggregator-organizationaggregationsource-allawsregions", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "AwsRegions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html#cfn-config-configurationaggregator-organizationaggregationsource-awsregions", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationaggregator-organizationaggregationsource.html#cfn-config-configurationaggregator-organizationaggregationsource-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Config::ConfigurationRecorder.RecordingGroup": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-config-configurationrecorder-recordinggroup.html", "Properties": { @@ -4053,6 +4270,17 @@ } } }, + "AWS::DAX::Cluster.SSESpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dax-cluster-ssespecification.html", + "Properties": { + "SSEEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dax-cluster-ssespecification.html#cfn-dax-cluster-ssespecification-sseenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::DMS::Endpoint.DynamoDbSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-dms-endpoint-dynamodbsettings.html", "Properties": { @@ -6983,6 +7211,41 @@ } } }, + "AWS::EMR::Cluster.KerberosAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html", + "Properties": { + "ADDomainJoinPassword": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html#cfn-elasticmapreduce-cluster-kerberosattributes-addomainjoinpassword", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "ADDomainJoinUser": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html#cfn-elasticmapreduce-cluster-kerberosattributes-addomainjoinuser", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "CrossRealmTrustPrincipalPassword": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html#cfn-elasticmapreduce-cluster-kerberosattributes-crossrealmtrustprincipalpassword", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "KdcAdminPassword": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html#cfn-elasticmapreduce-cluster-kerberosattributes-kdcadminpassword", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Realm": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html#cfn-elasticmapreduce-cluster-kerberosattributes-realm", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::EMR::Cluster.MetricDimension": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html", "Properties": { @@ -8623,6 +8886,46 @@ } } }, + "AWS::Glue::Classifier.JsonClassifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-jsonclassifier.html", + "Properties": { + "JsonPath": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-jsonclassifier.html#cfn-glue-classifier-jsonclassifier-jsonpath", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-jsonclassifier.html#cfn-glue-classifier-jsonclassifier-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::Glue::Classifier.XMLClassifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-xmlclassifier.html", + "Properties": { + "Classification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-xmlclassifier.html#cfn-glue-classifier-xmlclassifier-classification", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-xmlclassifier.html#cfn-glue-classifier-xmlclassifier-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "RowTag": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-classifier-xmlclassifier.html#cfn-glue-classifier-xmlclassifier-rowtag", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Glue::Connection.ConnectionInput": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-glue-connection-connectioninput.html", "Properties": { @@ -13714,47 +14017,141 @@ } } }, - "AWS::ServiceCatalog::CloudFormationProduct.ProvisioningArtifactProperties": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html", + "AWS::SageMaker::EndpointConfig.ProductionVariant": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html", "Properties": { - "Description": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-description", + "InitialInstanceCount": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-initialinstancecount", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Immutable" + }, + "InitialVariantWeight": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-initialvariantweight", + "PrimitiveType": "Double", + "Required": true, + "UpdateType": "Immutable" + }, + "InstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-instancetype", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" + "Required": true, + "UpdateType": "Immutable" }, - "Info": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-info", - "PrimitiveType": "Json", + "ModelName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-modelname", + "PrimitiveType": "String", "Required": true, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Name": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-name", + "VariantName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html#cfn-sagemaker-endpointconfig-productionvariant-variantname", "PrimitiveType": "String", - "Required": false, - "UpdateType": "Mutable" + "Required": true, + "UpdateType": "Immutable" } } }, - "AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningParameter": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html", + "AWS::SageMaker::Model.ContainerDefinition": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html", "Properties": { - "Key": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameter-key", + "ContainerHostname": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-containerhostname", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, - "Value": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameter-value", - "PrimitiveType": "String", + "Environment": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-environment", + "PrimitiveType": "Json", "Required": false, - "UpdateType": "Mutable" - } - } - }, - "AWS::ServiceDiscovery::Service.DnsConfig": { + "UpdateType": "Immutable" + }, + "Image": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-image", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "ModelDataUrl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-modeldataurl", + "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": { + "SecurityGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html#cfn-sagemaker-model-vpcconfig-securitygroupids", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "Subnets": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-vpcconfig.html#cfn-sagemaker-model-vpcconfig-subnets", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::SageMaker::NotebookInstanceLifecycleConfig.NotebookInstanceLifecycleHook": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook.html", + "Properties": { + "Content": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook.html#cfn-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecyclehook-content", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::ServiceCatalog::CloudFormationProduct.ProvisioningArtifactProperties": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html", + "Properties": { + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Info": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-info", + "PrimitiveType": "Json", + "Required": true, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html#cfn-servicecatalog-cloudformationproduct-provisioningartifactproperties-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningParameter": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html", + "Properties": { + "Key": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameter-key", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Value": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningparameter.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningparameter-value", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, + "AWS::ServiceDiscovery::Service.DnsConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html", "Properties": { "DnsRecords": { @@ -13769,6 +14166,12 @@ "PrimitiveType": "String", "Required": true, "UpdateType": "Immutable" + }, + "RoutingPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-dnsconfig.html#cfn-servicediscovery-service-dnsconfig-routingpolicy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" } } }, @@ -13812,6 +14215,17 @@ } } }, + "AWS::ServiceDiscovery::Service.HealthCheckCustomConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-healthcheckcustomconfig.html", + "Properties": { + "FailureThreshold": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicediscovery-service-healthcheckcustomconfig.html#cfn-servicediscovery-service-healthcheckcustomconfig-failurethreshold", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::WAF::ByteMatchSet.ByteMatchTuple": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-bytematchset-bytematchtuples.html", "Properties": { @@ -13989,7 +14403,7 @@ "Properties": { "Action": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-waf-webacl-rules.html#cfn-waf-webacl-rules-action", - "Required": true, + "Required": false, "Type": "WafAction", "UpdateType": "Mutable" }, @@ -14310,8 +14724,145 @@ } } }, - "ResourceSpecificationVersion": "2.4.0", + "ResourceSpecificationVersion": "2.6.0", "ResourceTypes": { + "AWS::AmazonMQ::Broker": { + "Attributes": { + "BrokerId": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html", + "Properties": { + "AutoMinorVersionUpgrade": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-autominorversionupgrade", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Immutable" + }, + "BrokerName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-brokername", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Configuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-configuration", + "Required": false, + "Type": "ConfigurationId", + "UpdateType": "Mutable" + }, + "DeploymentMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-deploymentmode", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "EngineType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-enginetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "EngineVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-engineversion", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "HostInstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-hostinstancetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Logs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-logs", + "Required": false, + "Type": "LogList", + "UpdateType": "Mutable" + }, + "MaintenanceWindowStartTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-maintenancewindowstarttime", + "Required": false, + "Type": "MaintenanceWindow", + "UpdateType": "Immutable" + }, + "PubliclyAccessible": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-publiclyaccessible", + "PrimitiveType": "Boolean", + "Required": true, + "UpdateType": "Immutable" + }, + "SecurityGroups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-securitygroups", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-subnetids", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "Users": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-broker.html#cfn-amazonmq-broker-users", + "ItemType": "User", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::AmazonMQ::Configuration": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + }, + "Id": { + "PrimitiveType": "String" + }, + "Revision": { + "PrimitiveType": "Integer" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html", + "Properties": { + "Data": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-data", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "EngineType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-enginetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "EngineVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-engineversion", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amazonmq-configuration.html#cfn-amazonmq-configuration-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::ApiGateway::Account": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-account.html", "Properties": { @@ -15105,6 +15656,12 @@ "Type": "ElasticsearchConfig", "UpdateType": "Mutable" }, + "HttpConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-httpconfig", + "Required": false, + "Type": "HttpConfig", + "UpdateType": "Mutable" + }, "LambdaConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-datasource.html#cfn-appsync-datasource-lambdaconfig", "Required": false, @@ -16750,6 +17307,11 @@ } }, "AWS::CodePipeline::Pipeline": { + "Attributes": { + "Version": { + "PrimitiveType": "String" + } + }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-pipeline.html", "Properties": { "ArtifactStore": { @@ -16794,6 +17356,65 @@ } } }, + "AWS::CodePipeline::Webhook": { + "Attributes": { + "Url": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html", + "Properties": { + "Authentication": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-authentication", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "AuthenticationConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-authenticationconfiguration", + "Required": true, + "Type": "WebhookAuthConfiguration", + "UpdateType": "Mutable" + }, + "Filters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-filters", + "ItemType": "WebhookFilterRule", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-name", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "RegisterWithThirdParty": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-registerwiththirdparty", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "TargetAction": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetaction", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "TargetPipeline": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetpipeline", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "TargetPipelineVersion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codepipeline-webhook.html#cfn-codepipeline-webhook-targetpipelineversion", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Cognito::IdentityPool": { "Attributes": { "Name": { @@ -17178,6 +17799,23 @@ } } }, + "AWS::Config::AggregationAuthorization": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html", + "Properties": { + "AuthorizedAccountId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-authorizedaccountid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "AuthorizedAwsRegion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-aggregationauthorization.html#cfn-config-aggregationauthorization-authorizedawsregion", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::Config::ConfigRule": { "Attributes": { "Arn": { @@ -17230,6 +17868,30 @@ } } }, + "AWS::Config::ConfigurationAggregator": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html", + "Properties": { + "AccountAggregationSources": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-accountaggregationsources", + "ItemType": "AccountAggregationSource", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "ConfigurationAggregatorName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-configurationaggregatorname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "OrganizationAggregationSource": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationaggregator.html#cfn-config-configurationaggregator-organizationaggregationsource", + "Required": false, + "Type": "OrganizationAggregationSource", + "UpdateType": "Mutable" + } + } + }, "AWS::Config::ConfigurationRecorder": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-configurationrecorder.html", "Properties": { @@ -17354,6 +18016,12 @@ "Required": true, "UpdateType": "Mutable" }, + "SSESpecification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-ssespecification", + "Required": false, + "Type": "SSESpecification", + "UpdateType": "Immutable" + }, "SecurityGroupIds": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dax-cluster.html#cfn-dax-cluster-securitygroupids", "PrimitiveItemType": "String", @@ -19306,6 +19974,12 @@ "AWS::EC2::VPCEndpoint": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html", "Properties": { + "IsPrivateDnsEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-isprivatednsenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "PolicyDocument": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-policydocument", "PrimitiveType": "Json", @@ -19314,7 +19988,13 @@ }, "RouteTableIds": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-routetableids", - "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "SecurityGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-securitygroupids", "PrimitiveItemType": "String", "Required": false, "Type": "List", @@ -19326,8 +20006,69 @@ "Required": true, "UpdateType": "Immutable" }, - "VpcId": { - "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-vpcid", + "SubnetIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-subnetids", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "VPCEndpointType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-vpcendpointtype", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "VpcId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-vpcid", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::VPCEndpointConnectionNotification": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html", + "Properties": { + "ConnectionEvents": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-connectionevents", + "PrimitiveItemType": "String", + "Required": true, + "Type": "List", + "UpdateType": "Mutable" + }, + "ConnectionNotificationArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-connectionnotificationarn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "ServiceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-serviceid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "VPCEndpointId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointconnectionnotification.html#cfn-ec2-vpcendpointconnectionnotification-vpcendpointid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, + "AWS::EC2::VPCEndpointServicePermissions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservicepermissions.html", + "Properties": { + "AllowedPrincipals": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservicepermissions.html#cfn-ec2-vpcendpointservicepermissions-allowedprincipals", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "ServiceId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpointservicepermissions.html#cfn-ec2-vpcendpointservicepermissions-serviceid", "PrimitiveType": "String", "Required": true, "UpdateType": "Immutable" @@ -19366,6 +20107,12 @@ "Required": false, "UpdateType": "Immutable" }, + "PeerRegion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-peerregion", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, "PeerRoleArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcpeeringconnection.html#cfn-ec2-vpcpeeringconnection-peerrolearn", "PrimitiveType": "String", @@ -19831,6 +20578,18 @@ "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" + }, + "ProvisionedThroughputInMibps": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-elasticfilesystem-filesystem-provisionedthroughputinmibps", + "PrimitiveType": "Double", + "Required": false, + "UpdateType": "Mutable" + }, + "ThroughputMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-filesystem.html#cfn-elasticfilesystem-filesystem-throughputmode", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" } } }, @@ -19973,6 +20732,12 @@ "Required": true, "UpdateType": "Immutable" }, + "KerberosAttributes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-kerberosattributes", + "Required": false, + "Type": "KerberosAttributes", + "UpdateType": "Immutable" + }, "LogUri": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html#cfn-elasticmapreduce-cluster-loguri", "PrimitiveType": "String", @@ -21522,6 +22287,18 @@ "Required": false, "Type": "GrokClassifier", "UpdateType": "Mutable" + }, + "JsonClassifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html#cfn-glue-classifier-jsonclassifier", + "Required": false, + "Type": "JsonClassifier", + "UpdateType": "Mutable" + }, + "XMLClassifier": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-classifier.html#cfn-glue-classifier-xmlclassifier", + "Required": false, + "Type": "XMLClassifier", + "UpdateType": "Mutable" } } }, @@ -21552,6 +22329,12 @@ "Type": "List", "UpdateType": "Mutable" }, + "Configuration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-configuration", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "DatabaseName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-databasename", "PrimitiveType": "String", @@ -22261,6 +23044,29 @@ } } }, + "AWS::IAM::ServiceLinkedRole": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html", + "Properties": { + "AWSServiceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html#cfn-iam-servicelinkedrole-awsservicename", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "CustomSuffix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html#cfn-iam-servicelinkedrole-customsuffix", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-servicelinkedrole.html#cfn-iam-servicelinkedrole-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::IAM::User": { "Attributes": { "Arn": { @@ -23332,7 +24138,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbinstance.html#cfn-neptune-dbinstance-dbsubnetgroupname", "PrimitiveType": "String", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, "PreferredMaintenanceWindow": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-neptune-dbinstance.html#cfn-neptune-dbinstance-preferredmaintenancewindow", @@ -25384,18 +26190,42 @@ "AWS::SNS::Subscription": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html", "Properties": { + "DeliveryPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-subscription-deliverypolicy", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, "Endpoint": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-endpoint", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, + "FilterPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-subscription-filterpolicy", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Mutable" + }, "Protocol": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-protocol", "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" }, + "RawMessageDelivery": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-subscription-rawmessagedelivery", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "Region": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#cfn-sns-subscription-region", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, "TopicArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sns-subscription.html#topicarn", "PrimitiveType": "String", @@ -25524,6 +26354,14 @@ "Required": false, "UpdateType": "Mutable" }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#cfn-sqs-queue-tags", + "DuplicatesAllowed": true, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "VisibilityTimeout": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues.html#aws-sqs-queue-visiblitytimeout", "PrimitiveType": "Integer", @@ -25835,6 +26673,249 @@ } } }, + "AWS::SSM::ResourceDataSync": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html", + "Properties": { + "BucketName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "BucketPrefix": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketprefix", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "BucketRegion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-bucketregion", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "KMSKeyArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-kmskeyarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "SyncFormat": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncformat", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "SyncName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-resourcedatasync.html#cfn-ssm-resourcedatasync-syncname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::SageMaker::Endpoint": { + "Attributes": { + "EndpointName": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html", + "Properties": { + "EndpointConfigName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html#cfn-sagemaker-endpoint-endpointconfigname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "EndpointName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html#cfn-sagemaker-endpoint-endpointname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html#cfn-sagemaker-endpoint-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::SageMaker::EndpointConfig": { + "Attributes": { + "EndpointConfigName": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html", + "Properties": { + "EndpointConfigName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-endpointconfigname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "KmsKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-kmskeyid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "ProductionVariants": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-productionvariants", + "ItemType": "ProductionVariant", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::SageMaker::Model": { + "Attributes": { + "ModelName": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html", + "Properties": { + "ExecutionRoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-executionrolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "ModelName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-modelname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "PrimaryContainer": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-primarycontainer", + "Required": true, + "Type": "ContainerDefinition", + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "VpcConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html#cfn-sagemaker-model-vpcconfig", + "Required": false, + "Type": "VpcConfig", + "UpdateType": "Immutable" + } + } + }, + "AWS::SageMaker::NotebookInstance": { + "Attributes": { + "NotebookInstanceName": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html", + "Properties": { + "DirectInternetAccess": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-directinternetaccess", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "InstanceType": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-instancetype", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "KmsKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-kmskeyid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "LifecycleConfigName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-lifecycleconfigname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "NotebookInstanceName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-notebookinstancename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "SecurityGroupIds": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-securitygroupids", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "SubnetId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-subnetid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html#cfn-sagemaker-notebookinstance-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, + "AWS::SageMaker::NotebookInstanceLifecycleConfig": { + "Attributes": { + "NotebookInstanceLifecycleConfigName": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html", + "Properties": { + "NotebookInstanceLifecycleConfigName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html#cfn-sagemaker-notebookinstancelifecycleconfig-notebookinstancelifecycleconfigname", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "OnCreate": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html#cfn-sagemaker-notebookinstancelifecycleconfig-oncreate", + "ItemType": "NotebookInstanceLifecycleHook", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "OnStart": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html#cfn-sagemaker-notebookinstancelifecycleconfig-onstart", + "ItemType": "NotebookInstanceLifecycleHook", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::ServiceCatalog::AcceptedPortfolioShare": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-acceptedportfolioshare.html", "Properties": { @@ -26385,6 +27466,12 @@ "Type": "HealthCheckConfig", "UpdateType": "Mutable" }, + "HealthCheckCustomConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-healthcheckcustomconfig", + "Required": false, + "Type": "HealthCheckCustomConfig", + "UpdateType": "Mutable" + }, "Name": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-service.html#cfn-servicediscovery-service-name", "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 2a403d84d74e7..08fd45967678e 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_sam.spec.json @@ -130,6 +130,7 @@ "Types": [ "S3Event", "SNSEvent", + "SQSEvent", "KinesisEvent", "DynamoDBEvent", "ApiEvent", @@ -283,6 +284,23 @@ } } }, + "AWS::Serverless::Function.SQSEvent": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs", + "Properties": { + "BatchSize": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Immutable" + }, + "Queue": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#sqs", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, "AWS::Serverless::Function.ScheduleEvent": { "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#schedule", "Properties": { @@ -389,6 +407,12 @@ ], "UpdateType": "Immutable" }, + "MethodSettings": { + "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi", + "PrimitiveType": "Json", + "Required": false, + "UpdateType": "Immutable" + }, "Name": { "Documentation": "https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessapi", "PrimitiveType": "String", From 280bfea9e8842cf3b94a22cce750cd93484c59cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=91=A8=F0=9F=8F=BC=E2=80=8D=F0=9F=92=BB=20Romain=20M?= =?UTF-8?q?arcadier-Muller?= Date: Fri, 17 Aug 2018 12:11:09 +0200 Subject: [PATCH 2/6] Add PR reference --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42f9b0962b919..5f847f499b2ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ ## [UNRELEASED] -* __@aws-cdk/cfnspec__: Updated [CloudFormation resource specification] to `v2.6.0` +* __@aws-cdk/cfnspec__: Updated [CloudFormation resource specification] to `v2.6.0` ([@RomainMuller] in [#594](https://github.com/awslabs/aws-cdk/pull/594)) + **New Resource Types** - AWS::AmazonMQ::Broker - AWS::AmazonMQ::Configuration @@ -72,7 +72,7 @@ - Old: true - New: false -* __@aws-cdk/cfnspec__: Updated Serverless Application Model (SAM) Resource Specification +* __@aws-cdk/cfnspec__: Updated Serverless Application Model (SAM) Resource Specification ([@RomainMuller] in [#594](https://github.com/awslabs/aws-cdk/pull/594)) + **Property Changes** - AWS::Serverless::Api MethodSettings (__added__) + **Property Type Changes** From 52fc226cc3f521d8d8e5d12425b0a74e09532eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=91=A8=F0=9F=8F=BC=E2=80=8D=F0=9F=92=BB=20Romain=20M?= =?UTF-8?q?arcadier-Muller?= Date: Fri, 17 Aug 2018 12:13:21 +0200 Subject: [PATCH 3/6] Add reference to new package --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f847f499b2ed..d151afe1e9dc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ ## [UNRELEASED] * __@aws-cdk/cfnspec__: Updated [CloudFormation resource specification] to `v2.6.0` ([@RomainMuller] in [#594](https://github.com/awslabs/aws-cdk/pull/594)) + + **New AWS Construct Library** + - `@aws-cdk/aws-sagemaker` supports AWS::SageMaker resources + **New Resource Types** - AWS::AmazonMQ::Broker - AWS::AmazonMQ::Configuration From 4ab2ee8bb338826d234681bec832ac98f91faf40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=91=A8=F0=9F=8F=BC=E2=80=8D=F0=9F=92=BB=20Romain=20M?= =?UTF-8?q?arcadier-Muller?= Date: Fri, 17 Aug 2018 12:35:13 +0200 Subject: [PATCH 4/6] Use the `PipelineVersion` from the new CFN Spec version. --- packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts index 925b5db68ce10..0044707ef3f15 100644 --- a/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts +++ b/packages/@aws-cdk/aws-codepipeline/lib/pipeline.ts @@ -4,7 +4,7 @@ import iam = require('@aws-cdk/aws-iam'); import s3 = require('@aws-cdk/aws-s3'); import cdk = require('@aws-cdk/cdk'); import util = require('@aws-cdk/util'); -import { cloudformation } from './codepipeline.generated'; +import { cloudformation, PipelineVersion } from './codepipeline.generated'; import { Stage } from './stage'; /** @@ -17,11 +17,6 @@ export class PipelineArn extends cdk.Arn { } */ export class PipelineName extends cdk.Token { } -/** - * The pipeline version. - */ -export class PipelineVersion extends cdk.Token { } - export interface PipelineProps { /** * The S3 bucket used by this Pipeline to store artifacts. @@ -122,7 +117,7 @@ export class Pipeline extends cdk.Construct implements events.IEventRuleTarget { this.artifactBucket.grantReadWrite(this.role); this.pipelineName = codePipeline.ref; - this.pipelineVersion = codePipeline.getAtt('Version'); + this.pipelineVersion = codePipeline.pipelineVersion; // Does not expose a Fn::GetAtt for the ARN so we'll have to make it ourselves this.pipelineArn = new PipelineArn(cdk.Arn.fromComponents({ From 00722efee7a15055dc71c464b4c6885dd1224d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=91=A8=F0=9F=8F=BC=E2=80=8D=F0=9F=92=BB=20Romain=20M?= =?UTF-8?q?arcadier-Muller?= Date: Fri, 17 Aug 2018 12:49:47 +0200 Subject: [PATCH 5/6] Correct namespace test expectation --- .../@aws-cdk/cfnspec/test/test.namespaces.ts | 115 +++++++++--------- 1 file changed, 59 insertions(+), 56 deletions(-) diff --git a/packages/@aws-cdk/cfnspec/test/test.namespaces.ts b/packages/@aws-cdk/cfnspec/test/test.namespaces.ts index bd2841db9fe6b..991362090f4ab 100644 --- a/packages/@aws-cdk/cfnspec/test/test.namespaces.ts +++ b/packages/@aws-cdk/cfnspec/test/test.namespaces.ts @@ -3,77 +3,80 @@ import { namespaces } from '../lib/index'; export = testCase({ 'expected namespaces are present'(test: Test) { - test.deepEqual(namespaces.sort(), expectedNamespaces.sort()); + test.deepEqual(namespaces.sort(), expectedNamespaces); test.done(); } }); +// Note: must be kept sorted! const expectedNamespaces = [ - 'AWS::ElasticBeanstalk', - 'AWS::EC2', - 'AWS::AppSync', - 'AWS::ServiceCatalog', - 'AWS::Cognito', - 'AWS::Events', - 'AWS::WAF', - 'AWS::IAM', - 'AWS::CodePipeline', - 'AWS::Elasticsearch', + 'AWS::AmazonMQ', 'AWS::ApiGateway', - 'AWS::WAFRegional', - 'AWS::RDS', - 'AWS::EMR', - 'AWS::WorkSpaces', - 'AWS::Logs', - 'AWS::Kinesis', + 'AWS::AppSync', + 'AWS::ApplicationAutoScaling', + 'AWS::Athena', 'AWS::AutoScaling', - 'AWS::SQS', 'AWS::AutoScalingPlans', - 'AWS::Route53', + 'AWS::Batch', + 'AWS::Budgets', + 'AWS::CertificateManager', + 'AWS::Cloud9', + 'AWS::CloudFormation', + 'AWS::CloudFront', + 'AWS::CloudTrail', 'AWS::CloudWatch', + 'AWS::CodeBuild', + 'AWS::CodeCommit', + 'AWS::CodeDeploy', + 'AWS::CodePipeline', + 'AWS::Cognito', + 'AWS::Config', + 'AWS::DAX', + 'AWS::DMS', + 'AWS::DataPipeline', + 'AWS::DirectoryService', + 'AWS::DynamoDB', + 'AWS::EC2', + 'AWS::ECR', 'AWS::ECS', + 'AWS::EFS', + 'AWS::EKS', + 'AWS::EMR', + 'AWS::ElastiCache', + 'AWS::ElasticBeanstalk', + 'AWS::ElasticLoadBalancing', 'AWS::ElasticLoadBalancingV2', - 'AWS::Neptune', - 'AWS::StepFunctions', - 'AWS::KinesisAnalytics', - 'AWS::OpsWorks', - 'AWS::CloudFront', + 'AWS::Elasticsearch', + 'AWS::Events', 'AWS::GameLift', + 'AWS::Glue', 'AWS::GuardDuty', - 'AWS::DirectoryService', - 'AWS::SNS', - 'AWS::EFS', - 'AWS::SSM', - 'AWS::Config', - 'AWS::KMS', - 'AWS::Redshift', - 'AWS::Lambda', - 'AWS::CertificateManager', + 'AWS::IAM', 'AWS::Inspector', - 'AWS::Batch', 'AWS::IoT', - 'AWS::ElasticLoadBalancing', - 'AWS::DMS', - 'AWS::Glue', - 'AWS::ElastiCache', - 'AWS::CodeDeploy', - 'AWS::SES', - 'AWS::CodeBuild', - 'AWS::Budgets', - 'AWS::DAX', - 'AWS::DataPipeline', - 'AWS::CloudTrail', - 'AWS::CloudFormation', - 'AWS::Cloud9', - 'AWS::ServiceDiscovery', - 'AWS::EKS', - 'AWS::ApplicationAutoScaling', - 'AWS::CodeCommit', - 'AWS::S3', + 'AWS::KMS', + 'AWS::Kinesis', + 'AWS::KinesisAnalytics', 'AWS::KinesisFirehose', + 'AWS::Lambda', + 'AWS::Logs', + 'AWS::Neptune', + 'AWS::OpsWorks', + 'AWS::RDS', + 'AWS::Redshift', + 'AWS::Route53', + 'AWS::S3', 'AWS::SDB', - 'AWS::ECR', - 'AWS::DynamoDB', - 'AWS::Athena', - 'AWS::Serverless' + 'AWS::SES', + 'AWS::SNS', + 'AWS::SQS', + 'AWS::SSM', + 'AWS::SageMaker', + 'AWS::Serverless', + 'AWS::ServiceCatalog', + 'AWS::ServiceDiscovery', + 'AWS::StepFunctions', + 'AWS::WAF', + 'AWS::WAFRegional', + 'AWS::WorkSpaces' ]; From 9090c6616a90adf5d43524e4a56baaa23117a43e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=91=A8=F0=9F=8F=BC=E2=80=8D=F0=9F=92=BB=20Romain=20M?= =?UTF-8?q?arcadier-Muller?= Date: Fri, 17 Aug 2018 13:01:20 +0200 Subject: [PATCH 6/6] Correct auto-generated test file name. --- create-missing-libraries.sh | 2 +- .../test/{test.aws-sagemaker.ts => test.sagemaker.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/@aws-cdk/aws-sagemaker/test/{test.aws-sagemaker.ts => test.sagemaker.ts} (100%) diff --git a/create-missing-libraries.sh b/create-missing-libraries.sh index 889982b0449ff..f48c43dc18643 100755 --- a/create-missing-libraries.sh +++ b/create-missing-libraries.sh @@ -124,7 +124,7 @@ EOM export * from './${PB/aws-/}.generated'; EOM - cat < packages/${P}/test/test.${PB}.ts + cat < packages/${P}/test/test.${PB/aws-/}.ts import { Test, testCase } from 'nodeunit'; import {} from '../lib'; diff --git a/packages/@aws-cdk/aws-sagemaker/test/test.aws-sagemaker.ts b/packages/@aws-cdk/aws-sagemaker/test/test.sagemaker.ts similarity index 100% rename from packages/@aws-cdk/aws-sagemaker/test/test.aws-sagemaker.ts rename to packages/@aws-cdk/aws-sagemaker/test/test.sagemaker.ts