From d1ca04f7a136be437a0538d7606803bdf0a73f98 Mon Sep 17 00:00:00 2001 From: AWS CDK Automation <43080478+aws-cdk-automation@users.noreply.github.com> Date: Wed, 22 Jul 2020 22:52:20 +0200 Subject: [PATCH] feat(cfnspec): cloudformation spec v16.1.0 (#9074) * feat: cloudformation spec v16.1.0 * chore: accept string maps as outputs when validating schema * add missing attributes to amplify domain * fix rds issue Co-authored-by: AWS CDK Team Co-authored-by: Elad Ben-Israel Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- packages/@aws-cdk/aws-amplify/lib/domain.ts | 26 +- packages/@aws-cdk/aws-rds/lib/proxy.ts | 7 +- packages/@aws-cdk/cfnspec/CHANGELOG.md | 112 +++ packages/@aws-cdk/cfnspec/cfn.version | 2 +- .../cfnspec/lib/schema/resource-type.ts | 17 +- ...0_CloudFormationResourceSpecification.json | 684 +++++++++++++++++- .../@aws-cdk/cfnspec/test/spec-validators.ts | 3 + 7 files changed, 825 insertions(+), 26 deletions(-) diff --git a/packages/@aws-cdk/aws-amplify/lib/domain.ts b/packages/@aws-cdk/aws-amplify/lib/domain.ts index ddb5b6b6f04e8..089eaa5117c78 100644 --- a/packages/@aws-cdk/aws-amplify/lib/domain.ts +++ b/packages/@aws-cdk/aws-amplify/lib/domain.ts @@ -1,4 +1,4 @@ -import { Construct, Lazy, Resource } from '@aws-cdk/core'; +import { Construct, Lazy, Resource, IResolvable } from '@aws-cdk/core'; import { CfnDomain } from './amplify.generated'; import { IApp } from './app'; import { IBranch } from './branch'; @@ -72,6 +72,27 @@ export class Domain extends Resource { */ public readonly statusReason: string; + /** + * Branch patterns for the automatically created subdomain. + * + * @attribute + */ + public readonly domainAutoSubDomainCreationPatterns: string[]; + + /** + * The IAM service role for the subdomain. + * + * @attribute + */ + public readonly domainAutoSubDomainIamRole: string; + + /** + * Specifies whether the automated creation of subdomains for branches is enabled. + * + * @attribute + */ + public readonly domainEnableAutoSubDomain: IResolvable; + private readonly subDomains: SubDomain[]; constructor(scope: Construct, id: string, props: DomainProps) { @@ -91,6 +112,9 @@ export class Domain extends Resource { this.domainName = domain.attrDomainName; this.domainStatus = domain.attrDomainStatus; this.statusReason = domain.attrStatusReason; + this.domainAutoSubDomainCreationPatterns = domain.attrAutoSubDomainCreationPatterns; + this.domainAutoSubDomainIamRole = domain.attrAutoSubDomainIamRole; + this.domainEnableAutoSubDomain = domain.attrEnableAutoSubDomain; } /** diff --git a/packages/@aws-cdk/aws-rds/lib/proxy.ts b/packages/@aws-cdk/aws-rds/lib/proxy.ts index e6e0ba5d66679..eff37a0b4307c 100644 --- a/packages/@aws-cdk/aws-rds/lib/proxy.ts +++ b/packages/@aws-cdk/aws-rds/lib/proxy.ts @@ -427,16 +427,13 @@ export class DatabaseProxy extends cdk.Resource throw new Error('Cannot specify both dbInstanceIdentifiers and dbClusterIdentifiers'); } - const proxyTargetGroup = new CfnDBProxyTargetGroup(this, 'ProxyTargetGroup', { + new CfnDBProxyTargetGroup(this, 'ProxyTargetGroup', { + targetGroupName: 'default', dbProxyName: this.dbProxyName, dbInstanceIdentifiers, dbClusterIdentifiers, connectionPoolConfigurationInfo: toConnectionPoolConfigurationInfo(props), }); - - // Currently(2020-07-04), this property must be set to default. - // https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#TargetGroupName-fn::getatt - proxyTargetGroup.addOverride('Properties.TargetGroupName', 'default'); } /** diff --git a/packages/@aws-cdk/cfnspec/CHANGELOG.md b/packages/@aws-cdk/cfnspec/CHANGELOG.md index 32390673011c9..5c05249b0514e 100644 --- a/packages/@aws-cdk/cfnspec/CHANGELOG.md +++ b/packages/@aws-cdk/cfnspec/CHANGELOG.md @@ -1,3 +1,115 @@ +# CloudFormation Resource Specification v16.1.0 + +## New Resource Types + +* AWS::Athena::DataCatalog +* AWS::EC2::PrefixList +* AWS::QLDB::Stream + +## Attribute Changes + +* AWS::Amplify::Domain AutoSubDomainCreationPatterns (__added__) +* AWS::Amplify::Domain AutoSubDomainIAMRole (__added__) +* AWS::Amplify::Domain EnableAutoSubDomain (__added__) +* AWS::RDS::DBProxyTargetGroup TargetGroupName (__deleted__) +* AWS::ServiceCatalog::CloudFormationProvisionedProduct Outputs (__added__) +* AWS::ServiceCatalog::CloudFormationProvisionedProduct ProvisionedProductId (__added__) + +## Property Changes + +* AWS::Amplify::App EnableBranchAutoDeletion (__added__) +* AWS::Amplify::Domain AutoSubDomainCreationPatterns (__added__) +* AWS::Amplify::Domain AutoSubDomainIAMRole (__added__) +* AWS::Amplify::Domain EnableAutoSubDomain (__added__) +* AWS::AutoScaling::AutoScalingGroup NewInstancesProtectedFromScaleIn (__added__) +* AWS::CodeGuruProfiler::ProfilingGroup ComputePlatform (__added__) +* AWS::ElastiCache::ReplicationGroup MultiAZEnabled.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::ElasticLoadBalancingV2::Listener AlpnPolicy (__added__) +* AWS::Elasticsearch::Domain AdvancedSecurityOptions (__added__) +* AWS::Elasticsearch::Domain DomainEndpointOptions (__added__) +* AWS::FSx::FileSystem StorageCapacity.UpdateType (__changed__) + * Old: Immutable + * New: Mutable +* AWS::ImageBuilder::Component SupportedOsVersions (__added__) +* AWS::ImageBuilder::Image EnhancedImageMetadataEnabled (__added__) +* AWS::ImageBuilder::ImagePipeline EnhancedImageMetadataEnabled (__added__) +* AWS::ImageBuilder::ImageRecipe WorkingDirectory (__added__) +* AWS::Lambda::Function FileSystemConfigs (__added__) +* AWS::RDS::DBProxyTargetGroup TargetGroupName (__added__) +* AWS::RDS::DBProxyTargetGroup DBProxyName.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::Route53::HealthCheck HealthCheckConfig.UpdateType (__changed__) + * Old: Mutable + * New: Conditional +* AWS::SSM::Association ApplyOnlyAtCronInterval (__added__) +* AWS::SageMaker::EndpointConfig DataCaptureConfig (__added__) +* AWS::ServiceCatalog::CloudFormationProvisionedProduct NotificationArns.DuplicatesAllowed (__added__) +* AWS::ServiceDiscovery::HttpNamespace Tags.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::ServiceDiscovery::PrivateDnsNamespace Tags.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::ServiceDiscovery::PublicDnsNamespace Tags.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::ServiceDiscovery::Service Tags.UpdateType (__changed__) + * Old: Mutable + * New: Immutable +* AWS::Synthetics::Canary RunConfig.Required (__changed__) + * Old: true + * New: false + +## Property Type Changes + +* AWS::CodeBuild::Project.BuildStatusConfig (__added__) +* AWS::Elasticsearch::Domain.AdvancedSecurityOptionsInput (__added__) +* AWS::Elasticsearch::Domain.DomainEndpointOptions (__added__) +* AWS::Elasticsearch::Domain.MasterUserOptions (__added__) +* AWS::Lambda::Function.FileSystemConfig (__added__) +* AWS::SageMaker::EndpointConfig.CaptureContentTypeHeader (__added__) +* AWS::SageMaker::EndpointConfig.CaptureOption (__added__) +* AWS::SageMaker::EndpointConfig.DataCaptureConfig (__added__) +* AWS::WAFv2::RuleGroup.ForwardedIPConfiguration (__added__) +* AWS::WAFv2::RuleGroup.IPSetForwardedIPConfiguration (__added__) +* AWS::WAFv2::WebACL.ForwardedIPConfiguration (__added__) +* AWS::WAFv2::WebACL.IPSetForwardedIPConfiguration (__added__) +* AWS::CodeBuild::Project.Source BuildStatusConfig (__added__) +* AWS::FSx::FileSystem.LustreConfiguration AutomaticBackupRetentionDays (__added__) +* AWS::FSx::FileSystem.LustreConfiguration CopyTagsToBackups (__added__) +* AWS::FSx::FileSystem.LustreConfiguration DailyAutomaticBackupStartTime (__added__) +* AWS::FSx::FileSystem.WindowsConfiguration ThroughputCapacity.UpdateType (__changed__) + * Old: Immutable + * New: Mutable +* AWS::SageMaker::Model.ContainerDefinition ModelPackageName (__added__) +* AWS::SageMaker::Model.ContainerDefinition Image.Required (__changed__) + * Old: true + * New: false +* AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningParameter Key.Required (__changed__) + * Old: false + * New: true +* AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningParameter Value.Required (__changed__) + * Old: false + * New: true +* AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningPreferences StackSetAccounts.DuplicatesAllowed (__added__) +* AWS::ServiceCatalog::CloudFormationProvisionedProduct.ProvisioningPreferences StackSetRegions.DuplicatesAllowed (__added__) +* AWS::Synthetics::Canary.RunConfig MemoryInMB (__added__) +* AWS::Synthetics::Canary.Schedule DurationInSeconds.Required (__changed__) + * Old: true + * New: false +* AWS::WAFv2::RuleGroup.GeoMatchStatement ForwardedIPConfig (__added__) +* AWS::WAFv2::RuleGroup.IPSetReferenceStatement IPSetForwardedIPConfig (__added__) +* AWS::WAFv2::RuleGroup.RateBasedStatementOne ForwardedIPConfig (__added__) +* AWS::WAFv2::RuleGroup.RateBasedStatementTwo ForwardedIPConfig (__added__) +* AWS::WAFv2::WebACL.GeoMatchStatement ForwardedIPConfig (__added__) +* AWS::WAFv2::WebACL.IPSetReferenceStatement IPSetForwardedIPConfig (__added__) +* AWS::WAFv2::WebACL.RateBasedStatementOne ForwardedIPConfig (__added__) +* AWS::WAFv2::WebACL.RateBasedStatementTwo ForwardedIPConfig (__added__) + + # CloudFormation Resource Specification v16.0.0 ## New Resource Types diff --git a/packages/@aws-cdk/cfnspec/cfn.version b/packages/@aws-cdk/cfnspec/cfn.version index 946789e6195a1..e0228cf182652 100644 --- a/packages/@aws-cdk/cfnspec/cfn.version +++ b/packages/@aws-cdk/cfnspec/cfn.version @@ -1 +1 @@ -16.0.0 +16.1.0 diff --git a/packages/@aws-cdk/cfnspec/lib/schema/resource-type.ts b/packages/@aws-cdk/cfnspec/lib/schema/resource-type.ts index aeccfaa04d86f..8a33571504545 100644 --- a/packages/@aws-cdk/cfnspec/lib/schema/resource-type.ts +++ b/packages/@aws-cdk/cfnspec/lib/schema/resource-type.ts @@ -38,7 +38,7 @@ export interface TaggableResource extends ResourceType { } } -export type Attribute = PrimitiveAttribute | ListAttribute; +export type Attribute = PrimitiveAttribute | ListAttribute | MapAttribute; export interface PrimitiveAttribute { PrimitiveType: PrimitiveType; @@ -56,6 +56,13 @@ export interface ComplexListAttribute { ItemType: string; } +export type MapAttribute = PrimitiveMapAttribute; + +export interface PrimitiveMapAttribute { + Type: 'Map'; + PrimitiveItemType: PrimitiveType; +} + /** * Determine if the resource supports tags * @@ -83,6 +90,10 @@ export function isListAttribute(spec: Attribute): spec is ListAttribute { return (spec as ListAttribute).Type === 'List'; } +export function isMapAttribute(spec: Attribute): spec is MapAttribute { + return (spec as MapAttribute).Type === 'Map'; +} + export function isPrimitiveListAttribute(spec: Attribute): spec is PrimitiveListAttribute { return isListAttribute(spec) && !!(spec as PrimitiveListAttribute).PrimitiveItemType; } @@ -91,6 +102,10 @@ export function isComplexListAttribute(spec: Attribute): spec is ComplexListAttr return isListAttribute(spec) && !!(spec as ComplexListAttribute).ItemType; } +export function isPrimitiveMapAttribute(spec: Attribute): spec is PrimitiveMapAttribute { + return isMapAttribute(spec) && !!(spec as PrimitiveMapAttribute).PrimitiveItemType; +} + /** * Type declaration for special values of the "Ref" attribute represents. * diff --git a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json index 2fda3710b204b..32e331c7f9fb0 100644 --- a/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json +++ b/packages/@aws-cdk/cfnspec/spec-source/000_CloudFormationResourceSpecification.json @@ -3512,6 +3512,18 @@ } } }, + "AWS::Athena::DataCatalog.Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-datacatalog-tags.html", + "Properties": { + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-datacatalog-tags.html#cfn-athena-datacatalog-tags-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::Athena::WorkGroup.EncryptionConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html", "Properties": { @@ -6424,6 +6436,23 @@ } } }, + "AWS::CodeBuild::Project.BuildStatusConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html", + "Properties": { + "Context": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html#cfn-codebuild-project-buildstatusconfig-context", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "TargetUrl": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-buildstatusconfig.html#cfn-codebuild-project-buildstatusconfig-targeturl", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::CodeBuild::Project.CloudWatchLogsConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-cloudwatchlogsconfig.html", "Properties": { @@ -6708,6 +6737,12 @@ "Required": false, "UpdateType": "Mutable" }, + "BuildStatusConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-buildstatusconfig", + "Required": false, + "Type": "BuildStatusConfig", + "UpdateType": "Mutable" + }, "GitCloneDepth": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-source.html#cfn-codebuild-project-source-gitclonedepth", "PrimitiveType": "Integer", @@ -11175,6 +11210,23 @@ } } }, + "AWS::EC2::PrefixList.Entry": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-prefixlist-entry.html", + "Properties": { + "Cidr": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-prefixlist-entry.html#cfn-ec2-prefixlist-entry-cidr", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-prefixlist-entry.html#cfn-ec2-prefixlist-entry-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::EC2::SecurityGroup.Egress": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html", "Properties": { @@ -15850,6 +15902,29 @@ } } }, + "AWS::Elasticsearch::Domain.AdvancedSecurityOptionsInput": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-advancedsecurityoptionsinput.html", + "Properties": { + "Enabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-advancedsecurityoptionsinput.html#cfn-elasticsearch-domain-advancedsecurityoptionsinput-enabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "InternalUserDatabaseEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-advancedsecurityoptionsinput.html#cfn-elasticsearch-domain-advancedsecurityoptionsinput-internaluserdatabaseenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "MasterUserOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-advancedsecurityoptionsinput.html#cfn-elasticsearch-domain-advancedsecurityoptionsinput-masteruseroptions", + "Required": false, + "Type": "MasterUserOptions", + "UpdateType": "Mutable" + } + } + }, "AWS::Elasticsearch::Domain.CognitoOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-cognitooptions.html", "Properties": { @@ -15879,6 +15954,23 @@ } } }, + "AWS::Elasticsearch::Domain.DomainEndpointOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-domainendpointoptions.html", + "Properties": { + "EnforceHTTPS": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-domainendpointoptions.html#cfn-elasticsearch-domain-domainendpointoptions-enforcehttps", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, + "TLSSecurityPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-domainendpointoptions.html#cfn-elasticsearch-domain-domainendpointoptions-tlssecuritypolicy", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Elasticsearch::Domain.EBSOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-ebsoptions.html", "Properties": { @@ -15989,6 +16081,29 @@ } } }, + "AWS::Elasticsearch::Domain.MasterUserOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-masteruseroptions.html", + "Properties": { + "MasterUserARN": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-masteruseroptions.html#cfn-elasticsearch-domain-masteruseroptions-masteruserarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "MasterUserName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-masteruseroptions.html#cfn-elasticsearch-domain-masteruseroptions-masterusername", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "MasterUserPassword": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-masteruseroptions.html#cfn-elasticsearch-domain-masteruseroptions-masteruserpassword", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + } + } + }, "AWS::Elasticsearch::Domain.NodeToNodeEncryptionOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticsearch-domain-nodetonodeencryptionoptions.html", "Properties": { @@ -16482,6 +16597,24 @@ "AWS::FSx::FileSystem.LustreConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html", "Properties": { + "AutomaticBackupRetentionDays": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-automaticbackupretentiondays", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, + "CopyTagsToBackups": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-copytagstobackups", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "DailyAutomaticBackupStartTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-dailyautomaticbackupstarttime", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "DeploymentType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-lustreconfiguration.html#cfn-fsx-filesystem-lustreconfiguration-deploymenttype", "PrimitiveType": "String", @@ -16611,7 +16744,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration.html#cfn-fsx-filesystem-windowsconfiguration-throughputcapacity", "PrimitiveType": "Integer", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, "WeeklyMaintenanceStartTime": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-fsx-filesystem-windowsconfiguration.html#cfn-fsx-filesystem-windowsconfiguration-weeklymaintenancestarttime", @@ -24099,6 +24232,23 @@ } } }, + "AWS::Lambda::Function.FileSystemConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-filesystemconfig.html", + "Properties": { + "Arn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-filesystemconfig.html#cfn-lambda-function-filesystemconfig-arn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "LocalMountPath": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-filesystemconfig.html#cfn-lambda-function-filesystemconfig-localmountpath", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Lambda::Function.TracingConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tracingconfig.html", "Properties": { @@ -27076,6 +27226,23 @@ } } }, + "AWS::QLDB::Stream.KinesisConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qldb-stream-kinesisconfiguration.html", + "Properties": { + "AggregationEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qldb-stream-kinesisconfiguration.html#cfn-qldb-stream-kinesisconfiguration-aggregationenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "StreamArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-qldb-stream-kinesisconfiguration.html#cfn-qldb-stream-kinesisconfiguration-streamarn", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::RDS::DBCluster.DBClusterRole": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-dbcluster-dbclusterrole.html", "Properties": { @@ -29982,6 +30149,78 @@ } } }, + "AWS::SageMaker::EndpointConfig.CaptureContentTypeHeader": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig-capturecontenttypeheader.html", + "Properties": { + "CsvContentTypes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig-capturecontenttypeheader.html#cfn-sagemaker-endpointconfig-datacaptureconfig-capturecontenttypeheader-csvcontenttypes", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, + "JsonContentTypes": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig-capturecontenttypeheader.html#cfn-sagemaker-endpointconfig-datacaptureconfig-capturecontenttypeheader-jsoncontenttypes", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + } + } + }, + "AWS::SageMaker::EndpointConfig.CaptureOption": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-captureoption.html", + "Properties": { + "CaptureMode": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-captureoption.html#cfn-sagemaker-endpointconfig-captureoption-capturemode", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + } + } + }, + "AWS::SageMaker::EndpointConfig.DataCaptureConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html", + "Properties": { + "CaptureContentTypeHeader": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig-capturecontenttypeheader", + "Required": false, + "Type": "CaptureContentTypeHeader", + "UpdateType": "Immutable" + }, + "CaptureOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig-captureoptions", + "ItemType": "CaptureOption", + "Required": true, + "Type": "List", + "UpdateType": "Immutable" + }, + "DestinationS3Uri": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig-destinations3uri", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "EnableCapture": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig-enablecapture", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, + "InitialSamplingPercentage": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig-initialsamplingpercentage", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Immutable" + }, + "KmsKeyId": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-datacaptureconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig-kmskeyid", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + } + } + }, "AWS::SageMaker::EndpointConfig.ProductionVariant": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-endpointconfig-productionvariant.html", "Properties": { @@ -30041,7 +30280,7 @@ "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, + "Required": false, "UpdateType": "Immutable" }, "Mode": { @@ -30055,6 +30294,12 @@ "PrimitiveType": "String", "Required": false, "UpdateType": "Immutable" + }, + "ModelPackageName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sagemaker-model-containerdefinition.html#cfn-sagemaker-model-containerdefinition-modelpackagename", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" } } }, @@ -30244,13 +30489,13 @@ "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, + "Required": true, "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, + "Required": true, "UpdateType": "Mutable" } } @@ -30260,6 +30505,7 @@ "Properties": { "StackSetAccounts": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningpreferences.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningpreferences-stacksetaccounts", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "List", @@ -30297,6 +30543,7 @@ }, "StackSetRegions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationprovisionedproduct-provisioningpreferences.html#cfn-servicecatalog-cloudformationprovisionedproduct-provisioningpreferences-stacksetregions", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "List", @@ -30523,6 +30770,12 @@ "AWS::Synthetics::Canary.RunConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html", "Properties": { + "MemoryInMB": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-memoryinmb", + "PrimitiveType": "Integer", + "Required": false, + "UpdateType": "Mutable" + }, "TimeoutInSeconds": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-runconfig.html#cfn-synthetics-canary-runconfig-timeoutinseconds", "PrimitiveType": "Integer", @@ -30537,7 +30790,7 @@ "DurationInSeconds": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-synthetics-canary-schedule.html#cfn-synthetics-canary-schedule-durationinseconds", "PrimitiveType": "String", - "Required": true, + "Required": false, "UpdateType": "Mutable" }, "Expression": { @@ -31271,6 +31524,23 @@ } } }, + "AWS::WAFv2::RuleGroup.ForwardedIPConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html", + "Properties": { + "FallbackBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html#cfn-wafv2-rulegroup-forwardedipconfiguration-fallbackbehavior", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "HeaderName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html#cfn-wafv2-rulegroup-forwardedipconfiguration-headername", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::WAFv2::RuleGroup.GeoMatchStatement": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html", "Properties": { @@ -31280,6 +31550,35 @@ "Required": false, "Type": "List", "UpdateType": "Mutable" + }, + "ForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html#cfn-wafv2-rulegroup-geomatchstatement-forwardedipconfig", + "Required": false, + "Type": "ForwardedIPConfiguration", + "UpdateType": "Mutable" + } + } + }, + "AWS::WAFv2::RuleGroup.IPSetForwardedIPConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html", + "Properties": { + "FallbackBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html#cfn-wafv2-rulegroup-ipsetforwardedipconfiguration-fallbackbehavior", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "HeaderName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html#cfn-wafv2-rulegroup-ipsetforwardedipconfiguration-headername", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Position": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html#cfn-wafv2-rulegroup-ipsetforwardedipconfiguration-position", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" } } }, @@ -31291,6 +31590,12 @@ "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" + }, + "IPSetForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html#cfn-wafv2-rulegroup-ipsetreferencestatement-ipsetforwardedipconfig", + "Required": false, + "Type": "IPSetForwardedIPConfiguration", + "UpdateType": "Mutable" } } }, @@ -31349,6 +31654,12 @@ "Required": true, "UpdateType": "Mutable" }, + "ForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementone.html#cfn-wafv2-rulegroup-ratebasedstatementone-forwardedipconfig", + "Required": false, + "Type": "ForwardedIPConfiguration", + "UpdateType": "Mutable" + }, "Limit": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementone.html#cfn-wafv2-rulegroup-ratebasedstatementone-limit", "PrimitiveType": "Integer", @@ -31372,6 +31683,12 @@ "Required": true, "UpdateType": "Mutable" }, + "ForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementtwo.html#cfn-wafv2-rulegroup-ratebasedstatementtwo-forwardedipconfig", + "Required": false, + "Type": "ForwardedIPConfiguration", + "UpdateType": "Mutable" + }, "Limit": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatementtwo.html#cfn-wafv2-rulegroup-ratebasedstatementtwo-limit", "PrimitiveType": "Integer", @@ -31898,6 +32215,23 @@ } } }, + "AWS::WAFv2::WebACL.ForwardedIPConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html", + "Properties": { + "FallbackBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html#cfn-wafv2-webacl-forwardedipconfiguration-fallbackbehavior", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "HeaderName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-forwardedipconfiguration.html#cfn-wafv2-webacl-forwardedipconfiguration-headername", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::WAFv2::WebACL.GeoMatchStatement": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html", "Properties": { @@ -31907,6 +32241,35 @@ "Required": false, "Type": "List", "UpdateType": "Mutable" + }, + "ForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-geomatchstatement.html#cfn-wafv2-webacl-geomatchstatement-forwardedipconfig", + "Required": false, + "Type": "ForwardedIPConfiguration", + "UpdateType": "Mutable" + } + } + }, + "AWS::WAFv2::WebACL.IPSetForwardedIPConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html", + "Properties": { + "FallbackBehavior": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html#cfn-wafv2-webacl-ipsetforwardedipconfiguration-fallbackbehavior", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "HeaderName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html#cfn-wafv2-webacl-ipsetforwardedipconfiguration-headername", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Position": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetforwardedipconfiguration.html#cfn-wafv2-webacl-ipsetforwardedipconfiguration-position", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" } } }, @@ -31918,6 +32281,12 @@ "PrimitiveType": "String", "Required": true, "UpdateType": "Mutable" + }, + "IPSetForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ipsetreferencestatement.html#cfn-wafv2-webacl-ipsetreferencestatement-ipsetforwardedipconfig", + "Required": false, + "Type": "IPSetForwardedIPConfiguration", + "UpdateType": "Mutable" } } }, @@ -32017,6 +32386,12 @@ "Required": true, "UpdateType": "Mutable" }, + "ForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementone.html#cfn-wafv2-webacl-ratebasedstatementone-forwardedipconfig", + "Required": false, + "Type": "ForwardedIPConfiguration", + "UpdateType": "Mutable" + }, "Limit": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementone.html#cfn-wafv2-webacl-ratebasedstatementone-limit", "PrimitiveType": "Integer", @@ -32040,6 +32415,12 @@ "Required": true, "UpdateType": "Mutable" }, + "ForwardedIPConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementtwo.html#cfn-wafv2-webacl-ratebasedstatementtwo-forwardedipconfig", + "Required": false, + "Type": "ForwardedIPConfiguration", + "UpdateType": "Mutable" + }, "Limit": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatementtwo.html#cfn-wafv2-webacl-ratebasedstatementtwo-limit", "PrimitiveType": "Integer", @@ -32613,7 +32994,7 @@ } } }, - "ResourceSpecificationVersion": "16.0.0", + "ResourceSpecificationVersion": "16.1.0", "ResourceTypes": { "AWS::ACMPCA::Certificate": { "Attributes": { @@ -33043,6 +33424,12 @@ "Required": false, "UpdateType": "Mutable" }, + "EnableBranchAutoDeletion": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-enablebranchautodeletion", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "EnvironmentVariables": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-app.html#cfn-amplify-app-environmentvariables", "ItemType": "EnvironmentVariable", @@ -33169,6 +33556,13 @@ "Arn": { "PrimitiveType": "String" }, + "AutoSubDomainCreationPatterns": { + "PrimitiveItemType": "String", + "Type": "List" + }, + "AutoSubDomainIAMRole": { + "PrimitiveType": "String" + }, "CertificateRecord": { "PrimitiveType": "String" }, @@ -33178,6 +33572,9 @@ "DomainStatus": { "PrimitiveType": "String" }, + "EnableAutoSubDomain": { + "PrimitiveType": "Boolean" + }, "StatusReason": { "PrimitiveType": "String" } @@ -33190,12 +33587,31 @@ "Required": true, "UpdateType": "Immutable" }, + "AutoSubDomainCreationPatterns": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-autosubdomaincreationpatterns", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "AutoSubDomainIAMRole": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-autosubdomainiamrole", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, "DomainName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-domainname", "PrimitiveType": "String", "Required": true, "UpdateType": "Immutable" }, + "EnableAutoSubDomain": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-enableautosubdomain", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "SubDomainSettings": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplify-domain.html#cfn-amplify-domain-subdomainsettings", "ItemType": "SubDomainSetting", @@ -36044,6 +36460,42 @@ } } }, + "AWS::Athena::DataCatalog": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html", + "Properties": { + "Description": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-description", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Mutable" + }, + "Name": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-name", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Parameters": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-parameters", + "PrimitiveItemType": "String", + "Required": false, + "Type": "Map", + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-tags", + "Required": false, + "Type": "Tags", + "UpdateType": "Mutable" + }, + "Type": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html#cfn-athena-datacatalog-type", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + } + } + }, "AWS::Athena::NamedQuery": { "Attributes": { "NamedQueryId": { @@ -36237,6 +36689,12 @@ "Type": "MixedInstancesPolicy", "UpdateType": "Mutable" }, + "NewInstancesProtectedFromScaleIn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-newinstancesprotectedfromscalein", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "NotificationConfigurations": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-as-group-notificationconfigurations", "DuplicatesAllowed": true, @@ -38056,6 +38514,12 @@ "Required": false, "UpdateType": "Mutable" }, + "ComputePlatform": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codeguruprofiler-profilinggroup.html#cfn-codeguruprofiler-profilinggroup-computeplatform", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, "ProfilingGroupName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codeguruprofiler-profilinggroup.html#cfn-codeguruprofiler-profilinggroup-profilinggroupname", "PrimitiveType": "String", @@ -41725,6 +42189,57 @@ } } }, + "AWS::EC2::PrefixList": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + }, + "OwnerId": { + "PrimitiveType": "String" + }, + "PrefixListId": { + "PrimitiveType": "String" + }, + "Version": { + "PrimitiveType": "Integer" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-prefixlist.html", + "Properties": { + "AddressFamily": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-prefixlist.html#cfn-ec2-prefixlist-addressfamily", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Entries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-prefixlist.html#cfn-ec2-prefixlist-entries", + "ItemType": "Entry", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, + "MaxEntries": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-prefixlist.html#cfn-ec2-prefixlist-maxentries", + "PrimitiveType": "Integer", + "Required": true, + "UpdateType": "Mutable" + }, + "PrefixListName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-prefixlist.html#cfn-ec2-prefixlist-prefixlistname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Mutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-prefixlist.html#cfn-ec2-prefixlist-tags", + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::EC2::Route": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-route.html", "Properties": { @@ -44302,7 +44817,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-multiazenabled", "PrimitiveType": "Boolean", "Required": false, - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, "NodeGroupConfiguration": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-replicationgroup.html#cfn-elasticache-replicationgroup-nodegroupconfiguration", @@ -44803,6 +45318,14 @@ "AWS::ElasticLoadBalancingV2::Listener": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html", "Properties": { + "AlpnPolicy": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-alpnpolicy", + "DuplicatesAllowed": false, + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "Certificates": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticloadbalancingv2-listener.html#cfn-elasticloadbalancingv2-listener-certificates", "DuplicatesAllowed": false, @@ -45137,12 +45660,24 @@ "Type": "Map", "UpdateType": "Mutable" }, + "AdvancedSecurityOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-advancedsecurityoptions", + "Required": false, + "Type": "AdvancedSecurityOptionsInput", + "UpdateType": "Immutable" + }, "CognitoOptions": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-cognitooptions", "Required": false, "Type": "CognitoOptions", "UpdateType": "Mutable" }, + "DomainEndpointOptions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-domainendpointoptions", + "Required": false, + "Type": "DomainEndpointOptions", + "UpdateType": "Mutable" + }, "DomainName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticsearch-domain.html#cfn-elasticsearch-domain-domainname", "PrimitiveType": "String", @@ -45619,7 +46154,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-storagecapacity", "PrimitiveType": "Integer", "Required": false, - "UpdateType": "Immutable" + "UpdateType": "Mutable" }, "StorageType": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fsx-filesystem.html#cfn-fsx-filesystem-storagetype", @@ -47880,6 +48415,13 @@ "Required": true, "UpdateType": "Immutable" }, + "SupportedOsVersions": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-component.html#cfn-imagebuilder-component-supportedosversions", + "PrimitiveItemType": "String", + "Required": false, + "Type": "List", + "UpdateType": "Immutable" + }, "Tags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-component.html#cfn-imagebuilder-component-tags", "PrimitiveItemType": "String", @@ -47954,6 +48496,12 @@ "Required": false, "UpdateType": "Immutable" }, + "EnhancedImageMetadataEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-enhancedimagemetadataenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Immutable" + }, "ImageRecipeArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-image.html#cfn-imagebuilder-image-imagerecipearn", "PrimitiveType": "String", @@ -48001,6 +48549,12 @@ "Required": false, "UpdateType": "Mutable" }, + "EnhancedImageMetadataEnabled": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagepipeline.html#cfn-imagebuilder-imagepipeline-enhancedimagemetadataenabled", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "ImageRecipeArn": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagepipeline.html#cfn-imagebuilder-imagepipeline-imagerecipearn", "PrimitiveType": "String", @@ -48098,6 +48652,12 @@ "PrimitiveType": "String", "Required": true, "UpdateType": "Immutable" + }, + "WorkingDirectory": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-imagerecipe.html#cfn-imagebuilder-imagerecipe-workingdirectory", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" } } }, @@ -49365,6 +49925,14 @@ "Type": "Environment", "UpdateType": "Mutable" }, + "FileSystemConfigs": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-filesystemconfigs", + "DuplicatesAllowed": false, + "ItemType": "FileSystemConfig", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + }, "FunctionName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionname", "PrimitiveType": "String", @@ -52670,6 +53238,63 @@ } } }, + "AWS::QLDB::Stream": { + "Attributes": { + "Arn": { + "PrimitiveType": "String" + }, + "Id": { + "PrimitiveType": "String" + } + }, + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html", + "Properties": { + "ExclusiveEndTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-exclusiveendtime", + "PrimitiveType": "String", + "Required": false, + "UpdateType": "Immutable" + }, + "InclusiveStartTime": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-inclusivestarttime", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "KinesisConfiguration": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-kinesisconfiguration", + "Required": true, + "Type": "KinesisConfiguration", + "UpdateType": "Immutable" + }, + "LedgerName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-ledgername", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "RoleArn": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-rolearn", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "StreamName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-streamname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" + }, + "Tags": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-qldb-stream.html#cfn-qldb-stream-tags", + "DuplicatesAllowed": false, + "ItemType": "Tag", + "Required": false, + "Type": "List", + "UpdateType": "Mutable" + } + } + }, "AWS::RAM::ResourceShare": { "Attributes": { "Arn": { @@ -53407,9 +54032,6 @@ "Attributes": { "TargetGroupArn": { "PrimitiveType": "String" - }, - "TargetGroupName": { - "PrimitiveType": "String" } }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html", @@ -53438,7 +54060,13 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-dbproxyname", "PrimitiveType": "String", "Required": true, - "UpdateType": "Mutable" + "UpdateType": "Immutable" + }, + "TargetGroupName": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-rds-dbproxytargetgroup.html#cfn-rds-dbproxytargetgroup-targetgroupname", + "PrimitiveType": "String", + "Required": true, + "UpdateType": "Immutable" } } }, @@ -54157,7 +54785,7 @@ "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html#cfn-route53-healthcheck-healthcheckconfig", "Required": true, "Type": "HealthCheckConfig", - "UpdateType": "Mutable" + "UpdateType": "Conditional" }, "HealthCheckTags": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html#cfn-route53-healthcheck-healthchecktags", @@ -55045,6 +55673,12 @@ }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html", "Properties": { + "ApplyOnlyAtCronInterval": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-applyonlyatcroninterval", + "PrimitiveType": "Boolean", + "Required": false, + "UpdateType": "Mutable" + }, "AssociationName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-association.html#cfn-ssm-association-associationname", "PrimitiveType": "String", @@ -55648,6 +56282,12 @@ }, "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html", "Properties": { + "DataCaptureConfig": { + "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-datacaptureconfig", + "Required": false, + "Type": "DataCaptureConfig", + "UpdateType": "Immutable" + }, "EndpointConfigName": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html#cfn-sagemaker-endpointconfig-endpointconfigname", "PrimitiveType": "String", @@ -56116,6 +56756,13 @@ "CloudformationStackArn": { "PrimitiveType": "String" }, + "Outputs": { + "PrimitiveItemType": "String", + "Type": "Map" + }, + "ProvisionedProductId": { + "PrimitiveType": "String" + }, "RecordId": { "PrimitiveType": "String" } @@ -56130,6 +56777,7 @@ }, "NotificationArns": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationprovisionedproduct.html#cfn-servicecatalog-cloudformationprovisionedproduct-notificationarns", + "DuplicatesAllowed": false, "PrimitiveItemType": "String", "Required": false, "Type": "List", @@ -56591,7 +57239,7 @@ "ItemType": "Tag", "Required": false, "Type": "List", - "UpdateType": "Mutable" + "UpdateType": "Immutable" } } }, @@ -56646,7 +57294,7 @@ "ItemType": "Tag", "Required": false, "Type": "List", - "UpdateType": "Mutable" + "UpdateType": "Immutable" }, "Vpc": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicediscovery-privatednsnamespace.html#cfn-servicediscovery-privatednsnamespace-vpc", @@ -56684,7 +57332,7 @@ "ItemType": "Tag", "Required": false, "Type": "List", - "UpdateType": "Mutable" + "UpdateType": "Immutable" } } }, @@ -56743,7 +57391,7 @@ "ItemType": "Tag", "Required": false, "Type": "List", - "UpdateType": "Mutable" + "UpdateType": "Immutable" } } }, @@ -56872,7 +57520,7 @@ }, "RunConfig": { "Documentation": "http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html#cfn-synthetics-canary-runconfig", - "Required": true, + "Required": false, "Type": "RunConfig", "UpdateType": "Mutable" }, diff --git a/packages/@aws-cdk/cfnspec/test/spec-validators.ts b/packages/@aws-cdk/cfnspec/test/spec-validators.ts index 8fe789970d0bb..521a61be55682 100644 --- a/packages/@aws-cdk/cfnspec/test/spec-validators.ts +++ b/packages/@aws-cdk/cfnspec/test/spec-validators.ts @@ -138,6 +138,9 @@ function validateAttributes( const resolvedType = specification.PropertyTypes && specification.PropertyTypes[fqn]; test.ok(resolvedType, `${typeName}.Attributes.${name} ItemType (${fqn}) resolves`); test.ok(!('PrimitiveItemType' in attribute), `${typeName}.Attributes.${name} has no PrimitiveItemType`); + } else if (schema.isPrimitiveMapAttribute(attribute)) { + test.ok(schema.isPrimitiveType(attribute.PrimitiveItemType), `${typeName}.Attributes.${name} has a valid PrimitiveItemType`); + test.ok(!('ItemType' in attribute), `${typeName}.Attributes.${name} has no ItemType`); } else { test.ok(false, `${typeName}.Attributes.${name} has a valid type`); }