diff --git a/.github/workflows/maintenance-v1.yaml b/.github/workflows/maintenance-v1.yaml
index 45c71d8ab2..8997f7360a 100644
--- a/.github/workflows/maintenance-v1.yaml
+++ b/.github/workflows/maintenance-v1.yaml
@@ -25,7 +25,7 @@ jobs:
cfn-lint --update-documentation
scripts/update_specs_from_pricing.py
scripts/update_serverless_aws_policies.py
- scripts/update_schemas_from_boto.py
+ scripts/boto/update_schemas_from_boto.py
scripts/update_schemas_from_aws_api.py
cfn-lint --update-specs
echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
diff --git a/scripts/boto/_automated_patches.py b/scripts/boto/_automated_patches.py
new file mode 100644
index 0000000000..d2ca8d6063
--- /dev/null
+++ b/scripts/boto/_automated_patches.py
@@ -0,0 +1,210 @@
+"""
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: MIT-0
+"""
+
+import json
+from pathlib import Path
+from typing import Any
+
+from _types import AllPatches, Patch, ResourcePatches
+
+skip = [
+ "account",
+ "chime",
+ "chimesdkidentity",
+ "chimesdkmessaging",
+ "chimesdkmeetings",
+ "chimesdkvoice",
+ "paymentcryptographydata",
+ "rdsdata",
+ "finspacedata",
+ "appconfigdata",
+ "iotjobsdata",
+ "dataexchange",
+ "bedrockruntime",
+ "swf",
+ "cloudhsm",
+ "cloudhsmv2",
+ "workdocs",
+]
+
+skip_property_names = ["State"]
+
+_fields = ["pattern", "enum"]
+
+
+def renamer(name):
+ manual_fixes = {
+ "acm": "CertificateManager",
+ "mq": "AmazonMQ",
+ "kafka": "MSK",
+ "firehose": "KinesisFirehose",
+ "es": "ElasticSearch",
+ }
+ if name in manual_fixes:
+ return manual_fixes[name].lower()
+
+ return name.replace("-", "").lower()
+
+
+def get_shapes(data: dict[str, Any], name: str):
+ shapes: dict[str, Any] = {}
+
+ input_shape = data.get("operations", {}).get(name, {}).get("input", {}).get("shape")
+ if not input_shape:
+ return shapes
+
+ for shape_name, shap_data in data.get("shapes", {}).items():
+ if "enum" in shap_data:
+ shapes[shape_name] = {"enum": shap_data.get("enum")}
+
+ return shapes
+
+
+def get_schema_create_operations(data: dict[str, Any]) -> list[str]:
+ results = []
+
+ action_prefixes = ["Put", "Add", "Create", "Register", "Allocate", "Start", "Run"]
+
+ for api in data.get("handlers", {}).get("create", {}).get("permissions", []):
+ if ":" not in api:
+ continue
+ api = api.split(":")[1]
+ for action_prefix in action_prefixes:
+ if api.startswith(action_prefix):
+ results.append(api)
+
+ return results
+
+
+def get_last_date(service_dir: Path) -> str:
+ last_date = "0000-00-00"
+ for date_dir in service_dir.iterdir():
+ if not date_dir.is_dir():
+ continue
+
+ if date_dir.name > last_date:
+ last_date = date_dir.name
+
+ return last_date
+
+
+def _per_resource_patch(
+ schema_data: dict[str, Any], boto_data: dict[str, Any], source: list[str]
+) -> ResourcePatches:
+ results: ResourcePatches = {}
+ create_operations = get_schema_create_operations(schema_data)
+ shapes = {}
+ for create_operation in create_operations:
+ shapes.update(get_shapes(boto_data, create_operation))
+ create_shape = (
+ boto_data.get("operations", {})
+ .get(create_operation, {})
+ .get("input", {})
+ .get("shape")
+ )
+
+ for member, member_data in (
+ boto_data.get("shapes", {}).get(create_shape, {}).get("members", {}).items()
+ ):
+ for p_name, p_data in schema_data.get("properties", {}).items():
+ if p_name in skip_property_names:
+ continue
+ if p_name.lower() == member.lower():
+
+ path = f"/properties/{p_name}"
+
+ if "$ref" in p_data:
+ pointer = p_data["$ref"].split("/")
+ p_data = schema_data.get(pointer[1], {}).get(pointer[2], {})
+ if not p_data:
+ continue
+ path = f"/{'/'.join(pointer[1:])}"
+
+ # skip if we already have an enum or pattern
+ if any([p_data.get(field) for field in _fields]):
+ continue
+
+ member_shape_name = member_data.get("shape")
+ member_shape = boto_data.get("shapes", {}).get(
+ member_shape_name, {}
+ )
+
+ if not any([member_shape.get(field) for field in _fields]):
+ continue
+
+ results[path] = Patch(
+ source=source,
+ shape=member_shape_name,
+ )
+
+ return results
+
+
+def get_resource_patches(
+ service_dir: Path, schema_path: Path, service_name: str, last_date: str
+) -> AllPatches:
+
+ results: AllPatches = {}
+
+ services_file = Path(f"{service_dir}/{last_date}/service-2.json")
+ if not services_file.exists():
+ return results
+
+ boto_data = {}
+ with open(services_file, "r") as f:
+ boto_data = json.load(f)
+
+ if not boto_data:
+ return results
+
+ resources = list(schema_path.glob(f"aws-{service_name}-*.json"))
+ if not resources:
+ print(f"No resource files found for {service_name}")
+
+ for resource in resources:
+ with open(resource, "r") as f:
+ schema_data = json.load(f)
+
+ resource_type = schema_data.get("typeName", "")
+ if resource_type not in results:
+ results[resource_type] = {}
+
+ results[resource_type].update(
+ _per_resource_patch(
+ schema_data, boto_data, [service_dir.name, last_date]
+ )
+ )
+
+ return results
+
+
+def each_boto_service(boto_path: Path, schema_path: Path) -> AllPatches:
+ results: AllPatches = {}
+ _results: AllPatches = {}
+ boto_path = boto_path / "botocore-master" / "botocore" / "data"
+
+ for service_dir in boto_path.iterdir():
+ if not service_dir.is_dir():
+ continue
+
+ service_name = renamer(service_dir.name)
+
+ if service_name in skip:
+ continue
+
+ last_date = get_last_date(service_dir)
+
+ _results = get_resource_patches(
+ service_dir, schema_path, service_name, last_date
+ )
+ for type_name, patches in _results.items():
+ if patches:
+ results[type_name] = patches
+
+ return results
+
+
+def build_automated_patches(boto_path: Path, schema_path: Path) -> AllPatches:
+ return each_boto_service(boto_path, schema_path)
diff --git a/scripts/boto/_manual_patches.py b/scripts/boto/_manual_patches.py
new file mode 100644
index 0000000000..00eaf57165
--- /dev/null
+++ b/scripts/boto/_manual_patches.py
@@ -0,0 +1,539 @@
+"""
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: MIT-0
+"""
+
+from _types import AllPatches, Patch
+
+patches: AllPatches = {
+ "AWS::AmazonMQ::Broker": {
+ "/properties/AuthenticationStrategy": Patch(
+ source=["mq", "2017-11-27"],
+ shape="AuthenticationStrategy",
+ ),
+ "/properties/DataReplicationMode": Patch(
+ source=["mq", "2017-11-27"],
+ shape="DataReplicationMode",
+ ),
+ "/properties/DeploymentMode": Patch(
+ source=["mq", "2017-11-27"],
+ shape="DeploymentMode",
+ ),
+ "/properties/EngineType": Patch(
+ source=["mq", "2017-11-27"],
+ shape="EngineType",
+ ),
+ "/properties/StorageType": Patch(
+ source=["mq", "2017-11-27"],
+ shape="BrokerStorageType",
+ ),
+ },
+ "AWS::ApiGateway::RestApi": {
+ "/properties/ApiKeySourceType": Patch(
+ source=["apigateway", "2015-07-09"],
+ shape="ApiKeySourceType",
+ ),
+ },
+ "AWS::ApiGateway::Authorizer": {
+ "/properties/Type": Patch(
+ source=["apigateway", "2015-07-09"],
+ shape="AuthorizerType",
+ ),
+ },
+ "AWS::ApiGateway::GatewayResponse": {
+ "/properties/ResponseType": Patch(
+ source=["apigateway", "2015-07-09"],
+ shape="GatewayResponseType",
+ ),
+ },
+ "AWS::ApplicationAutoScaling::ScalingPolicy": {
+ (
+ "/definitions/PredefinedMetricSpecification/"
+ "properties/PredefinedMetricType"
+ ): Patch(
+ source=["application-autoscaling", "2016-02-06"],
+ shape="MetricType",
+ ),
+ },
+ "AWS::AppSync::DataSource": {
+ "/properties/Type": Patch(
+ source=["appsync", "2017-07-25"],
+ shape="DataSourceType",
+ ),
+ },
+ "AWS::AppSync::GraphQLApi": {
+ "/properties/AuthenticationType": Patch(
+ source=["appsync", "2017-07-25"],
+ shape="AuthenticationType",
+ ),
+ },
+ "AWS::AutoScaling::LaunchConfiguration": {
+ "/definitions/BlockDevice/properties/VolumeType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="VolumeType",
+ ),
+ },
+ "AWS::AutoScaling::ScalingPolicy": {
+ "/definitions/CustomizedMetricSpecification/properties/Statistic": Patch(
+ source=["autoscaling", "2011-01-01"],
+ shape="MetricStatistic",
+ ),
+ (
+ "/definitions/PredefinedMetricSpecification/"
+ "properties/PredefinedMetricType"
+ ): Patch(
+ source=["autoscaling", "2011-01-01"],
+ shape="MetricType",
+ ),
+ },
+ "AWS::AutoScalingPlans::ScalingPlan": {
+ "/definitions/ScalingInstruction/properties/ScalableDimension": Patch(
+ source=["autoscaling-plans", "2018-01-06"],
+ shape="ScalableDimension",
+ ),
+ "/definitions/ScalingInstruction/properties/ServiceNamespace": Patch(
+ source=["autoscaling-plans", "2018-01-06"],
+ shape="ServiceNamespace",
+ ),
+ (
+ "/definitions/ScalingInstruction/properties/"
+ "PredictiveScalingMaxCapacityBehavior"
+ ): Patch(
+ source=["autoscaling-plans", "2018-01-06"],
+ shape="PredictiveScalingMaxCapacityBehavior",
+ ),
+ "/definitions/ScalingInstruction/properties/PredictiveScalingMode": Patch(
+ source=["autoscaling-plans", "2018-01-06"],
+ shape="PredictiveScalingMode",
+ ),
+ },
+ "AWS::Budgets::Budget": {
+ "/definitions/BudgetData/properties/BudgetType": Patch(
+ source=["budgets", "2016-10-20"],
+ shape="BudgetType",
+ ),
+ "/definitions/BudgetData/properties/TimeUnit": Patch(
+ source=["budgets", "2016-10-20"],
+ shape="TimeUnit",
+ ),
+ "/definitions/Notification/properties/ComparisonOperator": Patch(
+ source=["budgets", "2016-10-20"],
+ shape="ComparisonOperator",
+ ),
+ "/definitions/Notification/properties/NotificationType": Patch(
+ source=["budgets", "2016-10-20"],
+ shape="NotificationType",
+ ),
+ "/definitions/Notification/properties/ThresholdType": Patch(
+ source=["budgets", "2016-10-20"],
+ shape="ThresholdType",
+ ),
+ "/definitions/Subscriber/properties/SubscriptionType": Patch(
+ source=["budgets", "2016-10-20"],
+ shape="SubscriptionType",
+ ),
+ },
+ "AWS::CertificateManager::Certificate": {
+ "/properties/ValidationMethod": Patch(
+ source=["acm", "2015-12-08"],
+ shape="ValidationMethod",
+ ),
+ },
+ "AWS::CloudFormation::StackSet": {
+ "/properties/PermissionModel": Patch(
+ source=["cloudformation", "2010-05-15"],
+ shape="PermissionModels",
+ ),
+ },
+ "AWS::CloudFront::Distribution": {
+ "/definitions/CacheBehavior/properties/ViewerProtocolPolicy": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="ViewerProtocolPolicy",
+ ),
+ "/definitions/GeoRestriction/properties/RestrictionType": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="GeoRestrictionType",
+ ),
+ "/definitions/DistributionConfig/properties/HttpVersion": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="HttpVersion",
+ ),
+ "/definitions/FunctionAssociation/properties/EventType": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="EventType",
+ ),
+ "/definitions/LegacyCustomOrigin/properties/OriginProtocolPolicy": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="OriginProtocolPolicy",
+ ),
+ "/definitions/CustomOriginConfig/properties/OriginSSLProtocols/items": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="SslProtocol",
+ ),
+ "/definitions/LegacyCustomOrigin/properties/OriginSSLProtocols/items": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="SslProtocol",
+ ),
+ "/definitions/DistributionConfig/properties/PriceClass": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="PriceClass",
+ ),
+ "/definitions/ViewerCertificate/properties/MinimumProtocolVersion": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="MinimumProtocolVersion",
+ ),
+ "/definitions/ViewerCertificate/properties/SslSupportMethod": Patch(
+ source=["cloudfront", "2020-05-31"],
+ shape="SSLSupportMethod",
+ ),
+ },
+ "AWS::CodeBuild::Project": {
+ "/definitions/Artifacts/properties/Packaging": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="ArtifactPackaging",
+ ),
+ "/definitions/Artifacts/properties/Type": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="ArtifactsType",
+ ),
+ "/definitions/Environment/properties/ComputeType": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="ComputeType",
+ ),
+ "/definitions/Environment/properties/ImagePullCredentialsType": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="ImagePullCredentialsType",
+ ),
+ "/definitions/Environment/properties/Type": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="EnvironmentType",
+ ),
+ "/definitions/ProjectCache/properties/Type": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="CacheType",
+ ),
+ "/definitions/Source/properties/Type": Patch(
+ source=["codebuild", "2016-10-06"],
+ shape="SourceType",
+ ),
+ },
+ "AWS::CodeCommit::Repository": {
+ "/definitions/RepositoryTrigger/properties/Events/items": Patch(
+ source=["codecommit", "2015-04-13"],
+ shape="RepositoryTriggerEventEnum",
+ ),
+ },
+ "AWS::CodeDeploy::DeploymentGroup": {
+ "/definitions/AutoRollbackConfiguration/properties/Events/items": Patch(
+ source=["codedeploy", "2014-10-06"],
+ shape="AutoRollbackEvent",
+ ),
+ "/definitions/DeploymentStyle/properties/DeploymentOption": Patch(
+ source=["codedeploy", "2014-10-06"],
+ shape="DeploymentOption",
+ ),
+ "/definitions/DeploymentStyle/properties/DeploymentType": Patch(
+ source=["codedeploy", "2014-10-06"],
+ shape="DeploymentType",
+ ),
+ "/definitions/TriggerConfig/properties/TriggerEvents/items": Patch(
+ source=["codedeploy", "2014-10-06"],
+ shape="TriggerEventType",
+ ),
+ },
+ "AWS::CodeDeploy::DeploymentConfig": {
+ "/definitions/MinimumHealthyHosts/properties/Type": Patch(
+ source=["codedeploy", "2014-10-06"],
+ shape="MinimumHealthyHostsType",
+ ),
+ },
+ "AWS::CodePipeline::Pipeline": {
+ "/definitions/ActionTypeId/properties/Category": Patch(
+ source=["codepipeline", "2015-07-09"],
+ shape="ActionCategory",
+ ),
+ "/definitions/ActionTypeId/properties/Owner": Patch(
+ source=["codepipeline", "2015-07-09"],
+ shape="ActionOwner",
+ ),
+ "/definitions/ArtifactStore/properties/Type": Patch(
+ source=["codepipeline", "2015-07-09"],
+ shape="ArtifactStoreType",
+ ),
+ "/definitions/BlockerDeclaration/properties/Type": Patch(
+ source=["codepipeline", "2015-07-09"],
+ shape="BlockerType",
+ ),
+ },
+ "AWS::CodePipeline::CustomActionType": {
+ "/definitions/ConfigurationProperties/properties/Type": Patch(
+ source=["codepipeline", "2015-07-09"],
+ shape="ActionConfigurationPropertyType",
+ ),
+ },
+ "AWS::CodePipeline::Webhook": {
+ "/properties/Authentication": Patch(
+ source=["codepipeline", "2015-07-09"],
+ shape="WebhookAuthenticationType",
+ ),
+ },
+ "AWS::Cognito::UserPool": {
+ "/properties/AliasAttributes/items": Patch(
+ source=["cognito-idp", "2016-04-18"],
+ shape="AliasAttributeType",
+ ),
+ "/properties/UsernameAttributes/items": Patch(
+ source=["cognito-idp", "2016-04-18"],
+ shape="UsernameAttributeType",
+ ),
+ "/properties/MfaConfiguration": Patch(
+ source=["cognito-idp", "2016-04-18"],
+ shape="UserPoolMfaType",
+ ),
+ },
+ "AWS::Cognito::UserPoolUser": {
+ "/properties/DesiredDeliveryMediums/items": Patch(
+ source=["cognito-idp", "2016-04-18"],
+ shape="DeliveryMediumType",
+ ),
+ "/properties/MessageAction": Patch(
+ source=["cognito-idp", "2016-04-18"],
+ shape="MessageActionType",
+ ),
+ },
+ "AWS::Cognito::UserPoolClient": {
+ "/properties/ExplicitAuthFlows/items": Patch(
+ source=["cognito-idp", "2016-04-18"],
+ shape="ExplicitAuthFlowsType",
+ ),
+ },
+ "AWS::Config::ConfigRule": {
+ "/definitions/Source/properties/Owner": Patch(
+ source=["config", "2014-11-12"],
+ shape="Owner",
+ ),
+ "/definitions/SourceDetail/properties/EventSource": Patch(
+ source=["config", "2014-11-12"],
+ shape="EventSource",
+ ),
+ "/definitions/SourceDetail/properties/MaximumExecutionFrequency": Patch(
+ source=["config", "2014-11-12"],
+ shape="MaximumExecutionFrequency",
+ ),
+ "/definitions/SourceDetail/properties/MessageType": Patch(
+ source=["config", "2014-11-12"],
+ shape="MessageType",
+ ),
+ },
+ "AWS::DirectoryService::MicrosoftAD": {
+ "/properties/Edition": Patch(
+ source=["ds", "2015-04-16"],
+ shape="DirectoryEdition",
+ ),
+ },
+ "AWS::DirectoryService::SimpleAD": {
+ "/properties/Size": Patch(
+ source=["ds", "2015-04-16"],
+ shape="DirectorySize",
+ )
+ },
+ "AWS::DLM::LifecyclePolicy": {
+ "/definitions/PolicyDetails/properties/ResourceTypes/items": Patch(
+ source=["dlm", "2018-01-12"],
+ shape="ResourceTypeValues",
+ ),
+ },
+ "AWS::DMS::Endpoint": {
+ "/properties/SslMode": Patch(
+ source=["dms", "2016-01-01"],
+ shape="DmsSslModeValue",
+ ),
+ "/properties/EndpointType": Patch(
+ source=["dms", "2016-01-01"],
+ shape="ReplicationEndpointTypeValue",
+ ),
+ },
+ "AWS::DynamoDB::Table": {
+ "/definitions/AttributeDefinition/properties/AttributeType": Patch(
+ source=["dynamodb", "2012-08-10"],
+ shape="ScalarAttributeType",
+ ),
+ "/definitions/KeySchema/properties/KeyType": Patch(
+ source=["dynamodb", "2012-08-10"],
+ shape="KeyType",
+ ),
+ "/definitions/Projection/properties/ProjectionType": Patch(
+ source=["dynamodb", "2012-08-10"],
+ shape="ProjectionType",
+ ),
+ "/definitions/StreamSpecification/properties/StreamViewType": Patch(
+ source=["dynamodb", "2012-08-10"],
+ shape="StreamViewType",
+ ),
+ },
+ "AWS::EC2::EC2Fleet": {
+ "/definitions/OnDemandOptionsRequest/properties/AllocationStrategy": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="FleetOnDemandAllocationStrategy",
+ ),
+ },
+ "AWS::EC2::Instance": {
+ "/properties/Affinity": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="Affinity",
+ ),
+ "/properties/Tenancy": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="Tenancy",
+ ),
+ },
+ "AWS::EC2::LaunchTemplate": {
+ (
+ "/definitions/LaunchTemplateData/properties/"
+ "InstanceInitiatedShutdownBehavior"
+ ): Patch(
+ source=["ec2", "2016-11-15"],
+ shape="ShutdownBehavior",
+ ),
+ "/definitions/InstanceMarketOptions/properties/MarketType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="MarketType",
+ ),
+ "/definitions/SpotOptions/properties/InstanceInterruptionBehavior": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="SpotInstanceInterruptionBehavior",
+ ),
+ "/definitions/SpotOptions/properties/SpotInstanceType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="SpotInstanceType",
+ ),
+ "/definitions/Ebs/properties/VolumeType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="VolumeType",
+ ),
+ "/definitions/Placement/properties/Tenancy": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="Tenancy",
+ ),
+ "/definitions/TagSpecification/properties/ResourceType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="ResourceType",
+ ),
+ },
+ "AWS::EC2::NetworkInterfacePermission": {
+ "/properties/Permission": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="InterfacePermissionType",
+ ),
+ },
+ "AWS::EC2::SpotFleet": {
+ "/definitions/EbsBlockDevice/properties/VolumeType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="VolumeType",
+ ),
+ },
+ "AWS::ECS::TaskDefinition": {
+ "/definitions/ProxyConfiguration/properties/Type": Patch(
+ source=["ecs", "2014-11-13"],
+ shape="ProxyConfigurationType",
+ ),
+ },
+ "AWS::EFS::FileSystem": {
+ "/definitions/LifecyclePolicy/properties/TransitionToIA": Patch(
+ source=["efs", "2015-02-01"],
+ shape="TransitionToIARules",
+ ),
+ },
+ "AWS::Glue::Connection": {
+ "/definitions/ConnectionInput/properties/ConnectionType": Patch(
+ source=["glue", "2017-03-31"],
+ shape="ConnectionType",
+ ),
+ },
+ "AWS::Glue::Crawler": {
+ "/definitions/SchemaChangePolicy/properties/DeleteBehavior": Patch(
+ source=["glue", "2017-03-31"],
+ shape="DeleteBehavior",
+ ),
+ "/definitions/SchemaChangePolicy/properties/UpdateBehavior": Patch(
+ source=["glue", "2017-03-31"],
+ shape="UpdateBehavior",
+ ),
+ },
+ "AWS::Glue::Trigger": {
+ "/definitions/Predicate/properties/Logical": Patch(
+ source=["glue", "2017-03-31"],
+ shape="Logical",
+ ),
+ "/definitions/Condition/properties/LogicalOperator": Patch(
+ source=["glue", "2017-03-31"],
+ shape="LogicalOperator",
+ ),
+ },
+ "AWS::IAM::AccessKey": {
+ "/properties/Status": Patch(
+ source=["iam", "2010-05-08"],
+ shape="statusType",
+ ),
+ },
+ "AWS::OpsWorks::Instance": {
+ "/definitions/EbsBlockDevice/properties/VolumeType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="VolumeType",
+ ),
+ },
+ "AWS::OpsWorks::Layer": {
+ "/definitions/VolumeConfiguration/properties/VolumeType": Patch(
+ source=["ec2", "2016-11-15"],
+ shape="VolumeType",
+ ),
+ },
+ "AWS::Route53::RecordSetGroup": {
+ "/definitions/RecordSet/properties/Failover": Patch(
+ source=["route53", "2013-04-01"],
+ shape="ResourceRecordSetFailover",
+ ),
+ "/definitions/RecordSet/properties/Type": Patch(
+ source=["route53", "2013-04-01"],
+ shape="RRType",
+ ),
+ },
+ "AWS::Route53Resolver::ResolverEndpoint": {
+ "/properties/Direction": Patch(
+ source=["route53resolver", "2018-04-01"],
+ shape="ResolverEndpointDirection",
+ ),
+ },
+ "AWS::ServiceDiscovery::Service": {
+ "/definitions/DnsRecord/properties/Type": Patch(
+ source=["servicediscovery", "2017-03-14"],
+ shape="RecordType",
+ ),
+ "/definitions/HealthCheckConfig/properties/Type": Patch(
+ source=["servicediscovery", "2017-03-14"],
+ shape="HealthCheckType",
+ ),
+ },
+ "AWS::SES::ReceiptRule": {
+ "/definitions/Rule/properties/TlsPolicy": Patch(
+ source=["ses", "2010-12-01"],
+ shape="TlsPolicy",
+ ),
+ },
+ "AWS::WAFRegional::Rule": {
+ "/definitions/Predicate/properties/Type": Patch(
+ source=["waf", "2015-08-24"],
+ shape="PredicateType",
+ ),
+ },
+ "AWS::WorkSpaces::Workspace": {
+ "/definitions/WorkspaceProperties/properties/RunningMode": Patch(
+ source=["workspaces", "2015-04-08"],
+ shape="RunningMode",
+ ),
+ "/definitions/WorkspaceProperties/properties/ComputeTypeName": Patch(
+ source=["workspaces", "2015-04-08"],
+ shape="Compute",
+ ),
+ },
+}
diff --git a/scripts/boto/_types.py b/scripts/boto/_types.py
new file mode 100644
index 0000000000..1ff5814ef1
--- /dev/null
+++ b/scripts/boto/_types.py
@@ -0,0 +1,10 @@
+"""
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: MIT-0
+"""
+
+from collections import namedtuple
+
+Patch = namedtuple("Patch", ["source", "shape"])
+ResourcePatches = dict[str, Patch]
+AllPatches = dict[str, ResourcePatches]
diff --git a/scripts/boto/update_schemas_from_boto.py b/scripts/boto/update_schemas_from_boto.py
new file mode 100755
index 0000000000..978c5bbe00
--- /dev/null
+++ b/scripts/boto/update_schemas_from_boto.py
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+"""
+Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
+SPDX-License-Identifier: MIT-0
+"""
+import io
+import json
+import logging
+import os
+import tempfile
+import zipfile
+from pathlib import Path
+
+import regex as re
+import requests
+from _automated_patches import build_automated_patches
+from _manual_patches import patches
+from _types import AllPatches, ResourcePatches
+
+LOGGER = logging.getLogger("cfnlint")
+
+BOTO_URL = "https://github.com/boto/botocore/archive/refs/heads/master.zip"
+SCHEMA_URL = (
+ "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"
+)
+
+
+def configure_logging():
+ """Setup Logging"""
+ ch = logging.StreamHandler()
+ ch.setLevel(logging.INFO)
+
+ LOGGER.setLevel(logging.INFO)
+ log_formatter = logging.Formatter(
+ "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
+ )
+ ch.setFormatter(log_formatter)
+
+ # make sure all other log handlers are removed before adding it back
+ for handler in LOGGER.handlers:
+ LOGGER.removeHandler(handler)
+ LOGGER.addHandler(ch)
+
+
+def build_resource_type_patches(
+ dir: str, resource_name: str, resource_patches: ResourcePatches
+):
+ LOGGER.info(f"Applying patches for {resource_name}")
+
+ resource_name = resource_name.lower().replace("::", "_")
+ output_path = Path("src/cfnlint/data/schemas/patches/extensions/all/")
+ resource_path = output_path / resource_name
+ if not resource_path.exists():
+ resource_path.mkdir(parents=True)
+ (resource_path / "__init__.py").touch()
+
+ output_file = resource_path / "boto.json"
+
+ d = []
+ boto_d = {}
+ for path, patch in resource_patches.items():
+ service_path = (
+ ["botocore-master/botocore/data"] + patch.source + ["service-2.json"]
+ )
+ with open(os.path.join(dir, *service_path), "r") as f:
+ boto_d = json.load(f)
+
+ for field in ["enum", "pattern"]:
+ value = boto_d.get("shapes", {}).get(patch.shape, {}).get(field)
+ if not value:
+ continue
+ if field == "pattern":
+ if value == ".*":
+ continue
+ try:
+ re.compile(value)
+ except Exception:
+ LOGGER.info(
+ (
+ f"Pattern {value!r} failed to "
+ "compile for resource "
+ f"{resource_name!r}"
+ )
+ )
+ continue
+ if value:
+ d.append(
+ {
+ "op": "add",
+ "path": f"{path}/{field}",
+ "value": (
+ sorted(value) if isinstance(value, list) else value
+ ),
+ }
+ )
+
+ if not d:
+ return
+ with open(output_file, "w+") as fh:
+ json.dump(
+ d,
+ fh,
+ indent=1,
+ separators=(",", ": "),
+ sort_keys=True,
+ )
+ fh.write("\n")
+
+
+def build_patches(
+ dir: str,
+ patches: AllPatches,
+):
+ for resource_name, patch in patches.items():
+ build_resource_type_patches(
+ dir, resource_name=resource_name, resource_patches=patch
+ )
+
+
+def main():
+ configure_logging()
+ with tempfile.TemporaryDirectory() as dir:
+ path = Path(dir)
+ boto_path = path / "botocore"
+ schema_path = path / "schemas"
+ r = requests.get(BOTO_URL)
+ z = zipfile.ZipFile(io.BytesIO(r.content))
+ z.extractall(boto_path)
+
+ r = requests.get(SCHEMA_URL)
+ z = zipfile.ZipFile(io.BytesIO(r.content))
+ z.extractall(schema_path)
+
+ _patches = patches
+ for k, v in patches.items():
+ _patches[k] = v
+ for k, v in build_automated_patches(boto_path, schema_path).items():
+ if k not in _patches:
+ _patches[k] = v
+ else:
+ for path, patch in v.items():
+ if path in _patches[k]:
+ LOGGER.info(f"Patch {path!r} already found in resource {k!r}")
+ else:
+ _patches[k][path] = patch
+
+ build_patches(boto_path, _patches)
+
+
+if __name__ == "__main__":
+ try:
+ main()
+ except (ValueError, TypeError) as e:
+ print(e)
+ LOGGER.error(ValueError)
diff --git a/scripts/update_schemas_from_boto.py b/scripts/update_schemas_from_boto.py
deleted file mode 100755
index 4a771e294b..0000000000
--- a/scripts/update_schemas_from_boto.py
+++ /dev/null
@@ -1,1094 +0,0 @@
-#!/usr/bin/env python
-"""
-Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
-SPDX-License-Identifier: MIT-0
-"""
-import io
-import json
-import logging
-import os
-import tempfile
-import zipfile
-from collections import namedtuple
-from typing import List
-
-import requests
-
-LOGGER = logging.getLogger("cfnlint")
-
-BOTO_URL = "https://github.com/boto/botocore/archive/refs/heads/master.zip"
-
-Patch = namedtuple("Patch", ["source", "shape", "path"])
-ResourcePatch = namedtuple("ResourcePatch", ["resource_type", "patches"])
-patches: List[ResourcePatch] = []
-patches.extend(
- [
- ResourcePatch(
- resource_type="AWS::AmazonMQ::Broker",
- patches=[
- Patch(
- source=["mq", "2017-11-27"],
- shape="DeploymentMode",
- path="/properties/DeploymentMode",
- ),
- Patch(
- source=["mq", "2017-11-27"],
- shape="EngineType",
- path="/properties/EngineType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::ApiGateway::RestApi",
- patches=[
- Patch(
- source=["apigateway", "2015-07-09"],
- shape="ApiKeySourceType",
- path="/properties/ApiKeySourceType",
- )
- ],
- ),
- ResourcePatch(
- resource_type="AWS::ApiGateway::Authorizer",
- patches=[
- Patch(
- source=["apigateway", "2015-07-09"],
- shape="AuthorizerType",
- path="/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::ApiGateway::GatewayResponse",
- patches=[
- Patch(
- source=["apigateway", "2015-07-09"],
- shape="GatewayResponseType",
- path="/properties/ResponseType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::ApplicationAutoScaling::ScalingPolicy",
- patches=[
- Patch(
- source=["application-autoscaling", "2016-02-06"],
- shape="PolicyType",
- path="/properties/PolicyType",
- ),
- Patch(
- source=["application-autoscaling", "2016-02-06"],
- shape="MetricType",
- path="/definitions/PredefinedMetricSpecification/properties/PredefinedMetricType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::AppSync::DataSource",
- patches=[
- Patch(
- source=["appsync", "2017-07-25"],
- shape="DataSourceType",
- path="/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::AppSync::GraphQLApi",
- patches=[
- Patch(
- source=["appsync", "2017-07-25"],
- shape="AuthenticationType",
- path="/properties/AuthenticationType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::AppSync::Resolver",
- patches=[
- Patch(
- source=["appsync", "2017-07-25"],
- shape="ResolverKind",
- path="/properties/Kind",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::AutoScaling::LaunchConfiguration",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="VolumeType",
- path="/definitions/BlockDevice/properties/VolumeType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::AutoScaling::ScalingPolicy",
- patches=[
- Patch(
- source=["autoscaling", "2011-01-01"],
- shape="MetricStatistic",
- path="/definitions/CustomizedMetricSpecification/properties/Statistic",
- ),
- Patch(
- source=["autoscaling", "2011-01-01"],
- shape="MetricType",
- path="/definitions/PredefinedMetricSpecification/properties/PredefinedMetricType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::AutoScalingPlans::ScalingPlan",
- patches=[
- Patch(
- source=["autoscaling-plans", "2018-01-06"],
- shape="ScalableDimension",
- path="/definitions/ScalingInstruction/properties/ScalableDimension",
- ),
- Patch(
- source=["autoscaling-plans", "2018-01-06"],
- shape="ServiceNamespace",
- path="/definitions/ScalingInstruction/properties/ServiceNamespace",
- ),
- Patch(
- source=["autoscaling-plans", "2018-01-06"],
- shape="PredictiveScalingMaxCapacityBehavior",
- path="/definitions/ScalingInstruction/properties/PredictiveScalingMaxCapacityBehavior",
- ),
- Patch(
- source=["autoscaling-plans", "2018-01-06"],
- shape="PredictiveScalingMode",
- path="/definitions/ScalingInstruction/properties/PredictiveScalingMode",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Budgets::Budget",
- patches=[
- Patch(
- source=["budgets", "2016-10-20"],
- shape="BudgetType",
- path="/definitions/BudgetData/properties/BudgetType",
- ),
- Patch(
- source=["budgets", "2016-10-20"],
- shape="TimeUnit",
- path="/definitions/BudgetData/properties/TimeUnit",
- ),
- Patch(
- source=["budgets", "2016-10-20"],
- shape="ComparisonOperator",
- path="/definitions/Notification/properties/ComparisonOperator",
- ),
- Patch(
- source=["budgets", "2016-10-20"],
- shape="NotificationType",
- path="/definitions/Notification/properties/NotificationType",
- ),
- Patch(
- source=["budgets", "2016-10-20"],
- shape="ThresholdType",
- path="/definitions/Notification/properties/ThresholdType",
- ),
- Patch(
- source=["budgets", "2016-10-20"],
- shape="SubscriptionType",
- path="/definitions/Subscriber/properties/SubscriptionType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CertificateManager::Certificate",
- patches=[
- Patch(
- source=["acm", "2015-12-08"],
- shape="ValidationMethod",
- path="/properties/ValidationMethod",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CloudFormation::StackSet",
- patches=[
- Patch(
- source=["cloudformation", "2010-05-15"],
- shape="PermissionModels",
- path="/properties/PermissionModel",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CloudFront::Distribution",
- patches=[
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="ViewerProtocolPolicy",
- path="/definitions/CacheBehavior/properties/ViewerProtocolPolicy",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="GeoRestrictionType",
- path="/definitions/GeoRestriction/properties/RestrictionType",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="HttpVersion",
- path="/definitions/DistributionConfig/properties/HttpVersion",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="EventType",
- path="/definitions/FunctionAssociation/properties/EventType",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="OriginProtocolPolicy",
- path="/definitions/LegacyCustomOrigin/properties/OriginProtocolPolicy",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="SslProtocol",
- path="/definitions/CustomOriginConfig/properties/OriginSSLProtocols/items",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="SslProtocol",
- path="/definitions/LegacyCustomOrigin/properties/OriginSSLProtocols/items",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="PriceClass",
- path="/definitions/DistributionConfig/properties/PriceClass",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="MinimumProtocolVersion",
- path="/definitions/ViewerCertificate/properties/MinimumProtocolVersion",
- ),
- Patch(
- source=["cloudfront", "2020-05-31"],
- shape="SSLSupportMethod",
- path="/definitions/ViewerCertificate/properties/SslSupportMethod",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CloudWatch::Alarm",
- patches=[
- Patch(
- source=["cloudwatch", "2010-08-01"],
- shape="ComparisonOperator",
- path="/properties/ComparisonOperator",
- ),
- Patch(
- source=["cloudwatch", "2010-08-01"],
- shape="Statistic",
- path="/properties/Statistic",
- ),
- Patch(
- source=["cloudwatch", "2010-08-01"],
- shape="StandardUnit",
- path="/properties/Unit",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodeBuild::Project",
- patches=[
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="ArtifactPackaging",
- path="/definitions/Artifacts/properties/Packaging",
- ),
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="ArtifactsType",
- path="/definitions/Artifacts/properties/Type",
- ),
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="ComputeType",
- path="/definitions/Environment/properties/ComputeType",
- ),
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="ImagePullCredentialsType",
- path="/definitions/Environment/properties/ImagePullCredentialsType",
- ),
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="EnvironmentType",
- path="/definitions/Environment/properties/Type",
- ),
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="CacheType",
- path="/definitions/ProjectCache/properties/Type",
- ),
- Patch(
- source=["codebuild", "2016-10-06"],
- shape="SourceType",
- path="/definitions/Source/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodeCommit::Repository",
- patches=[
- Patch(
- source=["codecommit", "2015-04-13"],
- shape="RepositoryTriggerEventEnum",
- path="/definitions/RepositoryTrigger/properties/Events/items",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodeCommit::Repository",
- patches=[
- Patch(
- source=["codecommit", "2015-04-13"],
- shape="RepositoryTriggerEventEnum",
- path="/definitions/RepositoryTrigger/properties/Events/items",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodeDeploy::Application",
- patches=[
- Patch(
- source=["codedeploy", "2014-10-06"],
- shape="ComputePlatform",
- path="/properties/ComputePlatform",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodeDeploy::DeploymentGroup",
- patches=[
- Patch(
- source=["codedeploy", "2014-10-06"],
- shape="AutoRollbackEvent",
- path="/definitions/AutoRollbackConfiguration/properties/Events/items",
- ),
- Patch(
- source=["codedeploy", "2014-10-06"],
- shape="DeploymentOption",
- path="/definitions/DeploymentStyle/properties/DeploymentOption",
- ),
- Patch(
- source=["codedeploy", "2014-10-06"],
- shape="DeploymentType",
- path="/definitions/DeploymentStyle/properties/DeploymentType",
- ),
- Patch(
- source=["codedeploy", "2014-10-06"],
- shape="TriggerEventType",
- path="/definitions/TriggerConfig/properties/TriggerEvents/items",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodeDeploy::DeploymentConfig",
- patches=[
- Patch(
- source=["codedeploy", "2014-10-06"],
- shape="MinimumHealthyHostsType",
- path="/definitions/MinimumHealthyHosts/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodePipeline::Pipeline",
- patches=[
- Patch(
- source=["codepipeline", "2015-07-09"],
- shape="ActionCategory",
- path="/definitions/ActionTypeId/properties/Category",
- ),
- Patch(
- source=["codepipeline", "2015-07-09"],
- shape="ActionOwner",
- path="/definitions/ActionTypeId/properties/Owner",
- ),
- Patch(
- source=["codepipeline", "2015-07-09"],
- shape="ArtifactStoreType",
- path="/definitions/ArtifactStore/properties/Type",
- ),
- Patch(
- source=["codepipeline", "2015-07-09"],
- shape="BlockerType",
- path="/definitions/BlockerDeclaration/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodePipeline::CustomActionType",
- patches=[
- Patch(
- source=["codepipeline", "2015-07-09"],
- shape="ActionConfigurationPropertyType",
- path="/definitions/ConfigurationProperties/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::CodePipeline::Webhook",
- patches=[
- Patch(
- source=["codepipeline", "2015-07-09"],
- shape="WebhookAuthenticationType",
- path="/properties/Authentication",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Cognito::UserPool",
- patches=[
- Patch(
- source=["cognito-idp", "2016-04-18"],
- shape="AliasAttributeType",
- path="/properties/AliasAttributes/items",
- ),
- Patch(
- source=["cognito-idp", "2016-04-18"],
- shape="UsernameAttributeType",
- path="/properties/UsernameAttributes/items",
- ),
- Patch(
- source=["cognito-idp", "2016-04-18"],
- shape="UserPoolMfaType",
- path="/properties/MfaConfiguration",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Cognito::UserPoolUser",
- patches=[
- Patch(
- source=["cognito-idp", "2016-04-18"],
- shape="DeliveryMediumType",
- path="/properties/DesiredDeliveryMediums/items",
- ),
- Patch(
- source=["cognito-idp", "2016-04-18"],
- shape="MessageActionType",
- path="/properties/MessageAction",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Cognito::UserPoolClient",
- patches=[
- Patch(
- source=["cognito-idp", "2016-04-18"],
- shape="ExplicitAuthFlowsType",
- path="/properties/ExplicitAuthFlows/items",
- )
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Config::ConfigRule",
- patches=[
- Patch(
- source=["config", "2014-11-12"],
- shape="Owner",
- path="/definitions/Source/properties/Owner",
- ),
- Patch(
- source=["config", "2014-11-12"],
- shape="EventSource",
- path="/definitions/SourceDetail/properties/EventSource",
- ),
- Patch(
- source=["config", "2014-11-12"],
- shape="MaximumExecutionFrequency",
- path="/definitions/SourceDetail/properties/MaximumExecutionFrequency",
- ),
- Patch(
- source=["config", "2014-11-12"],
- shape="MessageType",
- path="/definitions/SourceDetail/properties/MessageType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::DirectoryService::MicrosoftAD",
- patches=[
- Patch(
- source=["ds", "2015-04-16"],
- shape="DirectoryEdition",
- path="/properties/Edition",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::DirectoryService::SimpleAD",
- patches=[
- Patch(
- source=["ds", "2015-04-16"],
- shape="DirectorySize",
- path="/properties/Size",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::DLM::LifecyclePolicy",
- patches=[
- Patch(
- source=["dlm", "2018-01-12"],
- shape="ResourceTypeValues",
- path="/definitions/PolicyDetails/properties/ResourceTypes/items",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::DMS::Endpoint",
- patches=[
- Patch(
- source=["dms", "2016-01-01"],
- shape="DmsSslModeValue",
- path="/properties/SslMode",
- ),
- Patch(
- source=["dms", "2016-01-01"],
- shape="ReplicationEndpointTypeValue",
- path="/properties/EndpointType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::DynamoDB::Table",
- patches=[
- Patch(
- source=["dynamodb", "2012-08-10"],
- shape="ScalarAttributeType",
- path="/definitions/AttributeDefinition/properties/AttributeType",
- ),
- Patch(
- source=["dynamodb", "2012-08-10"],
- shape="BillingMode",
- path="/properties/BillingMode",
- ),
- Patch(
- source=["dynamodb", "2012-08-10"],
- shape="KeyType",
- path="/definitions/KeySchema/properties/KeyType",
- ),
- Patch(
- source=["dynamodb", "2012-08-10"],
- shape="ProjectionType",
- path="/definitions/Projection/properties/ProjectionType",
- ),
- Patch(
- source=["dynamodb", "2012-08-10"],
- shape="StreamViewType",
- path="/definitions/StreamSpecification/properties/StreamViewType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::CapacityReservation",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="EndDateType",
- path="/properties/EndDateType",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="InstanceMatchCriteria",
- path="/properties/InstanceMatchCriteria",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="CapacityReservationInstancePlatform",
- path="/properties/InstancePlatform",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::CustomerGateway",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="GatewayType",
- path="/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::EIP",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="DomainType",
- path="/properties/Domain",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::EC2Fleet",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="FleetOnDemandAllocationStrategy",
- path="/definitions/OnDemandOptionsRequest/properties/AllocationStrategy",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::Host",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="AutoPlacement",
- path="/properties/AutoPlacement",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::Instance",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="Affinity",
- path="/properties/Affinity",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="Tenancy",
- path="/properties/Tenancy",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::LaunchTemplate",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="ShutdownBehavior",
- path="/definitions/LaunchTemplateData/properties/InstanceInitiatedShutdownBehavior",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="MarketType",
- path="/definitions/InstanceMarketOptions/properties/MarketType",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="SpotInstanceInterruptionBehavior",
- path="/definitions/SpotOptions/properties/InstanceInterruptionBehavior",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="SpotInstanceType",
- path="/definitions/SpotOptions/properties/SpotInstanceType",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="VolumeType",
- path="/definitions/Ebs/properties/VolumeType",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="Tenancy",
- path="/definitions/Placement/properties/Tenancy",
- ),
- Patch(
- source=["ec2", "2016-11-15"],
- shape="ResourceType",
- path="/definitions/TagSpecification/properties/ResourceType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::NetworkAclEntry",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="RuleAction",
- path="/properties/RuleAction",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::NetworkInterfacePermission",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="InterfacePermissionType",
- path="/properties/Permission",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::PlacementGroup",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="PlacementGroupStrategy",
- path="/properties/Strategy",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EC2::SpotFleet",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="VolumeType",
- path="/definitions/EbsBlockDevice/properties/VolumeType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::ECS::TaskDefinition",
- patches=[
- Patch(
- source=["ecs", "2014-11-13"],
- shape="NetworkMode",
- path="/properties/NetworkMode",
- ),
- Patch(
- source=["ecs", "2014-11-13"],
- shape="ProxyConfigurationType",
- path="/definitions/ProxyConfiguration/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::EFS::FileSystem",
- patches=[
- Patch(
- source=["efs", "2015-02-01"],
- shape="TransitionToIARules",
- path="/definitions/LifecyclePolicy/properties/TransitionToIA",
- ),
- Patch(
- source=["efs", "2015-02-01"],
- shape="PerformanceMode",
- path="/properties/PerformanceMode",
- ),
- Patch(
- source=["efs", "2015-02-01"],
- shape="ThroughputMode",
- path="/properties/ThroughputMode",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Glue::Connection",
- patches=[
- Patch(
- source=["glue", "2017-03-31"],
- shape="ConnectionType",
- path="/definitions/ConnectionInput/properties/ConnectionType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Glue::Crawler",
- patches=[
- Patch(
- source=["glue", "2017-03-31"],
- shape="DeleteBehavior",
- path="/definitions/SchemaChangePolicy/properties/DeleteBehavior",
- ),
- Patch(
- source=["glue", "2017-03-31"],
- shape="UpdateBehavior",
- path="/definitions/SchemaChangePolicy/properties/UpdateBehavior",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Glue::Trigger",
- patches=[
- Patch(
- source=["glue", "2017-03-31"],
- shape="Logical",
- path="/definitions/Predicate/properties/Logical",
- ),
- Patch(
- source=["glue", "2017-03-31"],
- shape="LogicalOperator",
- path="/definitions/Condition/properties/LogicalOperator",
- ),
- Patch(
- source=["glue", "2017-03-31"],
- shape="TriggerType",
- path="/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::GuardDuty::Detector",
- patches=[
- Patch(
- source=["guardduty", "2017-11-28"],
- shape="FindingPublishingFrequency",
- path="/properties/FindingPublishingFrequency",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::GuardDuty::Filter",
- patches=[
- Patch(
- source=["guardduty", "2017-11-28"],
- shape="FilterAction",
- path="/properties/Action",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::GuardDuty::IPSet",
- patches=[
- Patch(
- source=["guardduty", "2017-11-28"],
- shape="IpSetFormat",
- path="/properties/Format",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::GuardDuty::ThreatIntelSet",
- patches=[
- Patch(
- source=["guardduty", "2017-11-28"],
- shape="ThreatIntelSetFormat",
- path="/properties/Format",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::IAM::AccessKey",
- patches=[
- Patch(
- source=["iam", "2010-05-08"],
- shape="statusType",
- path="/properties/Status",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::KinesisAnalyticsV2::Application",
- patches=[
- Patch(
- source=["kinesisanalyticsv2", "2018-05-23"],
- shape="RuntimeEnvironment",
- path="/properties/RuntimeEnvironment",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Lambda::Function",
- patches=[
- Patch(
- source=["lambda", "2015-03-31"],
- shape="Runtime",
- path="/properties/Runtime",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Lambda::EventSourceMapping",
- patches=[
- Patch(
- source=["lambda", "2015-03-31"],
- shape="EventSourcePosition",
- path="/properties/StartingPosition",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::OpsWorks::Instance",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="VolumeType",
- path="/definitions/EbsBlockDevice/properties/VolumeType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::OpsWorks::Layer",
- patches=[
- Patch(
- source=["ec2", "2016-11-15"],
- shape="VolumeType",
- path="/definitions/VolumeConfiguration/properties/VolumeType",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Route53::RecordSetGroup",
- patches=[
- Patch(
- source=["route53", "2013-04-01"],
- shape="ResourceRecordSetFailover",
- path="/definitions/RecordSet/properties/Failover",
- ),
- Patch(
- source=["route53", "2013-04-01"],
- shape="RRType",
- path="/definitions/RecordSet/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::Route53Resolver::ResolverEndpoint",
- patches=[
- Patch(
- source=["route53resolver", "2018-04-01"],
- shape="ResolverEndpointDirection",
- path="/properties/Direction",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::ServiceDiscovery::Service",
- patches=[
- Patch(
- source=["servicediscovery", "2017-03-14"],
- shape="RecordType",
- path="/definitions/DnsRecord/properties/Type",
- ),
- Patch(
- source=["servicediscovery", "2017-03-14"],
- shape="HealthCheckType",
- path="/definitions/HealthCheckConfig/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::SES::ReceiptRule",
- patches=[
- Patch(
- source=["ses", "2010-12-01"],
- shape="TlsPolicy",
- path="/definitions/Rule/properties/TlsPolicy",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::WAFRegional::Rule",
- patches=[
- Patch(
- source=["waf", "2015-08-24"],
- shape="PredicateType",
- path="/definitions/Predicate/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::WAF::Rule",
- patches=[
- Patch(
- source=["waf", "2015-08-24"],
- shape="PredicateType",
- path="/definitions/Predicate/properties/Type",
- ),
- ],
- ),
- ResourcePatch(
- resource_type="AWS::WorkSpaces::Workspace",
- patches=[
- Patch(
- source=["workspaces", "2015-04-08"],
- shape="RunningMode",
- path="/definitions/WorkspaceProperties/properties/RunningMode",
- ),
- Patch(
- source=["workspaces", "2015-04-08"],
- shape="Compute",
- path="/definitions/WorkspaceProperties/properties/ComputeTypeName",
- ),
- ],
- ),
- ]
-)
-
-
-def configure_logging():
- """Setup Logging"""
- ch = logging.StreamHandler()
- ch.setLevel(logging.INFO)
-
- LOGGER.setLevel(logging.INFO)
- log_formatter = logging.Formatter(
- "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
- )
- ch.setFormatter(log_formatter)
-
- # make sure all other log handlers are removed before adding it back
- for handler in LOGGER.handlers:
- LOGGER.removeHandler(handler)
- LOGGER.addHandler(ch)
-
-
-def build_resource_type_patches(dir: str, resource_patches: ResourcePatch):
- LOGGER.info(f"Applying patches for {resource_patches.resource_type}")
-
- resource_name = resource_patches.resource_type.lower().replace("::", "_")
- output_dir = os.path.join("src/cfnlint/data/schemas/patches/extensions/all/")
- output_file = os.path.join(
- output_dir,
- resource_name,
- "boto.json",
- )
-
- with open(output_file, "w+") as fh:
- d = []
- boto_d = {}
- for patch in resource_patches.patches:
- enums = []
- service_path = (
- ["botocore-master/botocore/data"] + patch.source + ["service-2.json"]
- )
- with open(os.path.join(dir, *service_path), "r") as f:
- boto_d = json.load(f)
-
- enums = boto_d.get("shapes").get(patch.shape).get("enum") # type: ignore
- d.append(
- {
- "op": "add",
- "path": f"{patch.path}/enum",
- "value": sorted(enums),
- }
- )
-
- json.dump(
- d,
- fh,
- indent=1,
- separators=(",", ": "),
- sort_keys=True,
- )
- fh.write("\n")
-
-
-def build_patches(dir: str):
- for patch in patches:
- build_resource_type_patches(dir, resource_patches=patch)
-
-
-def main():
- """main function"""
- configure_logging()
- with tempfile.TemporaryDirectory() as dir:
- r = requests.get(BOTO_URL)
- z = zipfile.ZipFile(io.BytesIO(r.content))
- z.extractall(dir)
-
- build_patches(dir)
-
-
-if __name__ == "__main__":
- try:
- main()
- except (ValueError, TypeError) as e:
- print(e)
- LOGGER.error(ValueError)
diff --git a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json
index 33a84eaefd..eb8e2ccb34 100644
--- a/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/123ba181485ae293d5bd09722af0c19d5a0d14c62111ff864923fc7b7960dda6.meta.json
@@ -1 +1 @@
-{"etag": "\"b577498f255ee4b66aecffbab2190e21\"", "url": "https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"79550b0fd6afdc26f24e43ae91b08f7e\"", "url": "https://schema.cloudformation.eu-south-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json b/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json
index c63413b557..04c5c9b74f 100644
--- a/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/164e1bfc2823fbd49d8d0e7163ebf32b2b6653d7edfe98a64577daae0b481c38.meta.json
@@ -1 +1 @@
-{"etag": "\"88b31efd15169716b9161d47fc7d101d\"", "url": "https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip"}
+{"etag": "\"582e66fdd371fbe35fb64e61d66fb1fc\"", "url": "https://schema.cloudformation.cn-north-1.amazonaws.com.cn/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json b/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json
index bc9851c747..693a48faed 100644
--- a/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/18624fcc4a1c571691d10b2508e6be565e4752bbc10d9552de8df8f81348c42b.meta.json
@@ -1 +1 @@
-{"etag": "\"0e8c43d597d228c1db8bb9178e8b8f37\"", "url": "https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"32378cf857230304a78969a9fc8e399f\"", "url": "https://schema.cloudformation.us-gov-east-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json
index ca8f00819b..b758c36d4e 100644
--- a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json
@@ -1 +1 @@
-{"etag": "\"4f087289a61ed305e32017e7ff323e34\"", "url": "https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"7a59eb487710abed8b72a748723a3ec9\"", "url": "https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json b/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json
index ea5272ecc7..987a490f5b 100644
--- a/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json
@@ -1 +1 @@
-{"etag": "\"582340e29e3bfe3a8d51b4b683aaaf69\"", "url": "https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"eafcbcab38e405e27ad39d2e691832ab\"", "url": "https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json b/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json
index a04e0e670a..1c485cc265 100644
--- a/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json
@@ -1 +1 @@
-{"etag": "\"78746b74b820ee23ca1d6a91da60731c\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"02ecc29742d6f7a150d1c613fe312822\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json b/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json
index 6272c1e047..914088fb3c 100644
--- a/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/276cecfeb1ec5e608e2aaa06925a2da57e9907e4a512c10ddae70b98b4dada43.meta.json
@@ -1 +1 @@
-{"etag": "\"efc2d0aabd4d4b8673fa5e49fc477f96\"", "url": "https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"c31aee518eb6f660471250813ca6e302\"", "url": "https://schema.cloudformation.eu-west-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json b/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json
index ff65f5c03a..3a7d78b155 100644
--- a/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/371e40c90b2e47c99f6e275e060ee83a3fbf0a0fb76625ba46dbe42abd34333c.meta.json
@@ -1 +1 @@
-{"etag": "\"dc2ca21b2e7a67de151ace3ba490376c\"", "url": "https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip"}
+{"etag": "\"2ac470a48a5af254c6dc9ad3dbd00920\"", "url": "https://schema.cloudformation.cn-northwest-1.amazonaws.com.cn/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json b/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json
index 825cd17306..2789cf984f 100644
--- a/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/42155835f382d82337be3d2bf832bada376aa3fe15197e3bb0e9290ff8719b4e.meta.json
@@ -1 +1 @@
-{"etag": "\"16c4d9c9042da148d7d9cd90c06c796c\"", "url": "https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"6060f9b272582b995679c257b1518c62\"", "url": "https://schema.cloudformation.af-south-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json
index 18a3a846bc..4900ba9e92 100644
--- a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json
@@ -1 +1 @@
-{"etag": "\"c36690a2f5897235f191b750656a5ff7\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"3888614e1b025c1a51640a8454e64261\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/49ed0265aaab90ce485c07e02ea671e5aa3b299156f53fa9d1fd8eeabec5a268.meta.json b/src/cfnlint/data/DownloadsMetadata/49ed0265aaab90ce485c07e02ea671e5aa3b299156f53fa9d1fd8eeabec5a268.meta.json
index 5cde5846e1..0f5cfeb907 100644
--- a/src/cfnlint/data/DownloadsMetadata/49ed0265aaab90ce485c07e02ea671e5aa3b299156f53fa9d1fd8eeabec5a268.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/49ed0265aaab90ce485c07e02ea671e5aa3b299156f53fa9d1fd8eeabec5a268.meta.json
@@ -1 +1 @@
-{"etag": "\"d36e2dbdf974f8c3251e2289b371aabf\"", "url": "https://schema.cloudformation.ap-southeast-5.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"cd1ef321cad981eb8210a5292cb3174a\"", "url": "https://schema.cloudformation.ap-southeast-5.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json
index be70ac3e91..4703816a4d 100644
--- a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json
@@ -1 +1 @@
-{"etag": "\"5d2e65b0fbf8d81118d7078424180671\"", "url": "https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"aaf517e66ce35d51e7af65da0366d37e\"", "url": "https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json
index 48c6d1b3c8..e4ccb50b08 100644
--- a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json
@@ -1 +1 @@
-{"etag": "\"78a02660ca7b8cec013abb5e6e48b204\"", "url": "https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"4ae91fdda0a97fe1064843869b1bacbe\"", "url": "https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json
index 85d8c56166..5bbd0239b1 100644
--- a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json
@@ -1 +1 @@
-{"etag": "\"bc7f4b6b06ba62b79b946d6c109e8d8e\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"a77591fe3f9644fff61577957c543da6\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json b/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json
index bc53070c03..52ebd552f9 100644
--- a/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json
@@ -1 +1 @@
-{"etag": "\"4c75ad8009803a0d162476afc69d38d1\"", "url": "https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"8ba35ab45a71e3d6973b6b20c54e33d8\"", "url": "https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json b/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json
index 8a5b6e6557..8bc9c18062 100644
--- a/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json
@@ -1 +1 @@
-{"etag": "\"bd4551e08025b416d7747d9a74e447b5\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"9f464d820837dfe9f89f8fbc8a5f7ff3\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json b/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json
index 63d8028618..520d73f651 100644
--- a/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/8adeabf0a09b37a8ed924aea799005947e4a4542365d35fd75466abcf306eeca.meta.json
@@ -1 +1 @@
-{"etag": "\"ce40cd061dc0eeb64ee739c563229073\"", "url": "https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"1e236db8f28b0fa10048ada8a9528959\"", "url": "https://schema.cloudformation.ap-northeast-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json b/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json
index 679a770b1d..56317dfdc8 100644
--- a/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/8b8b0cee4df1ef0947a8289e8ec0c67869b7533eabab32ecfc0a00cb19e55a5f.meta.json
@@ -1 +1 @@
-{"etag": "\"ffb5bd2d6e45dcda0665347144e60324\"", "url": "https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"5d35a336aed35cd5ef29c8fdec096095\"", "url": "https://schema.cloudformation.ap-southeast-3.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json
index b620d72008..1892c80b5a 100644
--- a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json
@@ -1 +1 @@
-{"etag": "\"5ef8b889070af2824e94997af16a8951\"", "url": "https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"e272513fa83ff1a81eb94e830549b463\"", "url": "https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json b/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json
index 4c89795216..ba17fe34e4 100644
--- a/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json
@@ -1 +1 @@
-{"etag": "\"8de98a04b7e80d5a52d5bfee9c3bba66\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"4f8b7669b62d644ea415e6cb39b47b98\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json b/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json
index ae3f5c2279..27ea1365bd 100644
--- a/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json
@@ -1 +1 @@
-{"etag": "\"e3b02ac9e0c7eb55da386785a319918a\"", "url": "https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"36d18f168e2856eadca2ee3be5bb23ec\"", "url": "https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json
index d51be4974a..f3fccad9d7 100644
--- a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json
@@ -1 +1 @@
-{"etag": "\"c77b44f369e022992a8561dedd2e182d\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"2f3919b95ac2db80aca5e5764f0aafc2\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json b/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json
index abf0962e6f..34f4850f0e 100644
--- a/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json
@@ -1 +1 @@
-{"etag": "\"b6bab1881e1729e50ca99bcb9b838a2c\"", "url": "https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"1fa39d73d61a09d97d9516fe76fcab2d\"", "url": "https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json b/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json
index d17f5030f2..90ed67074a 100644
--- a/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json
@@ -1 +1 @@
-{"etag": "\"ff5d2c12d060f95121f476490595058d\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"a5a14d3a639f37b467b6055916815673\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json b/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json
index 1390c642d6..e914456d9e 100644
--- a/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/df4945435575c690a2651bb31e7a9b48972142778e1ff452383ede2ad4bac3d7.meta.json
@@ -1 +1 @@
-{"etag": "\"5fef8788909211392393eb88e14fbfff\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"2f9b529b5f829d278fa28ac1fae6930d\"", "url": "https://schema.cloudformation.eu-south-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json
index f3ec31f397..0d1d85e9e0 100644
--- a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json
@@ -1 +1 @@
-{"etag": "\"e178c8c26a1d0c9bbe225025e0efddc8\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"928dc499578f6adad0cb829602f77963\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json
index b32ba94b0b..40c77e65bf 100644
--- a/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/e8b3dacc1675b478e8c7392b51f41467cf908a34e6b4c3fb3e97e2b584f651ca.meta.json
@@ -1 +1 @@
-{"etag": "\"9f3f49fa5edac419d42b8ff398042357\"", "url": "https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"2c37272a0ccd79c645d8a903b896f34c\"", "url": "https://schema.cloudformation.eu-west-3.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json
index 3a7d894ceb..2da2249740 100644
--- a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json
@@ -1 +1 @@
-{"etag": "\"7fcc416c6601bea463b4e1e641f93d02\"", "url": "https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"cb1d34db2445eaefb52a0140d342d057\"", "url": "https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json
index 4140152181..f836661541 100644
--- a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json
@@ -1 +1 @@
-{"etag": "\"2516dd8659b69bae478ec25a64778cdb\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"08930191250b4857f4c9896d3be845f1\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json b/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json
index 190c50d320..2f5d1c6daf 100644
--- a/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json
@@ -1 +1 @@
-{"etag": "\"d4ebfc950dc4c6f95377b86a34a1af7a\"", "url": "https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"f50b82e88e3a37feb0c3e344de9841aa\"", "url": "https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json
index a29561a619..d84cd574d0 100644
--- a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json
@@ -1 +1 @@
-{"etag": "\"5d424d4ce01f84e770b4e0367e32b98b\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"bd05733b667d1cae784c1e5417a7dd99\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json b/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json
index c782e89e4f..b80d5003db 100644
--- a/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json
@@ -1 +1 @@
-{"etag": "\"020c49ca994a2f3c1f2183b890ebfa75\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"3bdc51633fb492382bd07a5bcdc1ebbd\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json
index 369dea0b6d..b251a80be8 100644
--- a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json
@@ -1 +1 @@
-{"etag": "\"be78f70aa2f9fcf03ab6fbb1ae2ab565\"", "url": "https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"6eed89ccd1fc53bf21f45b40ad89308d\"", "url": "https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json b/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json
index f4038d4ea6..1335ef2221 100644
--- a/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json
+++ b/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json
@@ -1 +1 @@
-{"etag": "\"126060e994baed7d4a156ad777cc3287\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"}
+{"etag": "\"03c4170bd3be15a1e5cbe4e9dea6e183\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"}
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_accessanalyzer_analyzer/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_accessanalyzer_analyzer/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_accessanalyzer_analyzer/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_accessanalyzer_analyzer/boto.json
new file mode 100644
index 0000000000..f6ddc98937
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_accessanalyzer_analyzer/boto.json
@@ -0,0 +1,17 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/AnalyzerName/pattern",
+ "value": "[A-Za-z][A-Za-z0-9_.-]*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/Type/enum",
+ "value": [
+ "ACCOUNT",
+ "ACCOUNT_UNUSED_ACCESS",
+ "ORGANIZATION",
+ "ORGANIZATION_UNUSED_ACCESS"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_certificateauthority/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_certificateauthority/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_certificateauthority/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_certificateauthority/boto.json
new file mode 100644
index 0000000000..4c03fcd262
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_certificateauthority/boto.json
@@ -0,0 +1,19 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/KeyStorageSecurityStandard/enum",
+ "value": [
+ "CCPC_LEVEL_1_OR_HIGHER",
+ "FIPS_140_2_LEVEL_2_OR_HIGHER",
+ "FIPS_140_2_LEVEL_3_OR_HIGHER"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/UsageMode/enum",
+ "value": [
+ "GENERAL_PURPOSE",
+ "SHORT_LIVED_CERTIFICATE"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_permission/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_permission/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_permission/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_permission/boto.json
new file mode 100644
index 0000000000..b57b011a90
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_acmpca_permission/boto.json
@@ -0,0 +1,17 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/CertificateAuthorityArn/pattern",
+ "value": "arn:[\\w+=/,.@-]+:acm-pca:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/Principal/pattern",
+ "value": "[^*]+"
+ },
+ {
+ "op": "add",
+ "path": "/properties/SourceAccount/pattern",
+ "value": "[0-9]+"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_broker/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_broker/boto.json
index 35a39719e8..9b49d196bb 100644
--- a/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_broker/boto.json
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_broker/boto.json
@@ -1,4 +1,20 @@
[
+ {
+ "op": "add",
+ "path": "/properties/AuthenticationStrategy/enum",
+ "value": [
+ "LDAP",
+ "SIMPLE"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/DataReplicationMode/enum",
+ "value": [
+ "CRDR",
+ "NONE"
+ ]
+ },
{
"op": "add",
"path": "/properties/DeploymentMode/enum",
@@ -15,5 +31,13 @@
"ACTIVEMQ",
"RABBITMQ"
]
+ },
+ {
+ "op": "add",
+ "path": "/properties/StorageType/enum",
+ "value": [
+ "EBS",
+ "EFS"
+ ]
}
]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_configuration/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_configuration/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_configuration/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_configuration/boto.json
new file mode 100644
index 0000000000..a7b5428370
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_amazonmq_configuration/boto.json
@@ -0,0 +1,18 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/AuthenticationStrategy/enum",
+ "value": [
+ "LDAP",
+ "SIMPLE"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/EngineType/enum",
+ "value": [
+ "ACTIVEMQ",
+ "RABBITMQ"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_amplify_app/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_amplify_app/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_amplify_app/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_amplify_app/boto.json
new file mode 100644
index 0000000000..0816f12386
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_amplify_app/boto.json
@@ -0,0 +1,7 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/AccessToken/pattern",
+ "value": "(?s).+"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appconfig_extension/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appconfig_extension/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appconfig_extension/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appconfig_extension/boto.json
new file mode 100644
index 0000000000..fa7086e68f
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appconfig_extension/boto.json
@@ -0,0 +1,7 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^[^\\/#:\\n]{1,64}$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appflow_connectorprofile/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appflow_connectorprofile/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appintegrations_application/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appintegrations_application/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appintegrations_dataintegration/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appintegrations_dataintegration/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appintegrations_eventintegration/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appintegrations_eventintegration/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalabletarget/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalabletarget/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalabletarget/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalabletarget/boto.json
new file mode 100644
index 0000000000..58c29e4a42
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalabletarget/boto.json
@@ -0,0 +1,52 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/ServiceNamespace/enum",
+ "value": [
+ "appstream",
+ "cassandra",
+ "comprehend",
+ "custom-resource",
+ "dynamodb",
+ "ec2",
+ "ecs",
+ "elasticache",
+ "elasticmapreduce",
+ "kafka",
+ "lambda",
+ "neptune",
+ "rds",
+ "sagemaker",
+ "workspaces"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/ScalableDimension/enum",
+ "value": [
+ "appstream:fleet:DesiredCapacity",
+ "cassandra:table:ReadCapacityUnits",
+ "cassandra:table:WriteCapacityUnits",
+ "comprehend:document-classifier-endpoint:DesiredInferenceUnits",
+ "comprehend:entity-recognizer-endpoint:DesiredInferenceUnits",
+ "custom-resource:ResourceType:Property",
+ "dynamodb:index:ReadCapacityUnits",
+ "dynamodb:index:WriteCapacityUnits",
+ "dynamodb:table:ReadCapacityUnits",
+ "dynamodb:table:WriteCapacityUnits",
+ "ec2:spot-fleet-request:TargetCapacity",
+ "ecs:service:DesiredCount",
+ "elasticache:replication-group:NodeGroups",
+ "elasticache:replication-group:Replicas",
+ "elasticmapreduce:instancegroup:InstanceCount",
+ "kafka:broker-storage:VolumeSize",
+ "lambda:function:ProvisionedConcurrency",
+ "neptune:cluster:ReadReplicaCount",
+ "rds:cluster:ReadReplicaCount",
+ "sagemaker:inference-component:DesiredCopyCount",
+ "sagemaker:variant:DesiredInstanceCount",
+ "sagemaker:variant:DesiredProvisionedConcurrency",
+ "workspaces:workspacespool:DesiredUserSessions"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json
index e4f8c9a905..7a98f1835b 100644
--- a/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_applicationautoscaling_scalingpolicy/boto.json
@@ -1,12 +1,4 @@
[
- {
- "op": "add",
- "path": "/properties/PolicyType/enum",
- "value": [
- "StepScaling",
- "TargetTrackingScaling"
- ]
- },
{
"op": "add",
"path": "/definitions/PredefinedMetricSpecification/properties/PredefinedMetricType/enum",
@@ -39,5 +31,68 @@
"SageMakerVariantProvisionedConcurrencyUtilization",
"WorkSpacesAverageUserSessionsCapacityUtilization"
]
+ },
+ {
+ "op": "add",
+ "path": "/properties/PolicyName/pattern",
+ "value": "\\p{Print}+"
+ },
+ {
+ "op": "add",
+ "path": "/properties/ServiceNamespace/enum",
+ "value": [
+ "appstream",
+ "cassandra",
+ "comprehend",
+ "custom-resource",
+ "dynamodb",
+ "ec2",
+ "ecs",
+ "elasticache",
+ "elasticmapreduce",
+ "kafka",
+ "lambda",
+ "neptune",
+ "rds",
+ "sagemaker",
+ "workspaces"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/ScalableDimension/enum",
+ "value": [
+ "appstream:fleet:DesiredCapacity",
+ "cassandra:table:ReadCapacityUnits",
+ "cassandra:table:WriteCapacityUnits",
+ "comprehend:document-classifier-endpoint:DesiredInferenceUnits",
+ "comprehend:entity-recognizer-endpoint:DesiredInferenceUnits",
+ "custom-resource:ResourceType:Property",
+ "dynamodb:index:ReadCapacityUnits",
+ "dynamodb:index:WriteCapacityUnits",
+ "dynamodb:table:ReadCapacityUnits",
+ "dynamodb:table:WriteCapacityUnits",
+ "ec2:spot-fleet-request:TargetCapacity",
+ "ecs:service:DesiredCount",
+ "elasticache:replication-group:NodeGroups",
+ "elasticache:replication-group:Replicas",
+ "elasticmapreduce:instancegroup:InstanceCount",
+ "kafka:broker-storage:VolumeSize",
+ "lambda:function:ProvisionedConcurrency",
+ "neptune:cluster:ReadReplicaCount",
+ "rds:cluster:ReadReplicaCount",
+ "sagemaker:inference-component:DesiredCopyCount",
+ "sagemaker:variant:DesiredInstanceCount",
+ "sagemaker:variant:DesiredProvisionedConcurrency",
+ "workspaces:workspacespool:DesiredUserSessions"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/PolicyType/enum",
+ "value": [
+ "StepScaling",
+ "TargetTrackingScaling"
+ ]
}
]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblock/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblock/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblock/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblock/boto.json
new file mode 100644
index 0000000000..33fe5fa1c8
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblock/boto.json
@@ -0,0 +1,15 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+ },
+ {
+ "op": "add",
+ "path": "/definitions/PackagingType/enum",
+ "value": [
+ "APPSTREAM2",
+ "CUSTOM"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblockbuilder/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblockbuilder/boto.json
new file mode 100644
index 0000000000..dc8aa7c645
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_appblockbuilder/boto.json
@@ -0,0 +1,19 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+ },
+ {
+ "op": "add",
+ "path": "/definitions/PlatformType/enum",
+ "value": [
+ "WINDOWS_SERVER_2019"
+ ]
+ },
+ {
+ "op": "add",
+ "path": "/properties/IamRoleArn/pattern",
+ "value": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_application/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_application/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_application/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_application/boto.json
new file mode 100644
index 0000000000..78c9339f55
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_application/boto.json
@@ -0,0 +1,12 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+ },
+ {
+ "op": "add",
+ "path": "/definitions/Arn/pattern",
+ "value": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_entitlement/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_entitlement/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_entitlement/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_entitlement/boto.json
new file mode 100644
index 0000000000..1e3200ebf5
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_entitlement/boto.json
@@ -0,0 +1,20 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/StackName/pattern",
+ "value": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/AppVisibility/enum",
+ "value": [
+ "ALL",
+ "ASSOCIATED"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_imagebuilder/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_imagebuilder/boto.json
new file mode 100644
index 0000000000..2e057ac160
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appstream_imagebuilder/boto.json
@@ -0,0 +1,17 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/ImageArn/pattern",
+ "value": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/IamRoleArn/pattern",
+ "value": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_domainname/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_domainname/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_domainname/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_domainname/boto.json
new file mode 100644
index 0000000000..5983722157
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_domainname/boto.json
@@ -0,0 +1,7 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Description/pattern",
+ "value": "^.*$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_functionconfiguration/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_functionconfiguration/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_functionconfiguration/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_functionconfiguration/boto.json
new file mode 100644
index 0000000000..3cc817afef
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_functionconfiguration/boto.json
@@ -0,0 +1,22 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "[_A-Za-z][_0-9A-Za-z]*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/DataSourceName/pattern",
+ "value": "[_A-Za-z][_0-9A-Za-z]*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/RequestMappingTemplate/pattern",
+ "value": "^.*$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/ResponseMappingTemplate/pattern",
+ "value": "^.*$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_resolver/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_resolver/boto.json
index 91158a262f..5394860acb 100644
--- a/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_resolver/boto.json
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_appsync_resolver/boto.json
@@ -1,4 +1,29 @@
[
+ {
+ "op": "add",
+ "path": "/properties/TypeName/pattern",
+ "value": "[_A-Za-z][_0-9A-Za-z]*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/FieldName/pattern",
+ "value": "[_A-Za-z][_0-9A-Za-z]*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/DataSourceName/pattern",
+ "value": "[_A-Za-z][_0-9A-Za-z]*"
+ },
+ {
+ "op": "add",
+ "path": "/properties/RequestMappingTemplate/pattern",
+ "value": "^.*$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/ResponseMappingTemplate/pattern",
+ "value": "^.*$"
+ },
{
"op": "add",
"path": "/properties/Kind/enum",
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_datacatalog/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_datacatalog/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_namedquery/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_namedquery/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_namedquery/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_namedquery/boto.json
new file mode 100644
index 0000000000..cbddac217a
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_namedquery/boto.json
@@ -0,0 +1,7 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/WorkGroup/pattern",
+ "value": "[a-zA-Z0-9._-]{1,128}"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_preparedstatement/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_preparedstatement/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_preparedstatement/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_preparedstatement/boto.json
new file mode 100644
index 0000000000..850447ae03
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_athena_preparedstatement/boto.json
@@ -0,0 +1,12 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/StatementName/pattern",
+ "value": "[a-zA-Z_][a-zA-Z0-9_@:]{1,256}"
+ },
+ {
+ "op": "add",
+ "path": "/properties/WorkGroup/pattern",
+ "value": "[a-zA-Z0-9._-]{1,128}"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_auditmanager_assessment/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_auditmanager_assessment/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_auditmanager_assessment/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_auditmanager_assessment/boto.json
new file mode 100644
index 0000000000..986c97732c
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_auditmanager_assessment/boto.json
@@ -0,0 +1,7 @@
+[
+ {
+ "op": "add",
+ "path": "/definitions/AssessmentDescription/pattern",
+ "value": "^[\\w\\W\\s\\S]*$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_lifecyclehook/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_lifecyclehook/boto.json
new file mode 100644
index 0000000000..a28679873b
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_lifecyclehook/boto.json
@@ -0,0 +1,12 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/LifecycleHookName/pattern",
+ "value": "[A-Za-z0-9\\-_\\/]+"
+ },
+ {
+ "op": "add",
+ "path": "/properties/NotificationMetadata/pattern",
+ "value": "[\\u0009\\u000A\\u000D\\u0020-\\u007e]+"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_scheduledaction/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_scheduledaction/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_warmpool/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_warmpool/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_warmpool/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_warmpool/boto.json
new file mode 100644
index 0000000000..f94d9f7cd3
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_autoscaling_warmpool/boto.json
@@ -0,0 +1,11 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/PoolState/enum",
+ "value": [
+ "Hibernated",
+ "Running",
+ "Stopped"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_b2bi_capability/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_b2bi_capability/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_b2bi_profile/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_b2bi_profile/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_b2bi_transformer/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_b2bi_transformer/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_backupvault/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_backupvault/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_framework/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_framework/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_framework/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_framework/boto.json
new file mode 100644
index 0000000000..3462b14cb4
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_backup_framework/boto.json
@@ -0,0 +1,7 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/FrameworkDescription/pattern",
+ "value": ".*\\S.*"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/boto.json
new file mode 100644
index 0000000000..eeece2d31d
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/boto.json
@@ -0,0 +1,10 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Type/enum",
+ "value": [
+ "MANAGED",
+ "UNMANAGED"
+ ]
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_budgets_budgetsaction/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_budgets_budgetsaction/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_budgets_budgetsaction/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_budgets_budgetsaction/boto.json
new file mode 100644
index 0000000000..e1181bfb7b
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_budgets_budgetsaction/boto.json
@@ -0,0 +1,12 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/BudgetName/pattern",
+ "value": "^(?![^:\\\\]*/action/|(?i).*.*)[^:\\\\]+$"
+ },
+ {
+ "op": "add",
+ "path": "/properties/ExecutionRoleArn/pattern",
+ "value": "^arn:aws(-cn|-us-gov|-iso|-iso-[a-z]{1})?:iam::\\d{12}:role(\\u002F[\\u0021-\\u007F]+\\u002F|\\u002F)[\\w+=,.@-]+$"
+ }
+]
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ce_costcategory/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ce_costcategory/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ce_costcategory/boto.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ce_costcategory/boto.json
new file mode 100644
index 0000000000..58684b8917
--- /dev/null
+++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ce_costcategory/boto.json
@@ -0,0 +1,12 @@
+[
+ {
+ "op": "add",
+ "path": "/properties/Name/pattern",
+ "value": "^(?! )[\\p{L}\\p{N}\\p{Z}-_]*(?<0-9A-Za-z_.,:)(!= ]+$",
- "type": "string"
- },
- "ValuesMap": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/FilterValue"
- },
- "type": "array"
- }
- },
- "required": [
- "Expression",
- "ValuesMap"
- ],
- "type": "object"
- },
- "FilterValue": {
- "additionalProperties": false,
- "properties": {
- "Value": {
- "maxLength": 1024,
- "minLength": 0,
- "type": "string"
- },
- "ValueReference": {
- "maxLength": 128,
- "minLength": 2,
- "pattern": "^:[A-Za-z0-9_]+$",
- "type": "string"
- }
- },
- "required": [
- "ValueReference",
- "Value"
- ],
- "type": "object"
- },
- "FormatOptions": {
- "additionalProperties": false,
- "properties": {
- "Csv": {
- "$ref": "#/definitions/CsvOptions"
- },
- "Excel": {
- "$ref": "#/definitions/ExcelOptions"
- },
- "Json": {
- "$ref": "#/definitions/JsonOptions"
- }
- },
- "type": "object"
- },
- "Input": {
- "additionalProperties": false,
- "properties": {
- "DataCatalogInputDefinition": {
- "$ref": "#/definitions/DataCatalogInputDefinition"
- },
- "DatabaseInputDefinition": {
- "$ref": "#/definitions/DatabaseInputDefinition"
- },
- "Metadata": {
- "$ref": "#/definitions/Metadata"
- },
- "S3InputDefinition": {
- "$ref": "#/definitions/S3Location"
- }
- },
- "type": "object"
- },
- "JsonOptions": {
- "additionalProperties": false,
- "properties": {
- "MultiLine": {
- "type": "boolean"
- }
- },
- "type": "object"
- },
- "Metadata": {
- "additionalProperties": false,
- "properties": {
- "SourceArn": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "PathOptions": {
- "additionalProperties": false,
- "properties": {
- "FilesLimit": {
- "$ref": "#/definitions/FilesLimit"
- },
- "LastModifiedDateCondition": {
- "$ref": "#/definitions/FilterExpression"
- },
- "Parameters": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/PathParameter"
- },
- "type": "array"
- }
- },
- "type": "object"
- },
- "PathParameter": {
- "additionalProperties": false,
- "properties": {
- "DatasetParameter": {
- "$ref": "#/definitions/DatasetParameter"
- },
- "PathParameterName": {
- "$ref": "#/definitions/PathParameterName"
- }
- },
- "required": [
- "PathParameterName",
- "DatasetParameter"
- ],
- "type": "object"
- },
- "PathParameterName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "S3Location": {
- "additionalProperties": false,
- "properties": {
- "Bucket": {
- "type": "string"
- },
- "Key": {
- "type": "string"
- }
- },
- "required": [
- "Bucket"
- ],
- "type": "object"
- },
- "Tag": {
- "additionalProperties": false,
- "properties": {
- "Key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "Value": {
- "maxLength": 256,
- "minLength": 0,
- "type": "string"
- }
- },
- "required": [
- "Value",
- "Key"
- ],
- "type": "object"
- }
- },
- "primaryIdentifier": [
- "/properties/Name"
- ],
- "properties": {
- "Format": {
- "enum": [
- "CSV",
- "JSON",
- "PARQUET",
- "EXCEL",
- "ORC"
- ],
- "type": "string"
- },
- "FormatOptions": {
- "$ref": "#/definitions/FormatOptions"
- },
- "Input": {
- "$ref": "#/definitions/Input"
- },
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "PathOptions": {
- "$ref": "#/definitions/PathOptions"
- },
- "Tags": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/Tag"
- },
- "type": "array",
- "uniqueItems": false
- }
- },
- "required": [
- "Name",
- "Input"
- ],
- "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git",
- "taggable": true,
- "typeName": "AWS::DataBrew::Dataset"
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-job.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-job.json
deleted file mode 100644
index 3119fb255d..0000000000
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-job.json
+++ /dev/null
@@ -1,565 +0,0 @@
-{
- "additionalProperties": false,
- "createOnlyProperties": [
- "/properties/Name",
- "/properties/Type",
- "/properties/Tags"
- ],
- "definitions": {
- "AllowedStatistics": {
- "additionalProperties": false,
- "properties": {
- "Statistics": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/Statistic"
- },
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "Statistics"
- ],
- "type": "object"
- },
- "ColumnSelector": {
- "additionalProperties": false,
- "properties": {
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "Regex": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "type": "object"
- },
- "ColumnStatisticsConfiguration": {
- "additionalProperties": false,
- "properties": {
- "Selectors": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/ColumnSelector"
- },
- "minItems": 1,
- "type": "array"
- },
- "Statistics": {
- "$ref": "#/definitions/StatisticsConfiguration"
- }
- },
- "required": [
- "Statistics"
- ],
- "type": "object"
- },
- "CsvOutputOptions": {
- "additionalProperties": false,
- "properties": {
- "Delimiter": {
- "maxLength": 1,
- "minLength": 1,
- "type": "string"
- }
- },
- "type": "object"
- },
- "DataCatalogOutput": {
- "additionalProperties": false,
- "properties": {
- "CatalogId": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "DatabaseName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "DatabaseOptions": {
- "$ref": "#/definitions/DatabaseTableOutputOptions"
- },
- "Overwrite": {
- "type": "boolean"
- },
- "S3Options": {
- "$ref": "#/definitions/S3TableOutputOptions"
- },
- "TableName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "DatabaseName",
- "TableName"
- ],
- "type": "object"
- },
- "DatabaseOutput": {
- "additionalProperties": false,
- "properties": {
- "DatabaseOptions": {
- "$ref": "#/definitions/DatabaseTableOutputOptions"
- },
- "DatabaseOutputMode": {
- "enum": [
- "NEW_TABLE"
- ],
- "type": "string"
- },
- "GlueConnectionName": {
- "type": "string"
- }
- },
- "required": [
- "GlueConnectionName",
- "DatabaseOptions"
- ],
- "type": "object"
- },
- "DatabaseTableOutputOptions": {
- "additionalProperties": false,
- "properties": {
- "TableName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "TempDirectory": {
- "$ref": "#/definitions/S3Location"
- }
- },
- "required": [
- "TableName"
- ],
- "type": "object"
- },
- "EntityDetectorConfiguration": {
- "additionalProperties": false,
- "properties": {
- "AllowedStatistics": {
- "$ref": "#/definitions/AllowedStatistics"
- },
- "EntityTypes": {
- "insertionOrder": true,
- "items": {
- "maxLength": 128,
- "minLength": 1,
- "pattern": "^[A-Z_][A-Z\\\\d_]*$",
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- }
- },
- "required": [
- "EntityTypes"
- ],
- "type": "object"
- },
- "JobSample": {
- "additionalProperties": false,
- "properties": {
- "Mode": {
- "$ref": "#/definitions/SampleMode"
- },
- "Size": {
- "$ref": "#/definitions/JobSize"
- }
- },
- "type": "object"
- },
- "JobSize": {
- "format": "int64",
- "type": "integer"
- },
- "Output": {
- "additionalProperties": false,
- "properties": {
- "CompressionFormat": {
- "enum": [
- "GZIP",
- "LZ4",
- "SNAPPY",
- "BZIP2",
- "DEFLATE",
- "LZO",
- "BROTLI",
- "ZSTD",
- "ZLIB"
- ],
- "type": "string"
- },
- "Format": {
- "enum": [
- "CSV",
- "JSON",
- "PARQUET",
- "GLUEPARQUET",
- "AVRO",
- "ORC",
- "XML",
- "TABLEAUHYPER"
- ],
- "type": "string"
- },
- "FormatOptions": {
- "$ref": "#/definitions/OutputFormatOptions"
- },
- "Location": {
- "$ref": "#/definitions/S3Location"
- },
- "MaxOutputFiles": {
- "maximum": 999,
- "minimum": 1,
- "type": "integer"
- },
- "Overwrite": {
- "type": "boolean"
- },
- "PartitionColumns": {
- "insertionOrder": true,
- "items": {
- "type": "string"
- },
- "type": "array",
- "uniqueItems": true
- }
- },
- "required": [
- "Location"
- ],
- "type": "object"
- },
- "OutputFormatOptions": {
- "additionalProperties": false,
- "properties": {
- "Csv": {
- "$ref": "#/definitions/CsvOutputOptions"
- }
- },
- "type": "object"
- },
- "OutputLocation": {
- "additionalProperties": false,
- "properties": {
- "Bucket": {
- "type": "string"
- },
- "BucketOwner": {
- "maxLength": 12,
- "minLength": 12,
- "type": "string"
- },
- "Key": {
- "type": "string"
- }
- },
- "required": [
- "Bucket"
- ],
- "type": "object"
- },
- "ParameterMap": {
- "additionalProperties": false,
- "patternProperties": {
- "^[A-Za-z0-9]{1,128}$": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "ProfileConfiguration": {
- "additionalProperties": false,
- "properties": {
- "ColumnStatisticsConfigurations": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/ColumnStatisticsConfiguration"
- },
- "minItems": 1,
- "type": "array"
- },
- "DatasetStatisticsConfiguration": {
- "$ref": "#/definitions/StatisticsConfiguration"
- },
- "EntityDetectorConfiguration": {
- "$ref": "#/definitions/EntityDetectorConfiguration"
- },
- "ProfileColumns": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/ColumnSelector"
- },
- "minItems": 1,
- "type": "array"
- }
- },
- "type": "object"
- },
- "Recipe": {
- "additionalProperties": false,
- "properties": {
- "Name": {
- "type": "string"
- },
- "Version": {
- "type": "string"
- }
- },
- "required": [
- "Name"
- ],
- "type": "object"
- },
- "S3Location": {
- "additionalProperties": false,
- "properties": {
- "Bucket": {
- "type": "string"
- },
- "BucketOwner": {
- "maxLength": 12,
- "minLength": 12,
- "type": "string"
- },
- "Key": {
- "type": "string"
- }
- },
- "required": [
- "Bucket"
- ],
- "type": "object"
- },
- "S3TableOutputOptions": {
- "additionalProperties": false,
- "properties": {
- "Location": {
- "$ref": "#/definitions/S3Location"
- }
- },
- "required": [
- "Location"
- ],
- "type": "object"
- },
- "SampleMode": {
- "enum": [
- "FULL_DATASET",
- "CUSTOM_ROWS"
- ],
- "type": "string"
- },
- "Statistic": {
- "maxLength": 128,
- "minLength": 1,
- "pattern": "^[A-Z\\_]+$",
- "type": "string"
- },
- "StatisticOverride": {
- "additionalProperties": false,
- "properties": {
- "Parameters": {
- "$ref": "#/definitions/ParameterMap"
- },
- "Statistic": {
- "$ref": "#/definitions/Statistic"
- }
- },
- "required": [
- "Statistic",
- "Parameters"
- ],
- "type": "object"
- },
- "StatisticsConfiguration": {
- "additionalProperties": false,
- "properties": {
- "IncludedStatistics": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/Statistic"
- },
- "minItems": 1,
- "type": "array"
- },
- "Overrides": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/StatisticOverride"
- },
- "minItems": 1,
- "type": "array"
- }
- },
- "type": "object"
- },
- "Tag": {
- "additionalProperties": false,
- "properties": {
- "Key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "Value": {
- "maxLength": 256,
- "minLength": 0,
- "type": "string"
- }
- },
- "required": [
- "Value",
- "Key"
- ],
- "type": "object"
- },
- "ValidationConfiguration": {
- "additionalProperties": false,
- "properties": {
- "RulesetArn": {
- "maxLength": 2048,
- "minLength": 20,
- "type": "string"
- },
- "ValidationMode": {
- "$ref": "#/definitions/ValidationMode"
- }
- },
- "required": [
- "RulesetArn"
- ],
- "type": "object"
- },
- "ValidationMode": {
- "enum": [
- "CHECK_ALL"
- ],
- "type": "string"
- }
- },
- "primaryIdentifier": [
- "/properties/Name"
- ],
- "properties": {
- "DataCatalogOutputs": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/DataCatalogOutput"
- },
- "type": "array"
- },
- "DatabaseOutputs": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/DatabaseOutput"
- },
- "type": "array"
- },
- "DatasetName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "EncryptionKeyArn": {
- "maxLength": 2048,
- "minLength": 20,
- "type": "string"
- },
- "EncryptionMode": {
- "enum": [
- "SSE-KMS",
- "SSE-S3"
- ],
- "type": "string"
- },
- "JobSample": {
- "$ref": "#/definitions/JobSample"
- },
- "LogSubscription": {
- "enum": [
- "ENABLE",
- "DISABLE"
- ],
- "type": "string"
- },
- "MaxCapacity": {
- "type": "integer"
- },
- "MaxRetries": {
- "type": "integer"
- },
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "OutputLocation": {
- "$ref": "#/definitions/OutputLocation"
- },
- "Outputs": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/Output"
- },
- "type": "array"
- },
- "ProfileConfiguration": {
- "$ref": "#/definitions/ProfileConfiguration"
- },
- "ProjectName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "Recipe": {
- "$ref": "#/definitions/Recipe"
- },
- "RoleArn": {
- "type": "string"
- },
- "Tags": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/Tag"
- },
- "type": "array",
- "uniqueItems": false
- },
- "Timeout": {
- "type": "integer"
- },
- "Type": {
- "enum": [
- "PROFILE",
- "RECIPE"
- ],
- "type": "string"
- },
- "ValidationConfigurations": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/ValidationConfiguration"
- },
- "type": "array"
- }
- },
- "required": [
- "Name",
- "RoleArn",
- "Type"
- ],
- "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git",
- "taggable": true,
- "typeName": "AWS::DataBrew::Job"
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-project.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-project.json
deleted file mode 100644
index 0363350390..0000000000
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-project.json
+++ /dev/null
@@ -1,93 +0,0 @@
-{
- "additionalProperties": false,
- "createOnlyProperties": [
- "/properties/Name",
- "/properties/Tags"
- ],
- "definitions": {
- "Sample": {
- "additionalProperties": false,
- "properties": {
- "Size": {
- "minimum": 1,
- "type": "integer"
- },
- "Type": {
- "enum": [
- "FIRST_N",
- "LAST_N",
- "RANDOM"
- ],
- "type": "string"
- }
- },
- "required": [
- "Type"
- ],
- "type": "object"
- },
- "Tag": {
- "additionalProperties": false,
- "properties": {
- "Key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "Value": {
- "maxLength": 256,
- "minLength": 0,
- "type": "string"
- }
- },
- "required": [
- "Value",
- "Key"
- ],
- "type": "object"
- }
- },
- "primaryIdentifier": [
- "/properties/Name"
- ],
- "properties": {
- "DatasetName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "RecipeName": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "RoleArn": {
- "type": "string"
- },
- "Sample": {
- "$ref": "#/definitions/Sample"
- },
- "Tags": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/Tag"
- },
- "type": "array",
- "uniqueItems": false
- }
- },
- "required": [
- "DatasetName",
- "Name",
- "RecipeName",
- "RoleArn"
- ],
- "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git",
- "taggable": true,
- "typeName": "AWS::DataBrew::Project"
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-recipe.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-recipe.json
deleted file mode 100644
index 2758e26dd4..0000000000
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-recipe.json
+++ /dev/null
@@ -1,539 +0,0 @@
-{
- "additionalProperties": false,
- "createOnlyProperties": [
- "/properties/Name",
- "/properties/Tags"
- ],
- "definitions": {
- "Action": {
- "additionalProperties": false,
- "properties": {
- "Operation": {
- "type": "string"
- },
- "Parameters": {
- "anyOf": [
- {
- "$ref": "#/definitions/RecipeParameters"
- },
- {
- "$ref": "#/definitions/ParameterMap"
- }
- ]
- }
- },
- "required": [
- "Operation"
- ],
- "type": "object"
- },
- "ConditionExpression": {
- "additionalProperties": false,
- "properties": {
- "Condition": {
- "type": "string"
- },
- "TargetColumn": {
- "type": "string"
- },
- "Value": {
- "type": "string"
- }
- },
- "required": [
- "Condition",
- "TargetColumn"
- ],
- "type": "object"
- },
- "DataCatalogInputDefinition": {
- "additionalProperties": false,
- "properties": {
- "CatalogId": {
- "type": "string"
- },
- "DatabaseName": {
- "type": "string"
- },
- "TableName": {
- "type": "string"
- },
- "TempDirectory": {
- "$ref": "#/definitions/S3Location"
- }
- },
- "type": "object"
- },
- "ParameterMap": {
- "additionalProperties": false,
- "patternProperties": {
- "^[A-Za-z0-9]{1,128}$": {
- "type": "string"
- }
- },
- "type": "object"
- },
- "RecipeParameters": {
- "additionalProperties": false,
- "properties": {
- "AggregateFunction": {
- "type": "string"
- },
- "Base": {
- "type": "string"
- },
- "CaseStatement": {
- "type": "string"
- },
- "CategoryMap": {
- "type": "string"
- },
- "CharsToRemove": {
- "type": "string"
- },
- "CollapseConsecutiveWhitespace": {
- "type": "string"
- },
- "ColumnDataType": {
- "type": "string"
- },
- "ColumnRange": {
- "type": "string"
- },
- "Count": {
- "type": "string"
- },
- "CustomCharacters": {
- "type": "string"
- },
- "CustomStopWords": {
- "type": "string"
- },
- "CustomValue": {
- "type": "string"
- },
- "DatasetsColumns": {
- "type": "string"
- },
- "DateAddValue": {
- "type": "string"
- },
- "DateTimeFormat": {
- "type": "string"
- },
- "DateTimeParameters": {
- "type": "string"
- },
- "DeleteOtherRows": {
- "type": "string"
- },
- "Delimiter": {
- "type": "string"
- },
- "EndPattern": {
- "type": "string"
- },
- "EndPosition": {
- "type": "string"
- },
- "EndValue": {
- "type": "string"
- },
- "ExpandContractions": {
- "type": "string"
- },
- "Exponent": {
- "type": "string"
- },
- "FalseString": {
- "type": "string"
- },
- "GroupByAggFunctionOptions": {
- "type": "string"
- },
- "GroupByColumns": {
- "type": "string"
- },
- "HiddenColumns": {
- "type": "string"
- },
- "IgnoreCase": {
- "type": "string"
- },
- "IncludeInSplit": {
- "type": "string"
- },
- "Input": {
- "additionalProperties": false,
- "oneOf": [
- {
- "required": [
- "S3InputDefinition"
- ]
- },
- {
- "required": [
- "DataCatalogInputDefinition"
- ]
- }
- ],
- "properties": {
- "DataCatalogInputDefinition": {
- "$ref": "#/definitions/DataCatalogInputDefinition"
- },
- "S3InputDefinition": {
- "$ref": "#/definitions/S3Location"
- }
- },
- "type": "object"
- },
- "Interval": {
- "type": "string"
- },
- "IsText": {
- "type": "string"
- },
- "JoinKeys": {
- "type": "string"
- },
- "JoinType": {
- "type": "string"
- },
- "LeftColumns": {
- "type": "string"
- },
- "Limit": {
- "type": "string"
- },
- "LowerBound": {
- "type": "string"
- },
- "MapType": {
- "type": "string"
- },
- "ModeType": {
- "type": "string"
- },
- "MultiLine": {
- "type": "boolean"
- },
- "NumRows": {
- "type": "string"
- },
- "NumRowsAfter": {
- "type": "string"
- },
- "NumRowsBefore": {
- "type": "string"
- },
- "OrderByColumn": {
- "type": "string"
- },
- "OrderByColumns": {
- "type": "string"
- },
- "Other": {
- "type": "string"
- },
- "Pattern": {
- "type": "string"
- },
- "PatternOption1": {
- "type": "string"
- },
- "PatternOption2": {
- "type": "string"
- },
- "PatternOptions": {
- "type": "string"
- },
- "Period": {
- "type": "string"
- },
- "Position": {
- "type": "string"
- },
- "RemoveAllPunctuation": {
- "type": "string"
- },
- "RemoveAllQuotes": {
- "type": "string"
- },
- "RemoveAllWhitespace": {
- "type": "string"
- },
- "RemoveCustomCharacters": {
- "type": "string"
- },
- "RemoveCustomValue": {
- "type": "string"
- },
- "RemoveLeadingAndTrailingPunctuation": {
- "type": "string"
- },
- "RemoveLeadingAndTrailingQuotes": {
- "type": "string"
- },
- "RemoveLeadingAndTrailingWhitespace": {
- "type": "string"
- },
- "RemoveLetters": {
- "type": "string"
- },
- "RemoveNumbers": {
- "type": "string"
- },
- "RemoveSourceColumn": {
- "type": "string"
- },
- "RemoveSpecialCharacters": {
- "type": "string"
- },
- "RightColumns": {
- "type": "string"
- },
- "SampleSize": {
- "type": "string"
- },
- "SampleType": {
- "type": "string"
- },
- "SecondInput": {
- "type": "string"
- },
- "SecondaryInputs": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/SecondaryInput"
- },
- "type": "array",
- "uniqueItems": false
- },
- "SheetIndexes": {
- "insertionOrder": true,
- "items": {
- "type": "integer"
- },
- "maxItems": 1,
- "minItems": 1,
- "type": "array"
- },
- "SheetNames": {
- "insertionOrder": true,
- "items": {
- "type": "string"
- },
- "maxItems": 1,
- "minItems": 1,
- "type": "array"
- },
- "SourceColumn": {
- "type": "string"
- },
- "SourceColumn1": {
- "type": "string"
- },
- "SourceColumn2": {
- "type": "string"
- },
- "SourceColumns": {
- "type": "string"
- },
- "StartColumnIndex": {
- "type": "string"
- },
- "StartPattern": {
- "type": "string"
- },
- "StartPosition": {
- "type": "string"
- },
- "StartValue": {
- "type": "string"
- },
- "StemmingMode": {
- "type": "string"
- },
- "StepCount": {
- "type": "string"
- },
- "StepIndex": {
- "type": "string"
- },
- "StopWordsMode": {
- "type": "string"
- },
- "Strategy": {
- "type": "string"
- },
- "TargetColumn": {
- "type": "string"
- },
- "TargetColumnNames": {
- "type": "string"
- },
- "TargetDateFormat": {
- "type": "string"
- },
- "TargetIndex": {
- "type": "string"
- },
- "TimeZone": {
- "type": "string"
- },
- "TokenizerPattern": {
- "type": "string"
- },
- "TrueString": {
- "type": "string"
- },
- "UdfLang": {
- "type": "string"
- },
- "Units": {
- "type": "string"
- },
- "UnpivotColumn": {
- "type": "string"
- },
- "UpperBound": {
- "type": "string"
- },
- "UseNewDataFrame": {
- "type": "string"
- },
- "Value": {
- "type": "string"
- },
- "Value1": {
- "type": "string"
- },
- "Value2": {
- "type": "string"
- },
- "ValueColumn": {
- "type": "string"
- },
- "ViewFrame": {
- "type": "string"
- }
- }
- },
- "RecipeStep": {
- "additionalProperties": false,
- "properties": {
- "Action": {
- "$ref": "#/definitions/Action"
- },
- "ConditionExpressions": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/ConditionExpression"
- },
- "type": "array"
- }
- },
- "required": [
- "Action"
- ],
- "type": "object"
- },
- "S3Location": {
- "additionalProperties": false,
- "properties": {
- "Bucket": {
- "type": "string"
- },
- "Key": {
- "type": "string"
- }
- },
- "required": [
- "Bucket"
- ],
- "type": "object"
- },
- "SecondaryInput": {
- "additionalProperties": false,
- "oneOf": [
- {
- "required": [
- "S3InputDefinition"
- ]
- },
- {
- "required": [
- "DataCatalogInputDefinition"
- ]
- }
- ],
- "properties": {
- "DataCatalogInputDefinition": {
- "$ref": "#/definitions/DataCatalogInputDefinition"
- },
- "S3InputDefinition": {
- "$ref": "#/definitions/S3Location"
- }
- },
- "type": "object"
- },
- "Tag": {
- "additionalProperties": false,
- "properties": {
- "Key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "Value": {
- "maxLength": 256,
- "minLength": 0,
- "type": "string"
- }
- },
- "required": [
- "Value",
- "Key"
- ],
- "type": "object"
- }
- },
- "primaryIdentifier": [
- "/properties/Name"
- ],
- "properties": {
- "Description": {
- "maxLength": 1024,
- "minLength": 0,
- "type": "string"
- },
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "Steps": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/RecipeStep",
- "type": "object"
- },
- "type": "array"
- },
- "Tags": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/Tag"
- },
- "type": "array",
- "uniqueItems": false
- }
- },
- "required": [
- "Name",
- "Steps"
- ],
- "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git",
- "taggable": true,
- "typeName": "AWS::DataBrew::Recipe"
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-ruleset.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-ruleset.json
deleted file mode 100644
index 54553a57c0..0000000000
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-databrew-ruleset.json
+++ /dev/null
@@ -1,198 +0,0 @@
-{
- "additionalProperties": false,
- "createOnlyProperties": [
- "/properties/Name",
- "/properties/TargetArn",
- "/properties/Tags"
- ],
- "definitions": {
- "ColumnSelector": {
- "additionalProperties": false,
- "properties": {
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "Regex": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- }
- },
- "type": "object"
- },
- "Disabled": {
- "type": "boolean"
- },
- "Expression": {
- "maxLength": 1024,
- "minLength": 4,
- "pattern": "^[><0-9A-Za-z_.,:)(!= ]+$",
- "type": "string"
- },
- "Rule": {
- "additionalProperties": false,
- "properties": {
- "CheckExpression": {
- "$ref": "#/definitions/Expression"
- },
- "ColumnSelectors": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/ColumnSelector"
- },
- "minItems": 1,
- "type": "array"
- },
- "Disabled": {
- "$ref": "#/definitions/Disabled"
- },
- "Name": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "SubstitutionMap": {
- "$ref": "#/definitions/ValuesMap"
- },
- "Threshold": {
- "$ref": "#/definitions/Threshold"
- }
- },
- "required": [
- "Name",
- "CheckExpression"
- ],
- "type": "object"
- },
- "SubstitutionValue": {
- "additionalProperties": false,
- "properties": {
- "Value": {
- "maxLength": 1024,
- "minLength": 0,
- "type": "string"
- },
- "ValueReference": {
- "maxLength": 128,
- "minLength": 2,
- "pattern": "^:[A-Za-z0-9_]+$",
- "type": "string"
- }
- },
- "required": [
- "ValueReference",
- "Value"
- ],
- "type": "object"
- },
- "Tag": {
- "additionalProperties": false,
- "properties": {
- "Key": {
- "maxLength": 128,
- "minLength": 1,
- "type": "string"
- },
- "Value": {
- "maxLength": 256,
- "minLength": 0,
- "type": "string"
- }
- },
- "required": [
- "Value",
- "Key"
- ],
- "type": "object"
- },
- "Threshold": {
- "additionalProperties": false,
- "properties": {
- "Type": {
- "$ref": "#/definitions/ThresholdType"
- },
- "Unit": {
- "$ref": "#/definitions/ThresholdUnit"
- },
- "Value": {
- "$ref": "#/definitions/ThresholdValue"
- }
- },
- "required": [
- "Value"
- ],
- "type": "object"
- },
- "ThresholdType": {
- "enum": [
- "GREATER_THAN_OR_EQUAL",
- "LESS_THAN_OR_EQUAL",
- "GREATER_THAN",
- "LESS_THAN"
- ],
- "type": "string"
- },
- "ThresholdUnit": {
- "enum": [
- "COUNT",
- "PERCENTAGE"
- ],
- "type": "string"
- },
- "ThresholdValue": {
- "type": "number"
- },
- "ValuesMap": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/SubstitutionValue"
- },
- "type": "array"
- }
- },
- "primaryIdentifier": [
- "/properties/Name"
- ],
- "properties": {
- "Description": {
- "maxLength": 1024,
- "type": "string"
- },
- "Name": {
- "maxLength": 255,
- "minLength": 1,
- "type": "string"
- },
- "Rules": {
- "insertionOrder": true,
- "items": {
- "$ref": "#/definitions/Rule"
- },
- "minItems": 1,
- "type": "array"
- },
- "Tags": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/Tag"
- },
- "type": "array",
- "uniqueItems": false
- },
- "TargetArn": {
- "maxLength": 2048,
- "minLength": 20,
- "type": "string"
- }
- },
- "required": [
- "Name",
- "TargetArn",
- "Rules"
- ],
- "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-databrew.git",
- "taggable": true,
- "typeName": "AWS::DataBrew::Ruleset"
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-dms-replicationinstance.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-dms-replicationinstance.json
new file mode 100644
index 0000000000..3d4dfcb1dc
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-dms-replicationinstance.json
@@ -0,0 +1,106 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/KmsKeyId",
+ "/properties/ResourceIdentifier",
+ "/properties/ReplicationSubnetGroupIdentifier",
+ "/properties/PubliclyAccessible"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "AllocatedStorage": {
+ "type": "integer"
+ },
+ "AllowMajorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AutoMinorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AvailabilityZone": {
+ "type": "string"
+ },
+ "EngineVersion": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "MultiAZ": {
+ "type": "boolean"
+ },
+ "NetworkType": {
+ "type": "string"
+ },
+ "PreferredMaintenanceWindow": {
+ "type": "string"
+ },
+ "PubliclyAccessible": {
+ "type": "boolean"
+ },
+ "ReplicationInstanceClass": {
+ "type": "string"
+ },
+ "ReplicationInstanceIdentifier": {
+ "type": "string"
+ },
+ "ReplicationInstancePrivateIpAddresses": {
+ "type": "string"
+ },
+ "ReplicationInstancePublicIpAddresses": {
+ "type": "string"
+ },
+ "ReplicationSubnetGroupIdentifier": {
+ "type": "string"
+ },
+ "ResourceIdentifier": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "VpcSecurityGroupIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ReplicationInstancePublicIpAddresses",
+ "/properties/Id",
+ "/properties/ReplicationInstancePrivateIpAddresses"
+ ],
+ "required": [
+ "ReplicationInstanceClass"
+ ],
+ "typeName": "AWS::DMS::ReplicationInstance"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-apidestination.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-apidestination.json
index 2dad3ac2e5..84f7d5fd6e 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-apidestination.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-apidestination.json
@@ -11,6 +11,7 @@
"type": "string"
},
"ConnectionArn": {
+ "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$",
"type": "string"
},
"Description": {
@@ -30,6 +31,7 @@
"type": "string"
},
"InvocationEndpoint": {
+ "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$",
"type": "string"
},
"InvocationRateLimitPerSecond": {
@@ -39,6 +41,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-connection.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-connection.json
index 0ee80bb23e..c49843c440 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-connection.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-events-connection.json
@@ -189,6 +189,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
},
"SecretArn": {
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-medialive-channel.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-medialive-channel.json
new file mode 100644
index 0000000000..a6c907c033
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-medialive-channel.json
@@ -0,0 +1,3591 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Vpc",
+ "/properties/AnywhereSettings"
+ ],
+ "definitions": {
+ "AacSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Bitrate": {
+ "type": "number"
+ },
+ "CodingMode": {
+ "type": "string"
+ },
+ "InputType": {
+ "type": "string"
+ },
+ "Profile": {
+ "type": "string"
+ },
+ "RateControlMode": {
+ "type": "string"
+ },
+ "RawFormat": {
+ "type": "string"
+ },
+ "SampleRate": {
+ "type": "number"
+ },
+ "Spec": {
+ "type": "string"
+ },
+ "VbrQuality": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Ac3Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AttenuationControl": {
+ "type": "string"
+ },
+ "Bitrate": {
+ "type": "number"
+ },
+ "BitstreamMode": {
+ "type": "string"
+ },
+ "CodingMode": {
+ "type": "string"
+ },
+ "Dialnorm": {
+ "type": "integer"
+ },
+ "DrcProfile": {
+ "type": "string"
+ },
+ "LfeFilter": {
+ "type": "string"
+ },
+ "MetadataControl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AncillarySourceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "SourceAncillaryChannelNumber": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "AnywhereSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ChannelPlacementGroupId": {
+ "type": "string"
+ },
+ "ClusterId": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ArchiveCdnSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ArchiveS3Settings": {
+ "$ref": "#/definitions/ArchiveS3Settings"
+ }
+ },
+ "type": "object"
+ },
+ "ArchiveContainerSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "M2tsSettings": {
+ "$ref": "#/definitions/M2tsSettings"
+ },
+ "RawSettings": {
+ "$ref": "#/definitions/RawSettings"
+ }
+ },
+ "type": "object"
+ },
+ "ArchiveGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ArchiveCdnSettings": {
+ "$ref": "#/definitions/ArchiveCdnSettings"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "RolloverInterval": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "ArchiveOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerSettings": {
+ "$ref": "#/definitions/ArchiveContainerSettings"
+ },
+ "Extension": {
+ "type": "string"
+ },
+ "NameModifier": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ArchiveS3Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "CannedAcl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AribDestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "AribSourceSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "AudioChannelMapping": {
+ "additionalProperties": false,
+ "properties": {
+ "InputChannelLevels": {
+ "items": {
+ "$ref": "#/definitions/InputChannelLevel"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "OutputChannel": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "AudioCodecSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AacSettings": {
+ "$ref": "#/definitions/AacSettings"
+ },
+ "Ac3Settings": {
+ "$ref": "#/definitions/Ac3Settings"
+ },
+ "Eac3AtmosSettings": {
+ "$ref": "#/definitions/Eac3AtmosSettings"
+ },
+ "Eac3Settings": {
+ "$ref": "#/definitions/Eac3Settings"
+ },
+ "Mp2Settings": {
+ "$ref": "#/definitions/Mp2Settings"
+ },
+ "PassThroughSettings": {
+ "$ref": "#/definitions/PassThroughSettings"
+ },
+ "WavSettings": {
+ "$ref": "#/definitions/WavSettings"
+ }
+ },
+ "type": "object"
+ },
+ "AudioDescription": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioDashRoles": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "AudioNormalizationSettings": {
+ "$ref": "#/definitions/AudioNormalizationSettings"
+ },
+ "AudioSelectorName": {
+ "type": "string"
+ },
+ "AudioType": {
+ "type": "string"
+ },
+ "AudioTypeControl": {
+ "type": "string"
+ },
+ "AudioWatermarkingSettings": {
+ "$ref": "#/definitions/AudioWatermarkSettings"
+ },
+ "CodecSettings": {
+ "$ref": "#/definitions/AudioCodecSettings"
+ },
+ "DvbDashAccessibility": {
+ "type": "string"
+ },
+ "LanguageCode": {
+ "type": "string"
+ },
+ "LanguageCodeControl": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "RemixSettings": {
+ "$ref": "#/definitions/RemixSettings"
+ },
+ "StreamName": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AudioDolbyEDecode": {
+ "additionalProperties": false,
+ "properties": {
+ "ProgramSelection": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AudioHlsRenditionSelection": {
+ "additionalProperties": false,
+ "properties": {
+ "GroupId": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AudioLanguageSelection": {
+ "additionalProperties": false,
+ "properties": {
+ "LanguageCode": {
+ "type": "string"
+ },
+ "LanguageSelectionPolicy": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AudioNormalizationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Algorithm": {
+ "type": "string"
+ },
+ "AlgorithmControl": {
+ "type": "string"
+ },
+ "TargetLkfs": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "AudioOnlyHlsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioGroupId": {
+ "type": "string"
+ },
+ "AudioOnlyImage": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "AudioTrackType": {
+ "type": "string"
+ },
+ "SegmentType": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AudioPidSelection": {
+ "additionalProperties": false,
+ "properties": {
+ "Pid": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "AudioSelector": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "SelectorSettings": {
+ "$ref": "#/definitions/AudioSelectorSettings"
+ }
+ },
+ "type": "object"
+ },
+ "AudioSelectorSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioHlsRenditionSelection": {
+ "$ref": "#/definitions/AudioHlsRenditionSelection"
+ },
+ "AudioLanguageSelection": {
+ "$ref": "#/definitions/AudioLanguageSelection"
+ },
+ "AudioPidSelection": {
+ "$ref": "#/definitions/AudioPidSelection"
+ },
+ "AudioTrackSelection": {
+ "$ref": "#/definitions/AudioTrackSelection"
+ }
+ },
+ "type": "object"
+ },
+ "AudioSilenceFailoverSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioSelectorName": {
+ "type": "string"
+ },
+ "AudioSilenceThresholdMsec": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "AudioTrack": {
+ "additionalProperties": false,
+ "properties": {
+ "Track": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "AudioTrackSelection": {
+ "additionalProperties": false,
+ "properties": {
+ "DolbyEDecode": {
+ "$ref": "#/definitions/AudioDolbyEDecode"
+ },
+ "Tracks": {
+ "items": {
+ "$ref": "#/definitions/AudioTrack"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "AudioWatermarkSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "NielsenWatermarksSettings": {
+ "$ref": "#/definitions/NielsenWatermarksSettings"
+ }
+ },
+ "type": "object"
+ },
+ "AutomaticInputFailoverSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ErrorClearTimeMsec": {
+ "type": "integer"
+ },
+ "FailoverConditions": {
+ "items": {
+ "$ref": "#/definitions/FailoverCondition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "InputPreference": {
+ "type": "string"
+ },
+ "SecondaryInputId": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Av1ColorSpaceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ColorSpacePassthroughSettings": {
+ "$ref": "#/definitions/ColorSpacePassthroughSettings"
+ },
+ "Hdr10Settings": {
+ "$ref": "#/definitions/Hdr10Settings"
+ },
+ "Rec601Settings": {
+ "$ref": "#/definitions/Rec601Settings"
+ },
+ "Rec709Settings": {
+ "$ref": "#/definitions/Rec709Settings"
+ }
+ },
+ "type": "object"
+ },
+ "Av1Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AfdSignaling": {
+ "type": "string"
+ },
+ "BufSize": {
+ "type": "integer"
+ },
+ "ColorSpaceSettings": {
+ "$ref": "#/definitions/Av1ColorSpaceSettings"
+ },
+ "FixedAfd": {
+ "type": "string"
+ },
+ "FramerateDenominator": {
+ "type": "integer"
+ },
+ "FramerateNumerator": {
+ "type": "integer"
+ },
+ "GopSize": {
+ "type": "number"
+ },
+ "GopSizeUnits": {
+ "type": "string"
+ },
+ "Level": {
+ "type": "string"
+ },
+ "LookAheadRateControl": {
+ "type": "string"
+ },
+ "MaxBitrate": {
+ "type": "integer"
+ },
+ "MinIInterval": {
+ "type": "integer"
+ },
+ "ParDenominator": {
+ "type": "integer"
+ },
+ "ParNumerator": {
+ "type": "integer"
+ },
+ "QvbrQualityLevel": {
+ "type": "integer"
+ },
+ "SceneChangeDetect": {
+ "type": "string"
+ },
+ "TimecodeBurninSettings": {
+ "$ref": "#/definitions/TimecodeBurninSettings"
+ }
+ },
+ "type": "object"
+ },
+ "AvailBlanking": {
+ "additionalProperties": false,
+ "properties": {
+ "AvailBlankingImage": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "State": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AvailConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AvailSettings": {
+ "$ref": "#/definitions/AvailSettings"
+ },
+ "Scte35SegmentationScope": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AvailSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Esam": {
+ "$ref": "#/definitions/Esam"
+ },
+ "Scte35SpliceInsert": {
+ "$ref": "#/definitions/Scte35SpliceInsert"
+ },
+ "Scte35TimeSignalApos": {
+ "$ref": "#/definitions/Scte35TimeSignalApos"
+ }
+ },
+ "type": "object"
+ },
+ "BandwidthReductionFilterSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "PostFilterSharpening": {
+ "type": "string"
+ },
+ "Strength": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BlackoutSlate": {
+ "additionalProperties": false,
+ "properties": {
+ "BlackoutSlateImage": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "NetworkEndBlackout": {
+ "type": "string"
+ },
+ "NetworkEndBlackoutImage": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "NetworkId": {
+ "type": "string"
+ },
+ "State": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BurnInDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Alignment": {
+ "type": "string"
+ },
+ "BackgroundColor": {
+ "type": "string"
+ },
+ "BackgroundOpacity": {
+ "type": "integer"
+ },
+ "Font": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "FontColor": {
+ "type": "string"
+ },
+ "FontOpacity": {
+ "type": "integer"
+ },
+ "FontResolution": {
+ "type": "integer"
+ },
+ "FontSize": {
+ "type": "string"
+ },
+ "OutlineColor": {
+ "type": "string"
+ },
+ "OutlineSize": {
+ "type": "integer"
+ },
+ "ShadowColor": {
+ "type": "string"
+ },
+ "ShadowOpacity": {
+ "type": "integer"
+ },
+ "ShadowXOffset": {
+ "type": "integer"
+ },
+ "ShadowYOffset": {
+ "type": "integer"
+ },
+ "TeletextGridControl": {
+ "type": "string"
+ },
+ "XPosition": {
+ "type": "integer"
+ },
+ "YPosition": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "CaptionDescription": {
+ "additionalProperties": false,
+ "properties": {
+ "Accessibility": {
+ "type": "string"
+ },
+ "CaptionDashRoles": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "CaptionSelectorName": {
+ "type": "string"
+ },
+ "DestinationSettings": {
+ "$ref": "#/definitions/CaptionDestinationSettings"
+ },
+ "DvbDashAccessibility": {
+ "type": "string"
+ },
+ "LanguageCode": {
+ "type": "string"
+ },
+ "LanguageDescription": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CaptionDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AribDestinationSettings": {
+ "$ref": "#/definitions/AribDestinationSettings"
+ },
+ "BurnInDestinationSettings": {
+ "$ref": "#/definitions/BurnInDestinationSettings"
+ },
+ "DvbSubDestinationSettings": {
+ "$ref": "#/definitions/DvbSubDestinationSettings"
+ },
+ "EbuTtDDestinationSettings": {
+ "$ref": "#/definitions/EbuTtDDestinationSettings"
+ },
+ "EmbeddedDestinationSettings": {
+ "$ref": "#/definitions/EmbeddedDestinationSettings"
+ },
+ "EmbeddedPlusScte20DestinationSettings": {
+ "$ref": "#/definitions/EmbeddedPlusScte20DestinationSettings"
+ },
+ "RtmpCaptionInfoDestinationSettings": {
+ "$ref": "#/definitions/RtmpCaptionInfoDestinationSettings"
+ },
+ "Scte20PlusEmbeddedDestinationSettings": {
+ "$ref": "#/definitions/Scte20PlusEmbeddedDestinationSettings"
+ },
+ "Scte27DestinationSettings": {
+ "$ref": "#/definitions/Scte27DestinationSettings"
+ },
+ "SmpteTtDestinationSettings": {
+ "$ref": "#/definitions/SmpteTtDestinationSettings"
+ },
+ "TeletextDestinationSettings": {
+ "$ref": "#/definitions/TeletextDestinationSettings"
+ },
+ "TtmlDestinationSettings": {
+ "$ref": "#/definitions/TtmlDestinationSettings"
+ },
+ "WebvttDestinationSettings": {
+ "$ref": "#/definitions/WebvttDestinationSettings"
+ }
+ },
+ "type": "object"
+ },
+ "CaptionLanguageMapping": {
+ "additionalProperties": false,
+ "properties": {
+ "CaptionChannel": {
+ "type": "integer"
+ },
+ "LanguageCode": {
+ "type": "string"
+ },
+ "LanguageDescription": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CaptionRectangle": {
+ "additionalProperties": false,
+ "properties": {
+ "Height": {
+ "type": "number"
+ },
+ "LeftOffset": {
+ "type": "number"
+ },
+ "TopOffset": {
+ "type": "number"
+ },
+ "Width": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "CaptionSelector": {
+ "additionalProperties": false,
+ "properties": {
+ "LanguageCode": {
+ "type": "string"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "SelectorSettings": {
+ "$ref": "#/definitions/CaptionSelectorSettings"
+ }
+ },
+ "type": "object"
+ },
+ "CaptionSelectorSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AncillarySourceSettings": {
+ "$ref": "#/definitions/AncillarySourceSettings"
+ },
+ "AribSourceSettings": {
+ "$ref": "#/definitions/AribSourceSettings"
+ },
+ "DvbSubSourceSettings": {
+ "$ref": "#/definitions/DvbSubSourceSettings"
+ },
+ "EmbeddedSourceSettings": {
+ "$ref": "#/definitions/EmbeddedSourceSettings"
+ },
+ "Scte20SourceSettings": {
+ "$ref": "#/definitions/Scte20SourceSettings"
+ },
+ "Scte27SourceSettings": {
+ "$ref": "#/definitions/Scte27SourceSettings"
+ },
+ "TeletextSourceSettings": {
+ "$ref": "#/definitions/TeletextSourceSettings"
+ }
+ },
+ "type": "object"
+ },
+ "CdiInputSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "Resolution": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CmafIngestGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "NielsenId3Behavior": {
+ "type": "string"
+ },
+ "Scte35Type": {
+ "type": "string"
+ },
+ "SegmentLength": {
+ "type": "integer"
+ },
+ "SegmentLengthUnits": {
+ "type": "string"
+ },
+ "SendDelayMs": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "CmafIngestOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "NameModifier": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ColorCorrection": {
+ "additionalProperties": false,
+ "properties": {
+ "InputColorSpace": {
+ "type": "string"
+ },
+ "OutputColorSpace": {
+ "type": "string"
+ },
+ "Uri": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ColorCorrectionSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "GlobalColorCorrections": {
+ "items": {
+ "$ref": "#/definitions/ColorCorrection"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "ColorSpacePassthroughSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "DolbyVision81Settings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "DvbNitSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "NetworkId": {
+ "type": "integer"
+ },
+ "NetworkName": {
+ "type": "string"
+ },
+ "RepInterval": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DvbSdtSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "OutputSdt": {
+ "type": "string"
+ },
+ "RepInterval": {
+ "type": "integer"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceProviderName": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DvbSubDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Alignment": {
+ "type": "string"
+ },
+ "BackgroundColor": {
+ "type": "string"
+ },
+ "BackgroundOpacity": {
+ "type": "integer"
+ },
+ "Font": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "FontColor": {
+ "type": "string"
+ },
+ "FontOpacity": {
+ "type": "integer"
+ },
+ "FontResolution": {
+ "type": "integer"
+ },
+ "FontSize": {
+ "type": "string"
+ },
+ "OutlineColor": {
+ "type": "string"
+ },
+ "OutlineSize": {
+ "type": "integer"
+ },
+ "ShadowColor": {
+ "type": "string"
+ },
+ "ShadowOpacity": {
+ "type": "integer"
+ },
+ "ShadowXOffset": {
+ "type": "integer"
+ },
+ "ShadowYOffset": {
+ "type": "integer"
+ },
+ "TeletextGridControl": {
+ "type": "string"
+ },
+ "XPosition": {
+ "type": "integer"
+ },
+ "YPosition": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DvbSubSourceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "OcrLanguage": {
+ "type": "string"
+ },
+ "Pid": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DvbTdtSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "RepInterval": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Eac3AtmosSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Bitrate": {
+ "type": "number"
+ },
+ "CodingMode": {
+ "type": "string"
+ },
+ "Dialnorm": {
+ "type": "integer"
+ },
+ "DrcLine": {
+ "type": "string"
+ },
+ "DrcRf": {
+ "type": "string"
+ },
+ "HeightTrim": {
+ "type": "number"
+ },
+ "SurroundTrim": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Eac3Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AttenuationControl": {
+ "type": "string"
+ },
+ "Bitrate": {
+ "type": "number"
+ },
+ "BitstreamMode": {
+ "type": "string"
+ },
+ "CodingMode": {
+ "type": "string"
+ },
+ "DcFilter": {
+ "type": "string"
+ },
+ "Dialnorm": {
+ "type": "integer"
+ },
+ "DrcLine": {
+ "type": "string"
+ },
+ "DrcRf": {
+ "type": "string"
+ },
+ "LfeControl": {
+ "type": "string"
+ },
+ "LfeFilter": {
+ "type": "string"
+ },
+ "LoRoCenterMixLevel": {
+ "type": "number"
+ },
+ "LoRoSurroundMixLevel": {
+ "type": "number"
+ },
+ "LtRtCenterMixLevel": {
+ "type": "number"
+ },
+ "LtRtSurroundMixLevel": {
+ "type": "number"
+ },
+ "MetadataControl": {
+ "type": "string"
+ },
+ "PassthroughControl": {
+ "type": "string"
+ },
+ "PhaseControl": {
+ "type": "string"
+ },
+ "StereoDownmix": {
+ "type": "string"
+ },
+ "SurroundExMode": {
+ "type": "string"
+ },
+ "SurroundMode": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EbuTtDDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "CopyrightHolder": {
+ "type": "string"
+ },
+ "FillLineGap": {
+ "type": "string"
+ },
+ "FontFamily": {
+ "type": "string"
+ },
+ "StyleControl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EmbeddedDestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "EmbeddedPlusScte20DestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "EmbeddedSourceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Convert608To708": {
+ "type": "string"
+ },
+ "Scte20Detection": {
+ "type": "string"
+ },
+ "Source608ChannelNumber": {
+ "type": "integer"
+ },
+ "Source608TrackNumber": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "EncoderSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioDescriptions": {
+ "items": {
+ "$ref": "#/definitions/AudioDescription"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "AvailBlanking": {
+ "$ref": "#/definitions/AvailBlanking"
+ },
+ "AvailConfiguration": {
+ "$ref": "#/definitions/AvailConfiguration"
+ },
+ "BlackoutSlate": {
+ "$ref": "#/definitions/BlackoutSlate"
+ },
+ "CaptionDescriptions": {
+ "items": {
+ "$ref": "#/definitions/CaptionDescription"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "ColorCorrectionSettings": {
+ "$ref": "#/definitions/ColorCorrectionSettings"
+ },
+ "FeatureActivations": {
+ "$ref": "#/definitions/FeatureActivations"
+ },
+ "GlobalConfiguration": {
+ "$ref": "#/definitions/GlobalConfiguration"
+ },
+ "MotionGraphicsConfiguration": {
+ "$ref": "#/definitions/MotionGraphicsConfiguration"
+ },
+ "NielsenConfiguration": {
+ "$ref": "#/definitions/NielsenConfiguration"
+ },
+ "OutputGroups": {
+ "items": {
+ "$ref": "#/definitions/OutputGroup"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "ThumbnailConfiguration": {
+ "$ref": "#/definitions/ThumbnailConfiguration"
+ },
+ "TimecodeConfig": {
+ "$ref": "#/definitions/TimecodeConfig"
+ },
+ "VideoDescriptions": {
+ "items": {
+ "$ref": "#/definitions/VideoDescription"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "EpochLockingSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "CustomEpoch": {
+ "type": "string"
+ },
+ "JamSyncTime": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Esam": {
+ "additionalProperties": false,
+ "properties": {
+ "AcquisitionPointId": {
+ "type": "string"
+ },
+ "AdAvailOffset": {
+ "type": "integer"
+ },
+ "PasswordParam": {
+ "type": "string"
+ },
+ "PoisEndpoint": {
+ "type": "string"
+ },
+ "Username": {
+ "type": "string"
+ },
+ "ZoneIdentity": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FailoverCondition": {
+ "additionalProperties": false,
+ "properties": {
+ "FailoverConditionSettings": {
+ "$ref": "#/definitions/FailoverConditionSettings"
+ }
+ },
+ "type": "object"
+ },
+ "FailoverConditionSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioSilenceSettings": {
+ "$ref": "#/definitions/AudioSilenceFailoverSettings"
+ },
+ "InputLossSettings": {
+ "$ref": "#/definitions/InputLossFailoverSettings"
+ },
+ "VideoBlackSettings": {
+ "$ref": "#/definitions/VideoBlackFailoverSettings"
+ }
+ },
+ "type": "object"
+ },
+ "FeatureActivations": {
+ "additionalProperties": false,
+ "properties": {
+ "InputPrepareScheduleActions": {
+ "type": "string"
+ },
+ "OutputStaticImageOverlayScheduleActions": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FecOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ColumnDepth": {
+ "type": "integer"
+ },
+ "IncludeFec": {
+ "type": "string"
+ },
+ "RowLength": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Fmp4HlsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioRenditionSets": {
+ "type": "string"
+ },
+ "NielsenId3Behavior": {
+ "type": "string"
+ },
+ "TimedMetadataBehavior": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FrameCaptureCdnSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "FrameCaptureS3Settings": {
+ "$ref": "#/definitions/FrameCaptureS3Settings"
+ }
+ },
+ "type": "object"
+ },
+ "FrameCaptureGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "FrameCaptureCdnSettings": {
+ "$ref": "#/definitions/FrameCaptureCdnSettings"
+ }
+ },
+ "type": "object"
+ },
+ "FrameCaptureHlsSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "FrameCaptureOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "NameModifier": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FrameCaptureS3Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "CannedAcl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FrameCaptureSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "CaptureInterval": {
+ "type": "integer"
+ },
+ "CaptureIntervalUnits": {
+ "type": "string"
+ },
+ "TimecodeBurninSettings": {
+ "$ref": "#/definitions/TimecodeBurninSettings"
+ }
+ },
+ "type": "object"
+ },
+ "GlobalConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "InitialAudioGain": {
+ "type": "integer"
+ },
+ "InputEndAction": {
+ "type": "string"
+ },
+ "InputLossBehavior": {
+ "$ref": "#/definitions/InputLossBehavior"
+ },
+ "OutputLockingMode": {
+ "type": "string"
+ },
+ "OutputLockingSettings": {
+ "$ref": "#/definitions/OutputLockingSettings"
+ },
+ "OutputTimingSource": {
+ "type": "string"
+ },
+ "SupportLowFramerateInputs": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "H264ColorSpaceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ColorSpacePassthroughSettings": {
+ "$ref": "#/definitions/ColorSpacePassthroughSettings"
+ },
+ "Rec601Settings": {
+ "$ref": "#/definitions/Rec601Settings"
+ },
+ "Rec709Settings": {
+ "$ref": "#/definitions/Rec709Settings"
+ }
+ },
+ "type": "object"
+ },
+ "H264FilterSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "BandwidthReductionFilterSettings": {
+ "$ref": "#/definitions/BandwidthReductionFilterSettings"
+ },
+ "TemporalFilterSettings": {
+ "$ref": "#/definitions/TemporalFilterSettings"
+ }
+ },
+ "type": "object"
+ },
+ "H264Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AdaptiveQuantization": {
+ "type": "string"
+ },
+ "AfdSignaling": {
+ "type": "string"
+ },
+ "Bitrate": {
+ "type": "integer"
+ },
+ "BufFillPct": {
+ "type": "integer"
+ },
+ "BufSize": {
+ "type": "integer"
+ },
+ "ColorMetadata": {
+ "type": "string"
+ },
+ "ColorSpaceSettings": {
+ "$ref": "#/definitions/H264ColorSpaceSettings"
+ },
+ "EntropyEncoding": {
+ "type": "string"
+ },
+ "FilterSettings": {
+ "$ref": "#/definitions/H264FilterSettings"
+ },
+ "FixedAfd": {
+ "type": "string"
+ },
+ "FlickerAq": {
+ "type": "string"
+ },
+ "ForceFieldPictures": {
+ "type": "string"
+ },
+ "FramerateControl": {
+ "type": "string"
+ },
+ "FramerateDenominator": {
+ "type": "integer"
+ },
+ "FramerateNumerator": {
+ "type": "integer"
+ },
+ "GopBReference": {
+ "type": "string"
+ },
+ "GopClosedCadence": {
+ "type": "integer"
+ },
+ "GopNumBFrames": {
+ "type": "integer"
+ },
+ "GopSize": {
+ "type": "number"
+ },
+ "GopSizeUnits": {
+ "type": "string"
+ },
+ "Level": {
+ "type": "string"
+ },
+ "LookAheadRateControl": {
+ "type": "string"
+ },
+ "MaxBitrate": {
+ "type": "integer"
+ },
+ "MinIInterval": {
+ "type": "integer"
+ },
+ "MinQp": {
+ "type": "integer"
+ },
+ "NumRefFrames": {
+ "type": "integer"
+ },
+ "ParControl": {
+ "type": "string"
+ },
+ "ParDenominator": {
+ "type": "integer"
+ },
+ "ParNumerator": {
+ "type": "integer"
+ },
+ "Profile": {
+ "type": "string"
+ },
+ "QualityLevel": {
+ "type": "string"
+ },
+ "QvbrQualityLevel": {
+ "type": "integer"
+ },
+ "RateControlMode": {
+ "type": "string"
+ },
+ "ScanType": {
+ "type": "string"
+ },
+ "SceneChangeDetect": {
+ "type": "string"
+ },
+ "Slices": {
+ "type": "integer"
+ },
+ "Softness": {
+ "type": "integer"
+ },
+ "SpatialAq": {
+ "type": "string"
+ },
+ "SubgopLength": {
+ "type": "string"
+ },
+ "Syntax": {
+ "type": "string"
+ },
+ "TemporalAq": {
+ "type": "string"
+ },
+ "TimecodeBurninSettings": {
+ "$ref": "#/definitions/TimecodeBurninSettings"
+ },
+ "TimecodeInsertion": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "H265ColorSpaceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ColorSpacePassthroughSettings": {
+ "$ref": "#/definitions/ColorSpacePassthroughSettings"
+ },
+ "DolbyVision81Settings": {
+ "$ref": "#/definitions/DolbyVision81Settings"
+ },
+ "Hdr10Settings": {
+ "$ref": "#/definitions/Hdr10Settings"
+ },
+ "Rec601Settings": {
+ "$ref": "#/definitions/Rec601Settings"
+ },
+ "Rec709Settings": {
+ "$ref": "#/definitions/Rec709Settings"
+ }
+ },
+ "type": "object"
+ },
+ "H265FilterSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "BandwidthReductionFilterSettings": {
+ "$ref": "#/definitions/BandwidthReductionFilterSettings"
+ },
+ "TemporalFilterSettings": {
+ "$ref": "#/definitions/TemporalFilterSettings"
+ }
+ },
+ "type": "object"
+ },
+ "H265Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AdaptiveQuantization": {
+ "type": "string"
+ },
+ "AfdSignaling": {
+ "type": "string"
+ },
+ "AlternativeTransferFunction": {
+ "type": "string"
+ },
+ "Bitrate": {
+ "type": "integer"
+ },
+ "BufSize": {
+ "type": "integer"
+ },
+ "ColorMetadata": {
+ "type": "string"
+ },
+ "ColorSpaceSettings": {
+ "$ref": "#/definitions/H265ColorSpaceSettings"
+ },
+ "FilterSettings": {
+ "$ref": "#/definitions/H265FilterSettings"
+ },
+ "FixedAfd": {
+ "type": "string"
+ },
+ "FlickerAq": {
+ "type": "string"
+ },
+ "FramerateDenominator": {
+ "type": "integer"
+ },
+ "FramerateNumerator": {
+ "type": "integer"
+ },
+ "GopClosedCadence": {
+ "type": "integer"
+ },
+ "GopSize": {
+ "type": "number"
+ },
+ "GopSizeUnits": {
+ "type": "string"
+ },
+ "Level": {
+ "type": "string"
+ },
+ "LookAheadRateControl": {
+ "type": "string"
+ },
+ "MaxBitrate": {
+ "type": "integer"
+ },
+ "MinIInterval": {
+ "type": "integer"
+ },
+ "MinQp": {
+ "type": "integer"
+ },
+ "MvOverPictureBoundaries": {
+ "type": "string"
+ },
+ "MvTemporalPredictor": {
+ "type": "string"
+ },
+ "ParDenominator": {
+ "type": "integer"
+ },
+ "ParNumerator": {
+ "type": "integer"
+ },
+ "Profile": {
+ "type": "string"
+ },
+ "QvbrQualityLevel": {
+ "type": "integer"
+ },
+ "RateControlMode": {
+ "type": "string"
+ },
+ "ScanType": {
+ "type": "string"
+ },
+ "SceneChangeDetect": {
+ "type": "string"
+ },
+ "Slices": {
+ "type": "integer"
+ },
+ "Tier": {
+ "type": "string"
+ },
+ "TileHeight": {
+ "type": "integer"
+ },
+ "TilePadding": {
+ "type": "string"
+ },
+ "TileWidth": {
+ "type": "integer"
+ },
+ "TimecodeBurninSettings": {
+ "$ref": "#/definitions/TimecodeBurninSettings"
+ },
+ "TimecodeInsertion": {
+ "type": "string"
+ },
+ "TreeblockSize": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Hdr10Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "MaxCll": {
+ "type": "integer"
+ },
+ "MaxFall": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HlsAkamaiSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ConnectionRetryInterval": {
+ "type": "integer"
+ },
+ "FilecacheDuration": {
+ "type": "integer"
+ },
+ "HttpTransferMode": {
+ "type": "string"
+ },
+ "NumRetries": {
+ "type": "integer"
+ },
+ "RestartDelay": {
+ "type": "integer"
+ },
+ "Salt": {
+ "type": "string"
+ },
+ "Token": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HlsBasicPutSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ConnectionRetryInterval": {
+ "type": "integer"
+ },
+ "FilecacheDuration": {
+ "type": "integer"
+ },
+ "NumRetries": {
+ "type": "integer"
+ },
+ "RestartDelay": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HlsCdnSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "HlsAkamaiSettings": {
+ "$ref": "#/definitions/HlsAkamaiSettings"
+ },
+ "HlsBasicPutSettings": {
+ "$ref": "#/definitions/HlsBasicPutSettings"
+ },
+ "HlsMediaStoreSettings": {
+ "$ref": "#/definitions/HlsMediaStoreSettings"
+ },
+ "HlsS3Settings": {
+ "$ref": "#/definitions/HlsS3Settings"
+ },
+ "HlsWebdavSettings": {
+ "$ref": "#/definitions/HlsWebdavSettings"
+ }
+ },
+ "type": "object"
+ },
+ "HlsGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AdMarkers": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "BaseUrlContent": {
+ "type": "string"
+ },
+ "BaseUrlContent1": {
+ "type": "string"
+ },
+ "BaseUrlManifest": {
+ "type": "string"
+ },
+ "BaseUrlManifest1": {
+ "type": "string"
+ },
+ "CaptionLanguageMappings": {
+ "items": {
+ "$ref": "#/definitions/CaptionLanguageMapping"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "CaptionLanguageSetting": {
+ "type": "string"
+ },
+ "ClientCache": {
+ "type": "string"
+ },
+ "CodecSpecification": {
+ "type": "string"
+ },
+ "ConstantIv": {
+ "type": "string"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "DirectoryStructure": {
+ "type": "string"
+ },
+ "DiscontinuityTags": {
+ "type": "string"
+ },
+ "EncryptionType": {
+ "type": "string"
+ },
+ "HlsCdnSettings": {
+ "$ref": "#/definitions/HlsCdnSettings"
+ },
+ "HlsId3SegmentTagging": {
+ "type": "string"
+ },
+ "IFrameOnlyPlaylists": {
+ "type": "string"
+ },
+ "IncompleteSegmentBehavior": {
+ "type": "string"
+ },
+ "IndexNSegments": {
+ "type": "integer"
+ },
+ "InputLossAction": {
+ "type": "string"
+ },
+ "IvInManifest": {
+ "type": "string"
+ },
+ "IvSource": {
+ "type": "string"
+ },
+ "KeepSegments": {
+ "type": "integer"
+ },
+ "KeyFormat": {
+ "type": "string"
+ },
+ "KeyFormatVersions": {
+ "type": "string"
+ },
+ "KeyProviderSettings": {
+ "$ref": "#/definitions/KeyProviderSettings"
+ },
+ "ManifestCompression": {
+ "type": "string"
+ },
+ "ManifestDurationFormat": {
+ "type": "string"
+ },
+ "MinSegmentLength": {
+ "type": "integer"
+ },
+ "Mode": {
+ "type": "string"
+ },
+ "OutputSelection": {
+ "type": "string"
+ },
+ "ProgramDateTime": {
+ "type": "string"
+ },
+ "ProgramDateTimeClock": {
+ "type": "string"
+ },
+ "ProgramDateTimePeriod": {
+ "type": "integer"
+ },
+ "RedundantManifest": {
+ "type": "string"
+ },
+ "SegmentLength": {
+ "type": "integer"
+ },
+ "SegmentationMode": {
+ "type": "string"
+ },
+ "SegmentsPerSubdirectory": {
+ "type": "integer"
+ },
+ "StreamInfResolution": {
+ "type": "string"
+ },
+ "TimedMetadataId3Frame": {
+ "type": "string"
+ },
+ "TimedMetadataId3Period": {
+ "type": "integer"
+ },
+ "TimestampDeltaMilliseconds": {
+ "type": "integer"
+ },
+ "TsFileMode": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HlsInputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Bandwidth": {
+ "type": "integer"
+ },
+ "BufferSegments": {
+ "type": "integer"
+ },
+ "Retries": {
+ "type": "integer"
+ },
+ "RetryInterval": {
+ "type": "integer"
+ },
+ "Scte35Source": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HlsMediaStoreSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ConnectionRetryInterval": {
+ "type": "integer"
+ },
+ "FilecacheDuration": {
+ "type": "integer"
+ },
+ "MediaStoreStorageClass": {
+ "type": "string"
+ },
+ "NumRetries": {
+ "type": "integer"
+ },
+ "RestartDelay": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HlsOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "H265PackagingType": {
+ "type": "string"
+ },
+ "HlsSettings": {
+ "$ref": "#/definitions/HlsSettings"
+ },
+ "NameModifier": {
+ "type": "string"
+ },
+ "SegmentModifier": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HlsS3Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "CannedAcl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HlsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioOnlyHlsSettings": {
+ "$ref": "#/definitions/AudioOnlyHlsSettings"
+ },
+ "Fmp4HlsSettings": {
+ "$ref": "#/definitions/Fmp4HlsSettings"
+ },
+ "FrameCaptureHlsSettings": {
+ "$ref": "#/definitions/FrameCaptureHlsSettings"
+ },
+ "StandardHlsSettings": {
+ "$ref": "#/definitions/StandardHlsSettings"
+ }
+ },
+ "type": "object"
+ },
+ "HlsWebdavSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ConnectionRetryInterval": {
+ "type": "integer"
+ },
+ "FilecacheDuration": {
+ "type": "integer"
+ },
+ "HttpTransferMode": {
+ "type": "string"
+ },
+ "NumRetries": {
+ "type": "integer"
+ },
+ "RestartDelay": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HtmlMotionGraphicsSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "InputAttachment": {
+ "additionalProperties": false,
+ "properties": {
+ "AutomaticInputFailoverSettings": {
+ "$ref": "#/definitions/AutomaticInputFailoverSettings"
+ },
+ "InputAttachmentName": {
+ "type": "string"
+ },
+ "InputId": {
+ "type": "string"
+ },
+ "InputSettings": {
+ "$ref": "#/definitions/InputSettings"
+ },
+ "LogicalInterfaceNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "InputChannelLevel": {
+ "additionalProperties": false,
+ "properties": {
+ "Gain": {
+ "type": "integer"
+ },
+ "InputChannel": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InputLocation": {
+ "additionalProperties": false,
+ "properties": {
+ "PasswordParam": {
+ "type": "string"
+ },
+ "Uri": {
+ "type": "string"
+ },
+ "Username": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InputLossBehavior": {
+ "additionalProperties": false,
+ "properties": {
+ "BlackFrameMsec": {
+ "type": "integer"
+ },
+ "InputLossImageColor": {
+ "type": "string"
+ },
+ "InputLossImageSlate": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "InputLossImageType": {
+ "type": "string"
+ },
+ "RepeatFrameMsec": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InputLossFailoverSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "InputLossThresholdMsec": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioSelectors": {
+ "items": {
+ "$ref": "#/definitions/AudioSelector"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "CaptionSelectors": {
+ "items": {
+ "$ref": "#/definitions/CaptionSelector"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "DeblockFilter": {
+ "type": "string"
+ },
+ "DenoiseFilter": {
+ "type": "string"
+ },
+ "FilterStrength": {
+ "type": "integer"
+ },
+ "InputFilter": {
+ "type": "string"
+ },
+ "NetworkInputSettings": {
+ "$ref": "#/definitions/NetworkInputSettings"
+ },
+ "Scte35Pid": {
+ "type": "integer"
+ },
+ "Smpte2038DataPreference": {
+ "type": "string"
+ },
+ "SourceEndBehavior": {
+ "type": "string"
+ },
+ "VideoSelector": {
+ "$ref": "#/definitions/VideoSelector"
+ }
+ },
+ "type": "object"
+ },
+ "InputSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "Codec": {
+ "type": "string"
+ },
+ "MaximumBitrate": {
+ "type": "string"
+ },
+ "Resolution": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "KeyProviderSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "StaticKeySettings": {
+ "$ref": "#/definitions/StaticKeySettings"
+ }
+ },
+ "type": "object"
+ },
+ "M2tsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AbsentInputAudioBehavior": {
+ "type": "string"
+ },
+ "Arib": {
+ "type": "string"
+ },
+ "AribCaptionsPid": {
+ "type": "string"
+ },
+ "AribCaptionsPidControl": {
+ "type": "string"
+ },
+ "AudioBufferModel": {
+ "type": "string"
+ },
+ "AudioFramesPerPes": {
+ "type": "integer"
+ },
+ "AudioPids": {
+ "type": "string"
+ },
+ "AudioStreamType": {
+ "type": "string"
+ },
+ "Bitrate": {
+ "type": "integer"
+ },
+ "BufferModel": {
+ "type": "string"
+ },
+ "CcDescriptor": {
+ "type": "string"
+ },
+ "DvbNitSettings": {
+ "$ref": "#/definitions/DvbNitSettings"
+ },
+ "DvbSdtSettings": {
+ "$ref": "#/definitions/DvbSdtSettings"
+ },
+ "DvbSubPids": {
+ "type": "string"
+ },
+ "DvbTdtSettings": {
+ "$ref": "#/definitions/DvbTdtSettings"
+ },
+ "DvbTeletextPid": {
+ "type": "string"
+ },
+ "Ebif": {
+ "type": "string"
+ },
+ "EbpAudioInterval": {
+ "type": "string"
+ },
+ "EbpLookaheadMs": {
+ "type": "integer"
+ },
+ "EbpPlacement": {
+ "type": "string"
+ },
+ "EcmPid": {
+ "type": "string"
+ },
+ "EsRateInPes": {
+ "type": "string"
+ },
+ "EtvPlatformPid": {
+ "type": "string"
+ },
+ "EtvSignalPid": {
+ "type": "string"
+ },
+ "FragmentTime": {
+ "type": "number"
+ },
+ "Klv": {
+ "type": "string"
+ },
+ "KlvDataPids": {
+ "type": "string"
+ },
+ "NielsenId3Behavior": {
+ "type": "string"
+ },
+ "NullPacketBitrate": {
+ "type": "number"
+ },
+ "PatInterval": {
+ "type": "integer"
+ },
+ "PcrControl": {
+ "type": "string"
+ },
+ "PcrPeriod": {
+ "type": "integer"
+ },
+ "PcrPid": {
+ "type": "string"
+ },
+ "PmtInterval": {
+ "type": "integer"
+ },
+ "PmtPid": {
+ "type": "string"
+ },
+ "ProgramNum": {
+ "type": "integer"
+ },
+ "RateMode": {
+ "type": "string"
+ },
+ "Scte27Pids": {
+ "type": "string"
+ },
+ "Scte35Control": {
+ "type": "string"
+ },
+ "Scte35Pid": {
+ "type": "string"
+ },
+ "Scte35PrerollPullupMilliseconds": {
+ "type": "number"
+ },
+ "SegmentationMarkers": {
+ "type": "string"
+ },
+ "SegmentationStyle": {
+ "type": "string"
+ },
+ "SegmentationTime": {
+ "type": "number"
+ },
+ "TimedMetadataBehavior": {
+ "type": "string"
+ },
+ "TimedMetadataPid": {
+ "type": "string"
+ },
+ "TransportStreamId": {
+ "type": "integer"
+ },
+ "VideoPid": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "M3u8Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioFramesPerPes": {
+ "type": "integer"
+ },
+ "AudioPids": {
+ "type": "string"
+ },
+ "EcmPid": {
+ "type": "string"
+ },
+ "KlvBehavior": {
+ "type": "string"
+ },
+ "KlvDataPids": {
+ "type": "string"
+ },
+ "NielsenId3Behavior": {
+ "type": "string"
+ },
+ "PatInterval": {
+ "type": "integer"
+ },
+ "PcrControl": {
+ "type": "string"
+ },
+ "PcrPeriod": {
+ "type": "integer"
+ },
+ "PcrPid": {
+ "type": "string"
+ },
+ "PmtInterval": {
+ "type": "integer"
+ },
+ "PmtPid": {
+ "type": "string"
+ },
+ "ProgramNum": {
+ "type": "integer"
+ },
+ "Scte35Behavior": {
+ "type": "string"
+ },
+ "Scte35Pid": {
+ "type": "string"
+ },
+ "TimedMetadataBehavior": {
+ "type": "string"
+ },
+ "TimedMetadataPid": {
+ "type": "string"
+ },
+ "TransportStreamId": {
+ "type": "integer"
+ },
+ "VideoPid": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MaintenanceCreateSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "MaintenanceDay": {
+ "type": "string"
+ },
+ "MaintenanceStartTime": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MediaPackageGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ }
+ },
+ "type": "object"
+ },
+ "MediaPackageOutputDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ChannelId": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MediaPackageOutputSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "MotionGraphicsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "MotionGraphicsInsertion": {
+ "type": "string"
+ },
+ "MotionGraphicsSettings": {
+ "$ref": "#/definitions/MotionGraphicsSettings"
+ }
+ },
+ "type": "object"
+ },
+ "MotionGraphicsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "HtmlMotionGraphicsSettings": {
+ "$ref": "#/definitions/HtmlMotionGraphicsSettings"
+ }
+ },
+ "type": "object"
+ },
+ "Mp2Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "Bitrate": {
+ "type": "number"
+ },
+ "CodingMode": {
+ "type": "string"
+ },
+ "SampleRate": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Mpeg2FilterSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "TemporalFilterSettings": {
+ "$ref": "#/definitions/TemporalFilterSettings"
+ }
+ },
+ "type": "object"
+ },
+ "Mpeg2Settings": {
+ "additionalProperties": false,
+ "properties": {
+ "AdaptiveQuantization": {
+ "type": "string"
+ },
+ "AfdSignaling": {
+ "type": "string"
+ },
+ "ColorMetadata": {
+ "type": "string"
+ },
+ "ColorSpace": {
+ "type": "string"
+ },
+ "DisplayAspectRatio": {
+ "type": "string"
+ },
+ "FilterSettings": {
+ "$ref": "#/definitions/Mpeg2FilterSettings"
+ },
+ "FixedAfd": {
+ "type": "string"
+ },
+ "FramerateDenominator": {
+ "type": "integer"
+ },
+ "FramerateNumerator": {
+ "type": "integer"
+ },
+ "GopClosedCadence": {
+ "type": "integer"
+ },
+ "GopNumBFrames": {
+ "type": "integer"
+ },
+ "GopSize": {
+ "type": "number"
+ },
+ "GopSizeUnits": {
+ "type": "string"
+ },
+ "ScanType": {
+ "type": "string"
+ },
+ "SubgopLength": {
+ "type": "string"
+ },
+ "TimecodeBurninSettings": {
+ "$ref": "#/definitions/TimecodeBurninSettings"
+ },
+ "TimecodeInsertion": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MsSmoothGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AcquisitionPointId": {
+ "type": "string"
+ },
+ "AudioOnlyTimecodeControl": {
+ "type": "string"
+ },
+ "CertificateMode": {
+ "type": "string"
+ },
+ "ConnectionRetryInterval": {
+ "type": "integer"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "EventId": {
+ "type": "string"
+ },
+ "EventIdMode": {
+ "type": "string"
+ },
+ "EventStopBehavior": {
+ "type": "string"
+ },
+ "FilecacheDuration": {
+ "type": "integer"
+ },
+ "FragmentLength": {
+ "type": "integer"
+ },
+ "InputLossAction": {
+ "type": "string"
+ },
+ "NumRetries": {
+ "type": "integer"
+ },
+ "RestartDelay": {
+ "type": "integer"
+ },
+ "SegmentationMode": {
+ "type": "string"
+ },
+ "SendDelayMs": {
+ "type": "integer"
+ },
+ "SparseTrackType": {
+ "type": "string"
+ },
+ "StreamManifestBehavior": {
+ "type": "string"
+ },
+ "TimestampOffset": {
+ "type": "string"
+ },
+ "TimestampOffsetMode": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MsSmoothOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "H265PackagingType": {
+ "type": "string"
+ },
+ "NameModifier": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MulticastInputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "SourceIpAddress": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MultiplexContainerSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "MultiplexM2tsSettings": {
+ "$ref": "#/definitions/MultiplexM2tsSettings"
+ }
+ },
+ "type": "object"
+ },
+ "MultiplexGroupSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "MultiplexM2tsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AbsentInputAudioBehavior": {
+ "type": "string"
+ },
+ "Arib": {
+ "type": "string"
+ },
+ "AudioBufferModel": {
+ "type": "string"
+ },
+ "AudioFramesPerPes": {
+ "type": "integer"
+ },
+ "AudioStreamType": {
+ "type": "string"
+ },
+ "CcDescriptor": {
+ "type": "string"
+ },
+ "Ebif": {
+ "type": "string"
+ },
+ "EsRateInPes": {
+ "type": "string"
+ },
+ "Klv": {
+ "type": "string"
+ },
+ "NielsenId3Behavior": {
+ "type": "string"
+ },
+ "PcrControl": {
+ "type": "string"
+ },
+ "PcrPeriod": {
+ "type": "integer"
+ },
+ "Scte35Control": {
+ "type": "string"
+ },
+ "Scte35PrerollPullupMilliseconds": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "MultiplexOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerSettings": {
+ "$ref": "#/definitions/MultiplexContainerSettings"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ }
+ },
+ "type": "object"
+ },
+ "MultiplexProgramChannelDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "MultiplexId": {
+ "type": "string"
+ },
+ "ProgramName": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkInputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "HlsInputSettings": {
+ "$ref": "#/definitions/HlsInputSettings"
+ },
+ "MulticastInputSettings": {
+ "$ref": "#/definitions/MulticastInputSettings"
+ },
+ "ServerValidation": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NielsenCBET": {
+ "additionalProperties": false,
+ "properties": {
+ "CbetCheckDigitString": {
+ "type": "string"
+ },
+ "CbetStepaside": {
+ "type": "string"
+ },
+ "Csid": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NielsenConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "DistributorId": {
+ "type": "string"
+ },
+ "NielsenPcmToId3Tagging": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NielsenNaesIiNw": {
+ "additionalProperties": false,
+ "properties": {
+ "CheckDigitString": {
+ "type": "string"
+ },
+ "Sid": {
+ "type": "number"
+ },
+ "Timezone": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NielsenWatermarksSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "NielsenCbetSettings": {
+ "$ref": "#/definitions/NielsenCBET"
+ },
+ "NielsenDistributionType": {
+ "type": "string"
+ },
+ "NielsenNaesIiNwSettings": {
+ "$ref": "#/definitions/NielsenNaesIiNw"
+ }
+ },
+ "type": "object"
+ },
+ "Output": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioDescriptionNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "CaptionDescriptionNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "OutputName": {
+ "type": "string"
+ },
+ "OutputSettings": {
+ "$ref": "#/definitions/OutputSettings"
+ },
+ "VideoDescriptionName": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OutputDestination": {
+ "additionalProperties": false,
+ "properties": {
+ "Id": {
+ "type": "string"
+ },
+ "MediaPackageSettings": {
+ "items": {
+ "$ref": "#/definitions/MediaPackageOutputDestinationSettings"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "MultiplexSettings": {
+ "$ref": "#/definitions/MultiplexProgramChannelDestinationSettings"
+ },
+ "Settings": {
+ "items": {
+ "$ref": "#/definitions/OutputDestinationSettings"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "SrtSettings": {
+ "items": {
+ "$ref": "#/definitions/SrtOutputDestinationSettings"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OutputDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "PasswordParam": {
+ "type": "string"
+ },
+ "StreamName": {
+ "type": "string"
+ },
+ "Url": {
+ "type": "string"
+ },
+ "Username": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OutputGroup": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "OutputGroupSettings": {
+ "$ref": "#/definitions/OutputGroupSettings"
+ },
+ "Outputs": {
+ "items": {
+ "$ref": "#/definitions/Output"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OutputGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ArchiveGroupSettings": {
+ "$ref": "#/definitions/ArchiveGroupSettings"
+ },
+ "CmafIngestGroupSettings": {
+ "$ref": "#/definitions/CmafIngestGroupSettings"
+ },
+ "FrameCaptureGroupSettings": {
+ "$ref": "#/definitions/FrameCaptureGroupSettings"
+ },
+ "HlsGroupSettings": {
+ "$ref": "#/definitions/HlsGroupSettings"
+ },
+ "MediaPackageGroupSettings": {
+ "$ref": "#/definitions/MediaPackageGroupSettings"
+ },
+ "MsSmoothGroupSettings": {
+ "$ref": "#/definitions/MsSmoothGroupSettings"
+ },
+ "MultiplexGroupSettings": {
+ "$ref": "#/definitions/MultiplexGroupSettings"
+ },
+ "RtmpGroupSettings": {
+ "$ref": "#/definitions/RtmpGroupSettings"
+ },
+ "SrtGroupSettings": {
+ "$ref": "#/definitions/SrtGroupSettings"
+ },
+ "UdpGroupSettings": {
+ "$ref": "#/definitions/UdpGroupSettings"
+ }
+ },
+ "type": "object"
+ },
+ "OutputLocationRef": {
+ "additionalProperties": false,
+ "properties": {
+ "DestinationRefId": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OutputLockingSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "EpochLockingSettings": {
+ "$ref": "#/definitions/EpochLockingSettings"
+ },
+ "PipelineLockingSettings": {
+ "$ref": "#/definitions/PipelineLockingSettings"
+ }
+ },
+ "type": "object"
+ },
+ "OutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ArchiveOutputSettings": {
+ "$ref": "#/definitions/ArchiveOutputSettings"
+ },
+ "CmafIngestOutputSettings": {
+ "$ref": "#/definitions/CmafIngestOutputSettings"
+ },
+ "FrameCaptureOutputSettings": {
+ "$ref": "#/definitions/FrameCaptureOutputSettings"
+ },
+ "HlsOutputSettings": {
+ "$ref": "#/definitions/HlsOutputSettings"
+ },
+ "MediaPackageOutputSettings": {
+ "$ref": "#/definitions/MediaPackageOutputSettings"
+ },
+ "MsSmoothOutputSettings": {
+ "$ref": "#/definitions/MsSmoothOutputSettings"
+ },
+ "MultiplexOutputSettings": {
+ "$ref": "#/definitions/MultiplexOutputSettings"
+ },
+ "RtmpOutputSettings": {
+ "$ref": "#/definitions/RtmpOutputSettings"
+ },
+ "SrtOutputSettings": {
+ "$ref": "#/definitions/SrtOutputSettings"
+ },
+ "UdpOutputSettings": {
+ "$ref": "#/definitions/UdpOutputSettings"
+ }
+ },
+ "type": "object"
+ },
+ "PassThroughSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "PipelineLockingSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "RawSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "Rec601Settings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "Rec709Settings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "RemixSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "ChannelMappings": {
+ "items": {
+ "$ref": "#/definitions/AudioChannelMapping"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "ChannelsIn": {
+ "type": "integer"
+ },
+ "ChannelsOut": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "RtmpCaptionInfoDestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "RtmpGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AdMarkers": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "AuthenticationScheme": {
+ "type": "string"
+ },
+ "CacheFullBehavior": {
+ "type": "string"
+ },
+ "CacheLength": {
+ "type": "integer"
+ },
+ "CaptionData": {
+ "type": "string"
+ },
+ "IncludeFillerNalUnits": {
+ "type": "string"
+ },
+ "InputLossAction": {
+ "type": "string"
+ },
+ "RestartDelay": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "RtmpOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "CertificateMode": {
+ "type": "string"
+ },
+ "ConnectionRetryInterval": {
+ "type": "integer"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "NumRetries": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Scte20PlusEmbeddedDestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "Scte20SourceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Convert608To708": {
+ "type": "string"
+ },
+ "Source608ChannelNumber": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Scte27DestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "Scte27SourceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "OcrLanguage": {
+ "type": "string"
+ },
+ "Pid": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Scte35SpliceInsert": {
+ "additionalProperties": false,
+ "properties": {
+ "AdAvailOffset": {
+ "type": "integer"
+ },
+ "NoRegionalBlackoutFlag": {
+ "type": "string"
+ },
+ "WebDeliveryAllowedFlag": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Scte35TimeSignalApos": {
+ "additionalProperties": false,
+ "properties": {
+ "AdAvailOffset": {
+ "type": "integer"
+ },
+ "NoRegionalBlackoutFlag": {
+ "type": "string"
+ },
+ "WebDeliveryAllowedFlag": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SmpteTtDestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "SrtGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "InputLossAction": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SrtOutputDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "EncryptionPassphraseSecretArn": {
+ "type": "string"
+ },
+ "StreamId": {
+ "type": "string"
+ },
+ "Url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SrtOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "BufferMsec": {
+ "type": "integer"
+ },
+ "ContainerSettings": {
+ "$ref": "#/definitions/UdpContainerSettings"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "EncryptionType": {
+ "type": "string"
+ },
+ "Latency": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "StandardHlsSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "AudioRenditionSets": {
+ "type": "string"
+ },
+ "M3u8Settings": {
+ "$ref": "#/definitions/M3u8Settings"
+ }
+ },
+ "type": "object"
+ },
+ "StaticKeySettings": {
+ "additionalProperties": false,
+ "properties": {
+ "KeyProviderServer": {
+ "$ref": "#/definitions/InputLocation"
+ },
+ "StaticKeyValue": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TeletextDestinationSettings": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "TeletextSourceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "OutputRectangle": {
+ "$ref": "#/definitions/CaptionRectangle"
+ },
+ "PageNumber": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TemporalFilterSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "PostFilterSharpening": {
+ "type": "string"
+ },
+ "Strength": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ThumbnailConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "State": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimecodeBurninSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "FontSize": {
+ "type": "string"
+ },
+ "Position": {
+ "type": "string"
+ },
+ "Prefix": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimecodeConfig": {
+ "additionalProperties": false,
+ "properties": {
+ "Source": {
+ "type": "string"
+ },
+ "SyncThreshold": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "TtmlDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "StyleControl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UdpContainerSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "M2tsSettings": {
+ "$ref": "#/definitions/M2tsSettings"
+ }
+ },
+ "type": "object"
+ },
+ "UdpGroupSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "InputLossAction": {
+ "type": "string"
+ },
+ "TimedMetadataId3Frame": {
+ "type": "string"
+ },
+ "TimedMetadataId3Period": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "UdpOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "BufferMsec": {
+ "type": "integer"
+ },
+ "ContainerSettings": {
+ "$ref": "#/definitions/UdpContainerSettings"
+ },
+ "Destination": {
+ "$ref": "#/definitions/OutputLocationRef"
+ },
+ "FecOutputSettings": {
+ "$ref": "#/definitions/FecOutputSettings"
+ }
+ },
+ "type": "object"
+ },
+ "VideoBlackFailoverSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "BlackDetectThreshold": {
+ "type": "number"
+ },
+ "VideoBlackThresholdMsec": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "VideoCodecSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Av1Settings": {
+ "$ref": "#/definitions/Av1Settings"
+ },
+ "FrameCaptureSettings": {
+ "$ref": "#/definitions/FrameCaptureSettings"
+ },
+ "H264Settings": {
+ "$ref": "#/definitions/H264Settings"
+ },
+ "H265Settings": {
+ "$ref": "#/definitions/H265Settings"
+ },
+ "Mpeg2Settings": {
+ "$ref": "#/definitions/Mpeg2Settings"
+ }
+ },
+ "type": "object"
+ },
+ "VideoDescription": {
+ "additionalProperties": false,
+ "properties": {
+ "CodecSettings": {
+ "$ref": "#/definitions/VideoCodecSettings"
+ },
+ "Height": {
+ "type": "integer"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "RespondToAfd": {
+ "type": "string"
+ },
+ "ScalingBehavior": {
+ "type": "string"
+ },
+ "Sharpness": {
+ "type": "integer"
+ },
+ "Width": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "VideoSelector": {
+ "additionalProperties": false,
+ "properties": {
+ "ColorSpace": {
+ "type": "string"
+ },
+ "ColorSpaceSettings": {
+ "$ref": "#/definitions/VideoSelectorColorSpaceSettings"
+ },
+ "ColorSpaceUsage": {
+ "type": "string"
+ },
+ "SelectorSettings": {
+ "$ref": "#/definitions/VideoSelectorSettings"
+ }
+ },
+ "type": "object"
+ },
+ "VideoSelectorColorSpaceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Hdr10Settings": {
+ "$ref": "#/definitions/Hdr10Settings"
+ }
+ },
+ "type": "object"
+ },
+ "VideoSelectorPid": {
+ "additionalProperties": false,
+ "properties": {
+ "Pid": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "VideoSelectorProgramId": {
+ "additionalProperties": false,
+ "properties": {
+ "ProgramId": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "VideoSelectorSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "VideoSelectorPid": {
+ "$ref": "#/definitions/VideoSelectorPid"
+ },
+ "VideoSelectorProgramId": {
+ "$ref": "#/definitions/VideoSelectorProgramId"
+ }
+ },
+ "type": "object"
+ },
+ "VpcOutputSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "PublicAddressAllocationIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "SecurityGroupIds": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "SubnetIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "WavSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "BitDepth": {
+ "type": "number"
+ },
+ "CodingMode": {
+ "type": "string"
+ },
+ "SampleRate": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "WebvttDestinationSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "StyleControl": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "AnywhereSettings": {
+ "$ref": "#/definitions/AnywhereSettings"
+ },
+ "Arn": {
+ "type": "string"
+ },
+ "CdiInputSpecification": {
+ "$ref": "#/definitions/CdiInputSpecification"
+ },
+ "ChannelClass": {
+ "type": "string"
+ },
+ "Destinations": {
+ "items": {
+ "$ref": "#/definitions/OutputDestination"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "EncoderSettings": {
+ "$ref": "#/definitions/EncoderSettings"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "InputAttachments": {
+ "items": {
+ "$ref": "#/definitions/InputAttachment"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "InputSpecification": {
+ "$ref": "#/definitions/InputSpecification"
+ },
+ "Inputs": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "LogLevel": {
+ "type": "string"
+ },
+ "Maintenance": {
+ "$ref": "#/definitions/MaintenanceCreateSettings"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "Tags": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "Vpc": {
+ "$ref": "#/definitions/VpcOutputSettings"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Inputs",
+ "/properties/Id",
+ "/properties/Arn"
+ ],
+ "typeName": "AWS::MediaLive::Channel"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-medialive-input.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-medialive-input.json
new file mode 100644
index 0000000000..da0d73a7e8
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-medialive-input.json
@@ -0,0 +1,249 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Vpc",
+ "/properties/Type",
+ "/properties/InputNetworkLocation"
+ ],
+ "definitions": {
+ "InputDestinationRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "Network": {
+ "type": "string"
+ },
+ "NetworkRoutes": {
+ "items": {
+ "$ref": "#/definitions/InputRequestDestinationRoute"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StaticIpAddress": {
+ "type": "string"
+ },
+ "StreamName": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InputDeviceSettings": {
+ "additionalProperties": false,
+ "properties": {
+ "Id": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InputRequestDestinationRoute": {
+ "additionalProperties": false,
+ "properties": {
+ "Cidr": {
+ "type": "string"
+ },
+ "Gateway": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InputSourceRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "PasswordParam": {
+ "type": "string"
+ },
+ "Url": {
+ "type": "string"
+ },
+ "Username": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InputVpcRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "SecurityGroupIds": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "SubnetIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "MediaConnectFlowRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "FlowArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MulticastSettingsCreateRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "Sources": {
+ "items": {
+ "$ref": "#/definitions/MulticastSourceCreateRequest"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "MulticastSourceCreateRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "SourceIp": {
+ "type": "string"
+ },
+ "Url": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SrtCallerDecryptionRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "Algorithm": {
+ "type": "string"
+ },
+ "PassphraseSecretArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SrtCallerSourceRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "Decryption": {
+ "$ref": "#/definitions/SrtCallerDecryptionRequest"
+ },
+ "MinimumLatency": {
+ "type": "integer"
+ },
+ "SrtListenerAddress": {
+ "type": "string"
+ },
+ "SrtListenerPort": {
+ "type": "string"
+ },
+ "StreamId": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SrtSettingsRequest": {
+ "additionalProperties": false,
+ "properties": {
+ "SrtCallerSources": {
+ "items": {
+ "$ref": "#/definitions/SrtCallerSourceRequest"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "Destinations": {
+ "items": {
+ "$ref": "#/definitions/InputDestinationRequest"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "Id": {
+ "type": "string"
+ },
+ "InputDevices": {
+ "items": {
+ "$ref": "#/definitions/InputDeviceSettings"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "InputNetworkLocation": {
+ "type": "string"
+ },
+ "InputSecurityGroups": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "MediaConnectFlows": {
+ "items": {
+ "$ref": "#/definitions/MediaConnectFlowRequest"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "MulticastSettings": {
+ "$ref": "#/definitions/MulticastSettingsCreateRequest"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "Sources": {
+ "items": {
+ "$ref": "#/definitions/InputSourceRequest"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "SrtSettings": {
+ "$ref": "#/definitions/SrtSettingsRequest"
+ },
+ "Tags": {
+ "format": "json",
+ "type": [
+ "object",
+ "string"
+ ]
+ },
+ "Type": {
+ "type": "string"
+ },
+ "Vpc": {
+ "$ref": "#/definitions/InputVpcRequest"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id",
+ "/properties/Arn"
+ ],
+ "typeName": "AWS::MediaLive::Input"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-networkfirewall-firewallpolicy.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-networkfirewall-firewallpolicy.json
new file mode 100644
index 0000000000..973b595561
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-networkfirewall-firewallpolicy.json
@@ -0,0 +1,332 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/FirewallPolicyName"
+ ],
+ "definitions": {
+ "ActionDefinition": {
+ "additionalProperties": false,
+ "properties": {
+ "PublishMetricAction": {
+ "$ref": "#/definitions/PublishMetricAction"
+ }
+ },
+ "type": "object"
+ },
+ "CustomAction": {
+ "additionalProperties": false,
+ "properties": {
+ "ActionDefinition": {
+ "$ref": "#/definitions/ActionDefinition"
+ },
+ "ActionName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ActionName",
+ "ActionDefinition"
+ ],
+ "type": "object"
+ },
+ "Dimension": {
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-_ ]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value"
+ ],
+ "type": "object"
+ },
+ "FirewallPolicy": {
+ "additionalProperties": false,
+ "properties": {
+ "PolicyVariables": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleVariables": {
+ "$ref": "#/definitions/RuleVariables"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatefulEngineOptions": {
+ "$ref": "#/definitions/StatefulEngineOptions"
+ },
+ "StatefulRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatefulRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessCustomActions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/CustomAction"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessFragmentDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatelessRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TLSInspectionConfigurationArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "StatelessDefaultActions",
+ "StatelessFragmentDefaultActions"
+ ],
+ "type": "object"
+ },
+ "IPSet": {
+ "additionalProperties": false,
+ "properties": {
+ "Definition": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/VariableDefinition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OverrideAction": {
+ "enum": [
+ "DROP_TO_ALERT"
+ ],
+ "type": "string"
+ },
+ "Priority": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "PublishMetricAction": {
+ "additionalProperties": false,
+ "properties": {
+ "Dimensions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/Dimension"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "required": [
+ "Dimensions"
+ ],
+ "type": "object"
+ },
+ "ResourceArn": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^(arn:aws.*)$",
+ "type": "string"
+ },
+ "RuleOrder": {
+ "enum": [
+ "DEFAULT_ACTION_ORDER",
+ "STRICT_ORDER"
+ ],
+ "type": "string"
+ },
+ "RuleVariables": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[A-Za-z0-9_]{1,32}$": {
+ "$ref": "#/definitions/IPSet"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulEngineOptions": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleOrder": {
+ "$ref": "#/definitions/RuleOrder"
+ },
+ "StreamExceptionPolicy": {
+ "$ref": "#/definitions/StreamExceptionPolicy"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupOverride": {
+ "additionalProperties": false,
+ "properties": {
+ "Action": {
+ "$ref": "#/definitions/OverrideAction"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Override": {
+ "$ref": "#/definitions/StatefulRuleGroupOverride"
+ },
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn"
+ ],
+ "type": "object"
+ },
+ "StatelessRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn",
+ "Priority"
+ ],
+ "type": "object"
+ },
+ "StreamExceptionPolicy": {
+ "enum": [
+ "DROP",
+ "CONTINUE",
+ "REJECT"
+ ],
+ "type": "string"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ },
+ "VariableDefinition": {
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/FirewallPolicyArn"
+ ],
+ "properties": {
+ "Description": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "FirewallPolicy": {
+ "$ref": "#/definitions/FirewallPolicy"
+ },
+ "FirewallPolicyArn": {
+ "$ref": "#/definitions/ResourceArn"
+ },
+ "FirewallPolicyId": {
+ "maxLength": 36,
+ "minLength": 36,
+ "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$",
+ "type": "string"
+ },
+ "FirewallPolicyName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-]+$",
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/FirewallPolicyArn",
+ "/properties/FirewallPolicyId"
+ ],
+ "required": [
+ "FirewallPolicyName",
+ "FirewallPolicy"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::NetworkFirewall::FirewallPolicy"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-route53resolver-resolverrule.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-route53resolver-resolverrule.json
new file mode 100644
index 0000000000..03475784a5
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-route53resolver-resolverrule.json
@@ -0,0 +1,131 @@
+{
+ "additionalProperties": false,
+ "conditionalCreateOnlyProperties": [
+ "/properties/DomainName"
+ ],
+ "createOnlyProperties": [
+ "/properties/RuleType"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ],
+ "type": "object"
+ },
+ "TargetAddress": {
+ "additionalProperties": false,
+ "properties": {
+ "Ip": {
+ "type": "string"
+ },
+ "Ipv6": {
+ "type": "string"
+ },
+ "Port": {
+ "maxLength": 65535,
+ "minLength": 0,
+ "type": "string"
+ },
+ "Protocol": {
+ "enum": [
+ "Do53",
+ "DoH"
+ ],
+ "type": "string"
+ },
+ "ServerNameIndication": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ResolverRuleId"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "DomainName": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 64,
+ "minLength": 0,
+ "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)",
+ "type": "string"
+ },
+ "ResolverEndpointId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "ResolverRuleId": {
+ "type": "string"
+ },
+ "RuleType": {
+ "enum": [
+ "FORWARD",
+ "SYSTEM",
+ "RECURSIVE",
+ "DELEGATE"
+ ],
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TargetIps": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/TargetAddress"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "propertyTransform": {
+ "/properties/DomainName": "$join([DomainName, \".\"]) $OR DomainName"
+ },
+ "readOnlyProperties": [
+ "/properties/Arn",
+ "/properties/ResolverRuleId"
+ ],
+ "required": [
+ "RuleType"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53resolver.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Route53Resolver::ResolverRule"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-workspacesweb-identityprovider.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-workspacesweb-identityprovider.json
deleted file mode 100644
index 5cc12fe4b3..0000000000
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-workspacesweb-identityprovider.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
- "additionalProperties": false,
- "createOnlyProperties": [
- "/properties/PortalArn"
- ],
- "definitions": {
- "IdentityProviderDetails": {
- "additionalProperties": false,
- "patternProperties": {
- "^[\\s\\S]*$": {
- "maxLength": 131072,
- "minLength": 0,
- "pattern": "^[\\s\\S]*$",
- "type": "string"
- }
- },
- "type": "object"
- },
- "IdentityProviderType": {
- "enum": [
- "SAML",
- "Facebook",
- "Google",
- "LoginWithAmazon",
- "SignInWithApple",
- "OIDC"
- ],
- "type": "string"
- }
- },
- "primaryIdentifier": [
- "/properties/IdentityProviderArn"
- ],
- "properties": {
- "IdentityProviderArn": {
- "maxLength": 2048,
- "minLength": 20,
- "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36}){2,}$",
- "type": "string"
- },
- "IdentityProviderDetails": {
- "$ref": "#/definitions/IdentityProviderDetails"
- },
- "IdentityProviderName": {
- "maxLength": 32,
- "minLength": 1,
- "pattern": "^[^_][\\p{L}\\p{M}\\p{S}\\p{N}\\p{P}][^_]+$",
- "type": "string"
- },
- "IdentityProviderType": {
- "$ref": "#/definitions/IdentityProviderType"
- },
- "PortalArn": {
- "maxLength": 2048,
- "minLength": 20,
- "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$",
- "type": "string"
- }
- },
- "readOnlyProperties": [
- "/properties/IdentityProviderArn"
- ],
- "required": [
- "IdentityProviderDetails",
- "IdentityProviderName",
- "IdentityProviderType"
- ],
- "sourceUrl": "https://github.com/shivankgoel/aws-cloudformation-resource-providers-workspaces-web",
- "tagging": {
- "cloudFormationSystemTags": false,
- "tagOnCreate": false,
- "tagUpdatable": false,
- "taggable": false
- },
- "typeName": "AWS::WorkSpacesWeb::IdentityProvider",
- "writeOnlyProperties": [
- "/properties/PortalArn"
- ]
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-workspacesweb-usersettings.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-workspacesweb-usersettings.json
deleted file mode 100644
index b27367123f..0000000000
--- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-workspacesweb-usersettings.json
+++ /dev/null
@@ -1,194 +0,0 @@
-{
- "additionalProperties": false,
- "createOnlyProperties": [
- "/properties/AdditionalEncryptionContext",
- "/properties/CustomerManagedKey"
- ],
- "definitions": {
- "CookieSpecification": {
- "additionalProperties": false,
- "properties": {
- "Domain": {
- "maxLength": 253,
- "minLength": 0,
- "pattern": "^(\\.?)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)*[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$",
- "type": "string"
- },
- "Name": {
- "maxLength": 4096,
- "minLength": 0,
- "type": "string"
- },
- "Path": {
- "maxLength": 2000,
- "minLength": 0,
- "pattern": "^/(\\S)*$",
- "type": "string"
- }
- },
- "required": [
- "Domain"
- ],
- "type": "object"
- },
- "CookieSynchronizationConfiguration": {
- "additionalProperties": false,
- "properties": {
- "Allowlist": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/CookieSpecification"
- },
- "maxItems": 10,
- "minItems": 0,
- "type": "array"
- },
- "Blocklist": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/CookieSpecification"
- },
- "maxItems": 10,
- "minItems": 0,
- "type": "array"
- }
- },
- "required": [
- "Allowlist"
- ],
- "type": "object"
- },
- "EnabledType": {
- "enum": [
- "Disabled",
- "Enabled"
- ],
- "type": "string"
- },
- "EncryptionContextMap": {
- "additionalProperties": false,
- "patternProperties": {
- "^[\\s\\S]*$": {
- "maxLength": 131072,
- "minLength": 0,
- "pattern": "^[\\s\\S]*$",
- "type": "string"
- }
- },
- "type": "object"
- },
- "Tag": {
- "additionalProperties": false,
- "properties": {
- "Key": {
- "maxLength": 128,
- "minLength": 1,
- "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
- "type": "string"
- },
- "Value": {
- "maxLength": 256,
- "minLength": 0,
- "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
- "type": "string"
- }
- },
- "required": [
- "Key",
- "Value"
- ],
- "type": "object"
- }
- },
- "primaryIdentifier": [
- "/properties/UserSettingsArn"
- ],
- "properties": {
- "AdditionalEncryptionContext": {
- "$ref": "#/definitions/EncryptionContextMap"
- },
- "AssociatedPortalArns": {
- "insertionOrder": false,
- "items": {
- "maxLength": 2048,
- "minLength": 20,
- "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$",
- "type": "string"
- },
- "type": "array"
- },
- "CookieSynchronizationConfiguration": {
- "$ref": "#/definitions/CookieSynchronizationConfiguration"
- },
- "CopyAllowed": {
- "$ref": "#/definitions/EnabledType"
- },
- "CustomerManagedKey": {
- "maxLength": 2048,
- "minLength": 20,
- "pattern": "^arn:[\\w+=\\/,.@-]+:kms:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:key\\/[a-zA-Z0-9-]+$",
- "type": "string"
- },
- "DeepLinkAllowed": {
- "$ref": "#/definitions/EnabledType"
- },
- "DisconnectTimeoutInMinutes": {
- "default": null,
- "maximum": 600,
- "minimum": 1,
- "type": "number"
- },
- "DownloadAllowed": {
- "$ref": "#/definitions/EnabledType"
- },
- "IdleDisconnectTimeoutInMinutes": {
- "default": null,
- "maximum": 60,
- "minimum": 0,
- "type": "number"
- },
- "PasteAllowed": {
- "$ref": "#/definitions/EnabledType"
- },
- "PrintAllowed": {
- "$ref": "#/definitions/EnabledType"
- },
- "Tags": {
- "insertionOrder": false,
- "items": {
- "$ref": "#/definitions/Tag"
- },
- "maxItems": 200,
- "minItems": 0,
- "type": "array"
- },
- "UploadAllowed": {
- "$ref": "#/definitions/EnabledType"
- },
- "UserSettingsArn": {
- "maxLength": 2048,
- "minLength": 20,
- "pattern": "^arn:[\\w+=\\/,.@-]+:[a-zA-Z0-9\\-]+:[a-zA-Z0-9\\-]*:[a-zA-Z0-9]{1,12}:[a-zA-Z]+(\\/[a-fA-F0-9\\-]{36})+$",
- "type": "string"
- }
- },
- "readOnlyProperties": [
- "/properties/AssociatedPortalArns",
- "/properties/UserSettingsArn"
- ],
- "required": [
- "CopyAllowed",
- "DownloadAllowed",
- "PasteAllowed",
- "PrintAllowed",
- "UploadAllowed"
- ],
- "tagging": {
- "cloudFormationSystemTags": false,
- "tagOnCreate": true,
- "tagProperty": "/properties/Tags",
- "tagUpdatable": true,
- "taggable": true
- },
- "typeName": "AWS::WorkSpacesWeb::UserSettings"
-}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py
index d778236ad9..5c16b63582 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/__init__.py
@@ -1477,7 +1477,6 @@
"aws-dms-instanceprofile.json",
"aws-dms-migrationproject.json",
"aws-dms-replicationconfig.json",
- "aws-dms-replicationinstance.json",
"aws-dms-replicationsubnetgroup.json",
"aws-dms-replicationtask.json",
"aws-docdb-dbcluster.json",
@@ -1589,9 +1588,7 @@
"aws-ecs-cluster.json",
"aws-ecs-clustercapacityproviderassociations.json",
"aws-ecs-primarytaskset.json",
- "aws-ecs-service.json",
"aws-ecs-taskdefinition.json",
- "aws-ecs-taskset.json",
"aws-efs-accesspoint.json",
"aws-efs-filesystem.json",
"aws-efs-mounttarget.json",
@@ -1789,7 +1786,6 @@
"aws-kendra-datasource.json",
"aws-kendra-faq.json",
"aws-kendra-index.json",
- "aws-kinesis-stream.json",
"aws-kinesis-streamconsumer.json",
"aws-kinesisanalytics-application.json",
"aws-kinesisanalytics-applicationoutput.json",
@@ -1922,7 +1918,6 @@
"aws-neptunegraph-graph.json",
"aws-neptunegraph-privategraphendpoint.json",
"aws-networkfirewall-firewall.json",
- "aws-networkfirewall-firewallpolicy.json",
"aws-networkfirewall-loggingconfiguration.json",
"aws-networkfirewall-rulegroup.json",
"aws-networkfirewall-tlsinspectionconfiguration.json",
@@ -2013,7 +2008,6 @@
"aws-ram-permission.json",
"aws-ram-resourceshare.json",
"aws-rds-customdbengineversion.json",
- "aws-rds-dbcluster.json",
"aws-rds-dbclusterparametergroup.json",
"aws-rds-dbinstance.json",
"aws-rds-dbparametergroup.json",
@@ -2022,7 +2016,6 @@
"aws-rds-dbproxytargetgroup.json",
"aws-rds-dbsecuritygroup.json",
"aws-rds-dbsecuritygroupingress.json",
- "aws-rds-dbsubnetgroup.json",
"aws-rds-eventsubscription.json",
"aws-rds-globalcluster.json",
"aws-rds-integration.json",
@@ -2071,7 +2064,6 @@
"aws-route53resolver-resolverendpoint.json",
"aws-route53resolver-resolverqueryloggingconfig.json",
"aws-route53resolver-resolverqueryloggingconfigassociation.json",
- "aws-route53resolver-resolverrule.json",
"aws-route53resolver-resolverruleassociation.json",
"aws-rum-appmonitor.json",
"aws-s3-accessgrant.json",
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-appstream-imagebuilder.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-appstream-imagebuilder.json
index 811d64e164..91b4176ccb 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-appstream-imagebuilder.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-appstream-imagebuilder.json
@@ -95,12 +95,14 @@
"type": "boolean"
},
"IamRoleArn": {
+ "pattern": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$",
"type": "string"
},
"Id": {
"type": "string"
},
"ImageArn": {
+ "pattern": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$",
"type": "string"
},
"ImageName": {
@@ -110,6 +112,7 @@
"type": "string"
},
"Name": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
},
"StreamingUrl": {
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-dms-replicationinstance.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-dms-replicationinstance.json
new file mode 100644
index 0000000000..3d4dfcb1dc
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-dms-replicationinstance.json
@@ -0,0 +1,106 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/KmsKeyId",
+ "/properties/ResourceIdentifier",
+ "/properties/ReplicationSubnetGroupIdentifier",
+ "/properties/PubliclyAccessible"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "AllocatedStorage": {
+ "type": "integer"
+ },
+ "AllowMajorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AutoMinorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AvailabilityZone": {
+ "type": "string"
+ },
+ "EngineVersion": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "MultiAZ": {
+ "type": "boolean"
+ },
+ "NetworkType": {
+ "type": "string"
+ },
+ "PreferredMaintenanceWindow": {
+ "type": "string"
+ },
+ "PubliclyAccessible": {
+ "type": "boolean"
+ },
+ "ReplicationInstanceClass": {
+ "type": "string"
+ },
+ "ReplicationInstanceIdentifier": {
+ "type": "string"
+ },
+ "ReplicationInstancePrivateIpAddresses": {
+ "type": "string"
+ },
+ "ReplicationInstancePublicIpAddresses": {
+ "type": "string"
+ },
+ "ReplicationSubnetGroupIdentifier": {
+ "type": "string"
+ },
+ "ResourceIdentifier": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "VpcSecurityGroupIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ReplicationInstancePublicIpAddresses",
+ "/properties/Id",
+ "/properties/ReplicationInstancePrivateIpAddresses"
+ ],
+ "required": [
+ "ReplicationInstanceClass"
+ ],
+ "typeName": "AWS::DMS::ReplicationInstance"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-apidestination.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-apidestination.json
index 2dad3ac2e5..84f7d5fd6e 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-apidestination.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-apidestination.json
@@ -11,6 +11,7 @@
"type": "string"
},
"ConnectionArn": {
+ "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$",
"type": "string"
},
"Description": {
@@ -30,6 +31,7 @@
"type": "string"
},
"InvocationEndpoint": {
+ "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$",
"type": "string"
},
"InvocationRateLimitPerSecond": {
@@ -39,6 +41,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-connection.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-connection.json
index 0ee80bb23e..c49843c440 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-connection.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-events-connection.json
@@ -189,6 +189,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
},
"SecretArn": {
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-kinesis-stream.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-kinesis-stream.json
new file mode 100644
index 0000000000..be1bc65c07
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-kinesis-stream.json
@@ -0,0 +1,133 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "definitions": {
+ "StreamEncryption": {
+ "additionalProperties": false,
+ "properties": {
+ "EncryptionType": {
+ "enum": [
+ "KMS"
+ ],
+ "type": "string"
+ },
+ "KeyId": {
+ "anyOf": [
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/Arn",
+ "typeName": "AWS::KMS::Key"
+ }
+ },
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/KeyId",
+ "typeName": "AWS::KMS::Key"
+ }
+ }
+ ],
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "EncryptionType",
+ "KeyId"
+ ],
+ "type": "object"
+ },
+ "StreamModeDetails": {
+ "additionalProperties": false,
+ "properties": {
+ "StreamMode": {
+ "enum": [
+ "ON_DEMAND",
+ "PROVISIONED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "StreamMode"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9_.-]+$",
+ "type": "string"
+ },
+ "RetentionPeriodHours": {
+ "maximum": 8760,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "ShardCount": {
+ "maximum": 100000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "StreamEncryption": {
+ "$ref": "#/definitions/StreamEncryption"
+ },
+ "StreamModeDetails": {
+ "$ref": "#/definitions/StreamModeDetails",
+ "default": {
+ "StreamMode": "PROVISIONED"
+ }
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Kinesis::Stream"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-networkfirewall-firewallpolicy.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-networkfirewall-firewallpolicy.json
new file mode 100644
index 0000000000..973b595561
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-networkfirewall-firewallpolicy.json
@@ -0,0 +1,332 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/FirewallPolicyName"
+ ],
+ "definitions": {
+ "ActionDefinition": {
+ "additionalProperties": false,
+ "properties": {
+ "PublishMetricAction": {
+ "$ref": "#/definitions/PublishMetricAction"
+ }
+ },
+ "type": "object"
+ },
+ "CustomAction": {
+ "additionalProperties": false,
+ "properties": {
+ "ActionDefinition": {
+ "$ref": "#/definitions/ActionDefinition"
+ },
+ "ActionName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ActionName",
+ "ActionDefinition"
+ ],
+ "type": "object"
+ },
+ "Dimension": {
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-_ ]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value"
+ ],
+ "type": "object"
+ },
+ "FirewallPolicy": {
+ "additionalProperties": false,
+ "properties": {
+ "PolicyVariables": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleVariables": {
+ "$ref": "#/definitions/RuleVariables"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatefulEngineOptions": {
+ "$ref": "#/definitions/StatefulEngineOptions"
+ },
+ "StatefulRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatefulRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessCustomActions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/CustomAction"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessFragmentDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatelessRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TLSInspectionConfigurationArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "StatelessDefaultActions",
+ "StatelessFragmentDefaultActions"
+ ],
+ "type": "object"
+ },
+ "IPSet": {
+ "additionalProperties": false,
+ "properties": {
+ "Definition": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/VariableDefinition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OverrideAction": {
+ "enum": [
+ "DROP_TO_ALERT"
+ ],
+ "type": "string"
+ },
+ "Priority": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "PublishMetricAction": {
+ "additionalProperties": false,
+ "properties": {
+ "Dimensions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/Dimension"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "required": [
+ "Dimensions"
+ ],
+ "type": "object"
+ },
+ "ResourceArn": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^(arn:aws.*)$",
+ "type": "string"
+ },
+ "RuleOrder": {
+ "enum": [
+ "DEFAULT_ACTION_ORDER",
+ "STRICT_ORDER"
+ ],
+ "type": "string"
+ },
+ "RuleVariables": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[A-Za-z0-9_]{1,32}$": {
+ "$ref": "#/definitions/IPSet"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulEngineOptions": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleOrder": {
+ "$ref": "#/definitions/RuleOrder"
+ },
+ "StreamExceptionPolicy": {
+ "$ref": "#/definitions/StreamExceptionPolicy"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupOverride": {
+ "additionalProperties": false,
+ "properties": {
+ "Action": {
+ "$ref": "#/definitions/OverrideAction"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Override": {
+ "$ref": "#/definitions/StatefulRuleGroupOverride"
+ },
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn"
+ ],
+ "type": "object"
+ },
+ "StatelessRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn",
+ "Priority"
+ ],
+ "type": "object"
+ },
+ "StreamExceptionPolicy": {
+ "enum": [
+ "DROP",
+ "CONTINUE",
+ "REJECT"
+ ],
+ "type": "string"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ },
+ "VariableDefinition": {
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/FirewallPolicyArn"
+ ],
+ "properties": {
+ "Description": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "FirewallPolicy": {
+ "$ref": "#/definitions/FirewallPolicy"
+ },
+ "FirewallPolicyArn": {
+ "$ref": "#/definitions/ResourceArn"
+ },
+ "FirewallPolicyId": {
+ "maxLength": 36,
+ "minLength": 36,
+ "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$",
+ "type": "string"
+ },
+ "FirewallPolicyName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-]+$",
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/FirewallPolicyArn",
+ "/properties/FirewallPolicyId"
+ ],
+ "required": [
+ "FirewallPolicyName",
+ "FirewallPolicy"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::NetworkFirewall::FirewallPolicy"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-rds-dbcluster.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-rds-dbcluster.json
new file mode 100644
index 0000000000..46000178b5
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-rds-dbcluster.json
@@ -0,0 +1,397 @@
+{
+ "additionalProperties": false,
+ "conditionalCreateOnlyProperties": [
+ "/properties/Engine",
+ "/properties/GlobalClusterIdentifier",
+ "/properties/MasterUsername"
+ ],
+ "createOnlyProperties": [
+ "/properties/AvailabilityZones",
+ "/properties/DBClusterIdentifier",
+ "/properties/DBSubnetGroupName",
+ "/properties/DBSystemId",
+ "/properties/DatabaseName",
+ "/properties/EngineMode",
+ "/properties/KmsKeyId",
+ "/properties/PubliclyAccessible",
+ "/properties/RestoreToTime",
+ "/properties/RestoreType",
+ "/properties/SnapshotIdentifier",
+ "/properties/SourceDBClusterIdentifier",
+ "/properties/SourceRegion",
+ "/properties/StorageEncrypted",
+ "/properties/UseLatestRestorableTime"
+ ],
+ "definitions": {
+ "DBClusterRole": {
+ "additionalProperties": false,
+ "properties": {
+ "FeatureName": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "Endpoint": {
+ "additionalProperties": false,
+ "properties": {
+ "Address": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MasterUserSecret": {
+ "additionalProperties": false,
+ "properties": {
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "SecretArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ReadEndpoint": {
+ "additionalProperties": false,
+ "properties": {
+ "Address": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ScalingConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AutoPause": {
+ "type": "boolean"
+ },
+ "MaxCapacity": {
+ "type": "integer"
+ },
+ "MinCapacity": {
+ "type": "integer"
+ },
+ "SecondsBeforeTimeout": {
+ "type": "integer"
+ },
+ "SecondsUntilAutoPause": {
+ "type": "integer"
+ },
+ "TimeoutAction": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServerlessV2ScalingConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "MaxCapacity": {
+ "type": "number"
+ },
+ "MinCapacity": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/DBClusterIdentifier"
+ ],
+ "properties": {
+ "AllocatedStorage": {
+ "type": "integer"
+ },
+ "AssociatedRoles": {
+ "items": {
+ "$ref": "#/definitions/DBClusterRole"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "AutoMinorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AvailabilityZones": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "BacktrackWindow": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "BackupRetentionPeriod": {
+ "default": 1,
+ "maximum": 35,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "CopyTagsToSnapshot": {
+ "type": "boolean"
+ },
+ "DBClusterArn": {
+ "type": "string"
+ },
+ "DBClusterIdentifier": {
+ "maxLength": 63,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$",
+ "type": "string"
+ },
+ "DBClusterInstanceClass": {
+ "type": "string"
+ },
+ "DBClusterParameterGroupName": {
+ "type": "string"
+ },
+ "DBClusterResourceId": {
+ "type": "string"
+ },
+ "DBInstanceParameterGroupName": {
+ "type": "string"
+ },
+ "DBSubnetGroupName": {
+ "type": "string"
+ },
+ "DBSystemId": {
+ "type": "string"
+ },
+ "DatabaseName": {
+ "type": "string"
+ },
+ "DeletionProtection": {
+ "type": "boolean"
+ },
+ "Domain": {
+ "type": "string"
+ },
+ "DomainIAMRoleName": {
+ "type": "string"
+ },
+ "EnableCloudwatchLogsExports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "EnableGlobalWriteForwarding": {
+ "type": "boolean"
+ },
+ "EnableHttpEndpoint": {
+ "type": "boolean"
+ },
+ "EnableIAMDatabaseAuthentication": {
+ "type": "boolean"
+ },
+ "EnableLocalWriteForwarding": {
+ "type": "boolean"
+ },
+ "Endpoint": {
+ "$ref": "#/definitions/Endpoint"
+ },
+ "Engine": {
+ "type": "string"
+ },
+ "EngineLifecycleSupport": {
+ "type": "string"
+ },
+ "EngineMode": {
+ "type": "string"
+ },
+ "EngineVersion": {
+ "type": "string"
+ },
+ "GlobalClusterIdentifier": {
+ "maxLength": 63,
+ "minLength": 0,
+ "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$",
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "ManageMasterUserPassword": {
+ "type": "boolean"
+ },
+ "MasterUserPassword": {
+ "type": "string"
+ },
+ "MasterUserSecret": {
+ "$ref": "#/definitions/MasterUserSecret"
+ },
+ "MasterUsername": {
+ "minLength": 1,
+ "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$",
+ "type": "string"
+ },
+ "MonitoringInterval": {
+ "type": "integer"
+ },
+ "MonitoringRoleArn": {
+ "type": "string"
+ },
+ "NetworkType": {
+ "type": "string"
+ },
+ "PerformanceInsightsEnabled": {
+ "type": "boolean"
+ },
+ "PerformanceInsightsKmsKeyId": {
+ "type": "string"
+ },
+ "PerformanceInsightsRetentionPeriod": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "PreferredBackupWindow": {
+ "type": "string"
+ },
+ "PreferredMaintenanceWindow": {
+ "type": "string"
+ },
+ "PubliclyAccessible": {
+ "type": "boolean"
+ },
+ "ReadEndpoint": {
+ "$ref": "#/definitions/ReadEndpoint"
+ },
+ "ReplicationSourceIdentifier": {
+ "type": "string"
+ },
+ "RestoreToTime": {
+ "type": "string"
+ },
+ "RestoreType": {
+ "type": "string"
+ },
+ "ScalingConfiguration": {
+ "$ref": "#/definitions/ScalingConfiguration"
+ },
+ "ServerlessV2ScalingConfiguration": {
+ "$ref": "#/definitions/ServerlessV2ScalingConfiguration"
+ },
+ "SnapshotIdentifier": {
+ "type": "string"
+ },
+ "SourceDBClusterIdentifier": {
+ "type": "string"
+ },
+ "SourceRegion": {
+ "type": "string"
+ },
+ "StorageEncrypted": {
+ "type": "boolean"
+ },
+ "StorageThroughput": {
+ "type": "integer"
+ },
+ "StorageType": {
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "UseLatestRestorableTime": {
+ "type": "boolean"
+ },
+ "VpcSecurityGroupIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "propertyTransform": {
+ "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)",
+ "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)",
+ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)",
+ "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )",
+ "/properties/Engine": "$lowercase(Engine)",
+ "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])",
+ "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])",
+ "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])",
+ "/properties/NetworkType": "$lowercase(NetworkType)",
+ "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKmsKeyId])",
+ "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)",
+ "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)",
+ "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)",
+ "/properties/StorageType": "$lowercase(StorageType)"
+ },
+ "readOnlyProperties": [
+ "/properties/DBClusterArn",
+ "/properties/DBClusterResourceId",
+ "/properties/Endpoint",
+ "/properties/Endpoint/Address",
+ "/properties/Endpoint/Port",
+ "/properties/ReadEndpoint/Address",
+ "/properties/MasterUserSecret/SecretArn",
+ "/properties/StorageThroughput"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::RDS::DBCluster",
+ "writeOnlyProperties": [
+ "/properties/DBInstanceParameterGroupName",
+ "/properties/MasterUserPassword",
+ "/properties/RestoreToTime",
+ "/properties/RestoreType",
+ "/properties/SnapshotIdentifier",
+ "/properties/SourceDBClusterIdentifier",
+ "/properties/SourceRegion",
+ "/properties/UseLatestRestorableTime"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-rds-dbsubnetgroup.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-rds-dbsubnetgroup.json
new file mode 100644
index 0000000000..d228afbbad
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-rds-dbsubnetgroup.json
@@ -0,0 +1,71 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/DBSubnetGroupName"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/DBSubnetGroupName"
+ ],
+ "properties": {
+ "DBSubnetGroupDescription": {
+ "type": "string"
+ },
+ "DBSubnetGroupName": {
+ "type": "string"
+ },
+ "SubnetIds": {
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "propertyTransform": {
+ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)"
+ },
+ "required": [
+ "DBSubnetGroupDescription",
+ "SubnetIds"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::RDS::DBSubnetGroup"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-route53resolver-resolverrule.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-route53resolver-resolverrule.json
new file mode 100644
index 0000000000..03475784a5
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-route53resolver-resolverrule.json
@@ -0,0 +1,131 @@
+{
+ "additionalProperties": false,
+ "conditionalCreateOnlyProperties": [
+ "/properties/DomainName"
+ ],
+ "createOnlyProperties": [
+ "/properties/RuleType"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value",
+ "Key"
+ ],
+ "type": "object"
+ },
+ "TargetAddress": {
+ "additionalProperties": false,
+ "properties": {
+ "Ip": {
+ "type": "string"
+ },
+ "Ipv6": {
+ "type": "string"
+ },
+ "Port": {
+ "maxLength": 65535,
+ "minLength": 0,
+ "type": "string"
+ },
+ "Protocol": {
+ "enum": [
+ "Do53",
+ "DoH"
+ ],
+ "type": "string"
+ },
+ "ServerNameIndication": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ResolverRuleId"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "DomainName": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 64,
+ "minLength": 0,
+ "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)",
+ "type": "string"
+ },
+ "ResolverEndpointId": {
+ "maxLength": 64,
+ "minLength": 1,
+ "type": "string"
+ },
+ "ResolverRuleId": {
+ "type": "string"
+ },
+ "RuleType": {
+ "enum": [
+ "FORWARD",
+ "SYSTEM",
+ "RECURSIVE",
+ "DELEGATE"
+ ],
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TargetIps": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/TargetAddress"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "propertyTransform": {
+ "/properties/DomainName": "$join([DomainName, \".\"]) $OR DomainName"
+ },
+ "readOnlyProperties": [
+ "/properties/Arn",
+ "/properties/ResolverRuleId"
+ ],
+ "required": [
+ "RuleType"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-route53resolver.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Route53Resolver::ResolverRule"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py
index 715049fee0..0b68a06e63 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/__init__.py
@@ -1330,9 +1330,7 @@
"aws-ecs-cluster.json",
"aws-ecs-clustercapacityproviderassociations.json",
"aws-ecs-primarytaskset.json",
- "aws-ecs-service.json",
"aws-ecs-taskdefinition.json",
- "aws-ecs-taskset.json",
"aws-efs-accesspoint.json",
"aws-efs-filesystem.json",
"aws-efs-mounttarget.json",
@@ -1416,7 +1414,6 @@
"aws-glue-trigger.json",
"aws-glue-usageprofile.json",
"aws-glue-workflow.json",
- "aws-guardduty-detector.json",
"aws-guardduty-filter.json",
"aws-guardduty-ipset.json",
"aws-guardduty-malwareprotectionplan.json",
@@ -1483,7 +1480,6 @@
"aws-kafkaconnect-connector.json",
"aws-kafkaconnect-customplugin.json",
"aws-kafkaconnect-workerconfiguration.json",
- "aws-kinesis-stream.json",
"aws-kinesis-streamconsumer.json",
"aws-kinesisanalytics-applicationoutput.json",
"aws-kinesisanalyticsv2-application.json",
@@ -1594,7 +1590,6 @@
"aws-neptune-dbsubnetgroup.json",
"aws-neptune-eventsubscription.json",
"aws-networkfirewall-firewall.json",
- "aws-networkfirewall-firewallpolicy.json",
"aws-networkfirewall-loggingconfiguration.json",
"aws-networkfirewall-rulegroup.json",
"aws-networkfirewall-tlsinspectionconfiguration.json",
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-apidestination.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-apidestination.json
index 2dad3ac2e5..84f7d5fd6e 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-apidestination.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-apidestination.json
@@ -11,6 +11,7 @@
"type": "string"
},
"ConnectionArn": {
+ "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$",
"type": "string"
},
"Description": {
@@ -30,6 +31,7 @@
"type": "string"
},
"InvocationEndpoint": {
+ "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$",
"type": "string"
},
"InvocationRateLimitPerSecond": {
@@ -39,6 +41,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-connection.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-connection.json
index 0ee80bb23e..c49843c440 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-connection.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-events-connection.json
@@ -189,6 +189,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
},
"SecretArn": {
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-gamelift-fleet.json
index f603fbeac1..54680c6bba 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-gamelift-fleet.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-gamelift-fleet.json
@@ -178,9 +178,11 @@
"type": "string"
},
"ServerLaunchParameters": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- =@;{},?'\\[\\]\"]+",
"type": "string"
},
"ServerLaunchPath": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- ]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-guardduty-detector.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-guardduty-detector.json
new file mode 100644
index 0000000000..efaad17ff9
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-guardduty-detector.json
@@ -0,0 +1,184 @@
+{
+ "additionalProperties": false,
+ "definitions": {
+ "CFNDataSourceConfigurations": {
+ "additionalProperties": false,
+ "properties": {
+ "Kubernetes": {
+ "$ref": "#/definitions/CFNKubernetesConfiguration"
+ },
+ "MalwareProtection": {
+ "$ref": "#/definitions/CFNMalwareProtectionConfiguration"
+ },
+ "S3Logs": {
+ "$ref": "#/definitions/CFNS3LogsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureAdditionalConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Status": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AdditionalConfiguration": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureAdditionalConfiguration"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "maxLength": 128,
+ "type": "string"
+ },
+ "Status": {
+ "enum": [
+ "ENABLED",
+ "DISABLED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "Status"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesAuditLogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AuditLogs": {
+ "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration"
+ }
+ },
+ "required": [
+ "AuditLogs"
+ ],
+ "type": "object"
+ },
+ "CFNMalwareProtectionConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ScanEc2InstanceWithFindings": {
+ "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNS3LogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNScanEc2InstanceWithFindingsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "EbsVolumes": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "TagItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "DataSources": {
+ "$ref": "#/definitions/CFNDataSourceConfigurations"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Features": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureConfiguration"
+ },
+ "type": "array"
+ },
+ "FindingPublishingFrequency": {
+ "enum": [
+ "FIFTEEN_MINUTES",
+ "ONE_HOUR",
+ "SIX_HOURS"
+ ],
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/TagItem"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Enable"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": false,
+ "taggable": true
+ },
+ "typeName": "AWS::GuardDuty::Detector"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-iam-managedpolicy.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-iam-managedpolicy.json
index e138e5c7fe..41620915f0 100644
--- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-iam-managedpolicy.json
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-iam-managedpolicy.json
@@ -47,6 +47,7 @@
},
"PolicyDocument": {
"maxLength": 6144,
+ "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+",
"type": [
"object",
"string"
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-kinesis-stream.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-kinesis-stream.json
new file mode 100644
index 0000000000..be1bc65c07
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-kinesis-stream.json
@@ -0,0 +1,133 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "definitions": {
+ "StreamEncryption": {
+ "additionalProperties": false,
+ "properties": {
+ "EncryptionType": {
+ "enum": [
+ "KMS"
+ ],
+ "type": "string"
+ },
+ "KeyId": {
+ "anyOf": [
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/Arn",
+ "typeName": "AWS::KMS::Key"
+ }
+ },
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/KeyId",
+ "typeName": "AWS::KMS::Key"
+ }
+ }
+ ],
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "EncryptionType",
+ "KeyId"
+ ],
+ "type": "object"
+ },
+ "StreamModeDetails": {
+ "additionalProperties": false,
+ "properties": {
+ "StreamMode": {
+ "enum": [
+ "ON_DEMAND",
+ "PROVISIONED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "StreamMode"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9_.-]+$",
+ "type": "string"
+ },
+ "RetentionPeriodHours": {
+ "maximum": 8760,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "ShardCount": {
+ "maximum": 100000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "StreamEncryption": {
+ "$ref": "#/definitions/StreamEncryption"
+ },
+ "StreamModeDetails": {
+ "$ref": "#/definitions/StreamModeDetails",
+ "default": {
+ "StreamMode": "PROVISIONED"
+ }
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Kinesis::Stream"
+}
diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-networkfirewall-firewallpolicy.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-networkfirewall-firewallpolicy.json
new file mode 100644
index 0000000000..973b595561
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-networkfirewall-firewallpolicy.json
@@ -0,0 +1,332 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/FirewallPolicyName"
+ ],
+ "definitions": {
+ "ActionDefinition": {
+ "additionalProperties": false,
+ "properties": {
+ "PublishMetricAction": {
+ "$ref": "#/definitions/PublishMetricAction"
+ }
+ },
+ "type": "object"
+ },
+ "CustomAction": {
+ "additionalProperties": false,
+ "properties": {
+ "ActionDefinition": {
+ "$ref": "#/definitions/ActionDefinition"
+ },
+ "ActionName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ActionName",
+ "ActionDefinition"
+ ],
+ "type": "object"
+ },
+ "Dimension": {
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-_ ]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value"
+ ],
+ "type": "object"
+ },
+ "FirewallPolicy": {
+ "additionalProperties": false,
+ "properties": {
+ "PolicyVariables": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleVariables": {
+ "$ref": "#/definitions/RuleVariables"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatefulEngineOptions": {
+ "$ref": "#/definitions/StatefulEngineOptions"
+ },
+ "StatefulRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatefulRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessCustomActions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/CustomAction"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessFragmentDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatelessRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TLSInspectionConfigurationArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "StatelessDefaultActions",
+ "StatelessFragmentDefaultActions"
+ ],
+ "type": "object"
+ },
+ "IPSet": {
+ "additionalProperties": false,
+ "properties": {
+ "Definition": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/VariableDefinition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OverrideAction": {
+ "enum": [
+ "DROP_TO_ALERT"
+ ],
+ "type": "string"
+ },
+ "Priority": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "PublishMetricAction": {
+ "additionalProperties": false,
+ "properties": {
+ "Dimensions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/Dimension"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "required": [
+ "Dimensions"
+ ],
+ "type": "object"
+ },
+ "ResourceArn": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^(arn:aws.*)$",
+ "type": "string"
+ },
+ "RuleOrder": {
+ "enum": [
+ "DEFAULT_ACTION_ORDER",
+ "STRICT_ORDER"
+ ],
+ "type": "string"
+ },
+ "RuleVariables": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[A-Za-z0-9_]{1,32}$": {
+ "$ref": "#/definitions/IPSet"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulEngineOptions": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleOrder": {
+ "$ref": "#/definitions/RuleOrder"
+ },
+ "StreamExceptionPolicy": {
+ "$ref": "#/definitions/StreamExceptionPolicy"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupOverride": {
+ "additionalProperties": false,
+ "properties": {
+ "Action": {
+ "$ref": "#/definitions/OverrideAction"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Override": {
+ "$ref": "#/definitions/StatefulRuleGroupOverride"
+ },
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn"
+ ],
+ "type": "object"
+ },
+ "StatelessRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn",
+ "Priority"
+ ],
+ "type": "object"
+ },
+ "StreamExceptionPolicy": {
+ "enum": [
+ "DROP",
+ "CONTINUE",
+ "REJECT"
+ ],
+ "type": "string"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ },
+ "VariableDefinition": {
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/FirewallPolicyArn"
+ ],
+ "properties": {
+ "Description": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "FirewallPolicy": {
+ "$ref": "#/definitions/FirewallPolicy"
+ },
+ "FirewallPolicyArn": {
+ "$ref": "#/definitions/ResourceArn"
+ },
+ "FirewallPolicyId": {
+ "maxLength": 36,
+ "minLength": 36,
+ "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$",
+ "type": "string"
+ },
+ "FirewallPolicyName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-]+$",
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/FirewallPolicyArn",
+ "/properties/FirewallPolicyId"
+ ],
+ "required": [
+ "FirewallPolicyName",
+ "FirewallPolicy"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::NetworkFirewall::FirewallPolicy"
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/__init__.py b/src/cfnlint/data/schemas/providers/il_central_1/__init__.py
index f29477f428..450505a7d6 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/__init__.py
+++ b/src/cfnlint/data/schemas/providers/il_central_1/__init__.py
@@ -912,9 +912,7 @@
"aws-ecs-capacityprovider.json",
"aws-ecs-clustercapacityproviderassociations.json",
"aws-ecs-primarytaskset.json",
- "aws-ecs-service.json",
"aws-ecs-taskdefinition.json",
- "aws-ecs-taskset.json",
"aws-efs-accesspoint.json",
"aws-efs-filesystem.json",
"aws-efs-mounttarget.json",
@@ -976,7 +974,6 @@
"aws-glue-trigger.json",
"aws-glue-usageprofile.json",
"aws-glue-workflow.json",
- "aws-guardduty-detector.json",
"aws-guardduty-filter.json",
"aws-guardduty-ipset.json",
"aws-guardduty-malwareprotectionplan.json",
@@ -1002,7 +999,6 @@
"aws-imagebuilder-imagerecipe.json",
"aws-imagebuilder-infrastructureconfiguration.json",
"aws-imagebuilder-workflow.json",
- "aws-kinesis-stream.json",
"aws-kinesisanalyticsv2-application.json",
"aws-kinesisfirehose-deliverystream.json",
"aws-kms-alias.json",
@@ -1048,7 +1044,6 @@
"aws-neptune-dbsubnetgroup.json",
"aws-neptune-eventsubscription.json",
"aws-networkfirewall-firewall.json",
- "aws-networkfirewall-firewallpolicy.json",
"aws-networkfirewall-loggingconfiguration.json",
"aws-networkfirewall-rulegroup.json",
"aws-networkfirewall-tlsinspectionconfiguration.json",
@@ -1081,7 +1076,6 @@
"aws-pcaconnectorscep-connector.json",
"aws-ram-permission.json",
"aws-ram-resourceshare.json",
- "aws-rds-dbcluster.json",
"aws-rds-dbclusterparametergroup.json",
"aws-rds-dbinstance.json",
"aws-rds-dbparametergroup.json",
@@ -1090,7 +1084,6 @@
"aws-rds-dbproxytargetgroup.json",
"aws-rds-dbsecuritygroup.json",
"aws-rds-dbsecuritygroupingress.json",
- "aws-rds-dbsubnetgroup.json",
"aws-rds-eventsubscription.json",
"aws-rds-globalcluster.json",
"aws-rds-integration.json",
@@ -1162,6 +1155,7 @@
"aws-secretsmanager-resourcepolicy.json",
"aws-secretsmanager-rotationschedule.json",
"aws-secretsmanager-secret.json",
+ "aws-secretsmanager-secrettargetattachment.json",
"aws-securityhub-automationrule.json",
"aws-securityhub-delegatedadmin.json",
"aws-securityhub-hub.json",
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-amazonmq-configuration.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-amazonmq-configuration.json
index 81cc7369f7..66bb58afb3 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-amazonmq-configuration.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-amazonmq-configuration.json
@@ -32,6 +32,10 @@
"type": "string"
},
"AuthenticationStrategy": {
+ "enum": [
+ "LDAP",
+ "SIMPLE"
+ ],
"type": "string"
},
"Data": {
@@ -41,6 +45,10 @@
"type": "string"
},
"EngineType": {
+ "enum": [
+ "ACTIVEMQ",
+ "RABBITMQ"
+ ],
"type": "string"
},
"EngineVersion": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-applicationautoscaling-scalabletarget.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-applicationautoscaling-scalabletarget.json
index dfd1b1a11e..7cc97d6dc6 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-applicationautoscaling-scalabletarget.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-applicationautoscaling-scalabletarget.json
@@ -82,6 +82,31 @@
"type": "string"
},
"ScalableDimension": {
+ "enum": [
+ "appstream:fleet:DesiredCapacity",
+ "cassandra:table:ReadCapacityUnits",
+ "cassandra:table:WriteCapacityUnits",
+ "comprehend:document-classifier-endpoint:DesiredInferenceUnits",
+ "comprehend:entity-recognizer-endpoint:DesiredInferenceUnits",
+ "custom-resource:ResourceType:Property",
+ "dynamodb:index:ReadCapacityUnits",
+ "dynamodb:index:WriteCapacityUnits",
+ "dynamodb:table:ReadCapacityUnits",
+ "dynamodb:table:WriteCapacityUnits",
+ "ec2:spot-fleet-request:TargetCapacity",
+ "ecs:service:DesiredCount",
+ "elasticache:replication-group:NodeGroups",
+ "elasticache:replication-group:Replicas",
+ "elasticmapreduce:instancegroup:InstanceCount",
+ "kafka:broker-storage:VolumeSize",
+ "lambda:function:ProvisionedConcurrency",
+ "neptune:cluster:ReadReplicaCount",
+ "rds:cluster:ReadReplicaCount",
+ "sagemaker:inference-component:DesiredCopyCount",
+ "sagemaker:variant:DesiredInstanceCount",
+ "sagemaker:variant:DesiredProvisionedConcurrency",
+ "workspaces:workspacespool:DesiredUserSessions"
+ ],
"type": "string"
},
"ScheduledActions": {
@@ -92,6 +117,23 @@
"uniqueItems": true
},
"ServiceNamespace": {
+ "enum": [
+ "appstream",
+ "cassandra",
+ "comprehend",
+ "custom-resource",
+ "dynamodb",
+ "ec2",
+ "ecs",
+ "elasticache",
+ "elasticmapreduce",
+ "kafka",
+ "lambda",
+ "neptune",
+ "rds",
+ "sagemaker",
+ "workspaces"
+ ],
"type": "string"
},
"SuspendedState": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-autoscaling-lifecyclehook.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-autoscaling-lifecyclehook.json
index dcade48812..cfe7bde60d 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-autoscaling-lifecyclehook.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-autoscaling-lifecyclehook.json
@@ -25,6 +25,7 @@
"type": "string"
},
"LifecycleHookName": {
+ "pattern": "[A-Za-z0-9\\-_\\/]+",
"type": "string"
},
"LifecycleTransition": {
@@ -35,6 +36,7 @@
"type": "string"
},
"NotificationMetadata": {
+ "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007e]+",
"type": "string"
},
"NotificationTargetARN": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-codepipeline-customactiontype.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-codepipeline-customactiontype.json
index 19c17f4d7e..3e3c3f3597 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-codepipeline-customactiontype.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-codepipeline-customactiontype.json
@@ -104,6 +104,15 @@
],
"properties": {
"Category": {
+ "enum": [
+ "Approval",
+ "Build",
+ "Compute",
+ "Deploy",
+ "Invoke",
+ "Source",
+ "Test"
+ ],
"type": "string"
},
"ConfigurationProperties": {
@@ -123,6 +132,7 @@
"$ref": "#/definitions/ArtifactDetails"
},
"Provider": {
+ "pattern": "[0-9A-Za-z_-]+",
"type": "string"
},
"Settings": {
@@ -136,6 +146,7 @@
"uniqueItems": false
},
"Version": {
+ "pattern": "[0-9A-Za-z_-]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-host.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-host.json
index 71dc619f5c..3f8a8acd62 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-host.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-host.json
@@ -9,16 +9,16 @@
],
"properties": {
"AutoPlacement": {
- "enum": [
- "off",
- "on"
- ],
"type": "string"
},
"AvailabilityZone": {
"type": "string"
},
"HostRecovery": {
+ "enum": [
+ "off",
+ "on"
+ ],
"type": "string"
},
"Id": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-volume.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-volume.json
index 11935248ba..60a5519884 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-volume.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-volume.json
@@ -63,6 +63,15 @@
"type": "integer"
},
"VolumeType": {
+ "enum": [
+ "gp2",
+ "gp3",
+ "io1",
+ "io2",
+ "sc1",
+ "st1",
+ "standard"
+ ],
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-gamelift-fleet.json
index f603fbeac1..54680c6bba 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-gamelift-fleet.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-gamelift-fleet.json
@@ -178,9 +178,11 @@
"type": "string"
},
"ServerLaunchParameters": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- =@;{},?'\\[\\]\"]+",
"type": "string"
},
"ServerLaunchPath": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- ]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-guardduty-detector.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-guardduty-detector.json
new file mode 100644
index 0000000000..efaad17ff9
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-guardduty-detector.json
@@ -0,0 +1,184 @@
+{
+ "additionalProperties": false,
+ "definitions": {
+ "CFNDataSourceConfigurations": {
+ "additionalProperties": false,
+ "properties": {
+ "Kubernetes": {
+ "$ref": "#/definitions/CFNKubernetesConfiguration"
+ },
+ "MalwareProtection": {
+ "$ref": "#/definitions/CFNMalwareProtectionConfiguration"
+ },
+ "S3Logs": {
+ "$ref": "#/definitions/CFNS3LogsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureAdditionalConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Status": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AdditionalConfiguration": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureAdditionalConfiguration"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "maxLength": 128,
+ "type": "string"
+ },
+ "Status": {
+ "enum": [
+ "ENABLED",
+ "DISABLED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "Status"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesAuditLogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AuditLogs": {
+ "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration"
+ }
+ },
+ "required": [
+ "AuditLogs"
+ ],
+ "type": "object"
+ },
+ "CFNMalwareProtectionConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ScanEc2InstanceWithFindings": {
+ "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNS3LogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNScanEc2InstanceWithFindingsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "EbsVolumes": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "TagItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "DataSources": {
+ "$ref": "#/definitions/CFNDataSourceConfigurations"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Features": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureConfiguration"
+ },
+ "type": "array"
+ },
+ "FindingPublishingFrequency": {
+ "enum": [
+ "FIFTEEN_MINUTES",
+ "ONE_HOUR",
+ "SIX_HOURS"
+ ],
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/TagItem"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Enable"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": false,
+ "taggable": true
+ },
+ "typeName": "AWS::GuardDuty::Detector"
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-instanceprofile.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-instanceprofile.json
index 5114eef31f..a71c9d32a8 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-instanceprofile.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-instanceprofile.json
@@ -15,9 +15,11 @@
"type": "string"
},
"InstanceProfileName": {
+ "pattern": "[\\w+=,.@-]+",
"type": "string"
},
"Path": {
+ "pattern": "(\\u002F)|(\\u002F[\\u0021-\\u007E]+\\u002F)",
"type": "string"
},
"Roles": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-managedpolicy.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-managedpolicy.json
index e138e5c7fe..41620915f0 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-managedpolicy.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-managedpolicy.json
@@ -47,6 +47,7 @@
},
"PolicyDocument": {
"maxLength": 6144,
+ "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+",
"type": [
"object",
"string"
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-policy.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-policy.json
index 3ac680bbb5..cbb80d143e 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-policy.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-iam-policy.json
@@ -33,6 +33,7 @@
},
"PolicyDocument": {
"format": "json",
+ "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+",
"type": [
"object",
"string"
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-certificate.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-certificate.json
index 28534637cc..dd5e29c8ea 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-certificate.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-certificate.json
@@ -11,6 +11,7 @@
"type": "string"
},
"CertificateSigningRequest": {
+ "pattern": "[\\s\\S]*",
"type": "string"
},
"Id": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-policy.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-policy.json
index a329acfc74..ebabbd9f3d 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-policy.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-policy.json
@@ -16,12 +16,14 @@
},
"PolicyDocument": {
"format": "json",
+ "pattern": "[\\s\\S]*",
"type": [
"object",
"string"
]
},
"PolicyName": {
+ "pattern": "[\\w+=,.@-]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-topicrule.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-topicrule.json
index 2d202ebc9c..d2ced3f6b6 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-topicrule.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-iot-topicrule.json
@@ -600,6 +600,7 @@
"type": "string"
},
"RuleName": {
+ "pattern": "^[a-zA-Z0-9_]+$",
"type": "string"
},
"TopicRulePayload": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-kinesis-stream.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-kinesis-stream.json
new file mode 100644
index 0000000000..be1bc65c07
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-kinesis-stream.json
@@ -0,0 +1,133 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "definitions": {
+ "StreamEncryption": {
+ "additionalProperties": false,
+ "properties": {
+ "EncryptionType": {
+ "enum": [
+ "KMS"
+ ],
+ "type": "string"
+ },
+ "KeyId": {
+ "anyOf": [
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/Arn",
+ "typeName": "AWS::KMS::Key"
+ }
+ },
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/KeyId",
+ "typeName": "AWS::KMS::Key"
+ }
+ }
+ ],
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "EncryptionType",
+ "KeyId"
+ ],
+ "type": "object"
+ },
+ "StreamModeDetails": {
+ "additionalProperties": false,
+ "properties": {
+ "StreamMode": {
+ "enum": [
+ "ON_DEMAND",
+ "PROVISIONED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "StreamMode"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9_.-]+$",
+ "type": "string"
+ },
+ "RetentionPeriodHours": {
+ "maximum": 8760,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "ShardCount": {
+ "maximum": 100000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "StreamEncryption": {
+ "$ref": "#/definitions/StreamEncryption"
+ },
+ "StreamModeDetails": {
+ "$ref": "#/definitions/StreamModeDetails",
+ "default": {
+ "StreamMode": "PROVISIONED"
+ }
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Kinesis::Stream"
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-lambda-function.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-lambda-function.json
index 1e0debb9c5..817976a546 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-lambda-function.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-lambda-function.json
@@ -332,6 +332,7 @@
"FunctionName": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)",
"type": "string"
},
"Handler": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-networkfirewall-firewallpolicy.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-networkfirewall-firewallpolicy.json
new file mode 100644
index 0000000000..973b595561
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-networkfirewall-firewallpolicy.json
@@ -0,0 +1,332 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/FirewallPolicyName"
+ ],
+ "definitions": {
+ "ActionDefinition": {
+ "additionalProperties": false,
+ "properties": {
+ "PublishMetricAction": {
+ "$ref": "#/definitions/PublishMetricAction"
+ }
+ },
+ "type": "object"
+ },
+ "CustomAction": {
+ "additionalProperties": false,
+ "properties": {
+ "ActionDefinition": {
+ "$ref": "#/definitions/ActionDefinition"
+ },
+ "ActionName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ActionName",
+ "ActionDefinition"
+ ],
+ "type": "object"
+ },
+ "Dimension": {
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-_ ]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value"
+ ],
+ "type": "object"
+ },
+ "FirewallPolicy": {
+ "additionalProperties": false,
+ "properties": {
+ "PolicyVariables": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleVariables": {
+ "$ref": "#/definitions/RuleVariables"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatefulEngineOptions": {
+ "$ref": "#/definitions/StatefulEngineOptions"
+ },
+ "StatefulRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatefulRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessCustomActions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/CustomAction"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessFragmentDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatelessRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TLSInspectionConfigurationArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "StatelessDefaultActions",
+ "StatelessFragmentDefaultActions"
+ ],
+ "type": "object"
+ },
+ "IPSet": {
+ "additionalProperties": false,
+ "properties": {
+ "Definition": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/VariableDefinition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OverrideAction": {
+ "enum": [
+ "DROP_TO_ALERT"
+ ],
+ "type": "string"
+ },
+ "Priority": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "PublishMetricAction": {
+ "additionalProperties": false,
+ "properties": {
+ "Dimensions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/Dimension"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "required": [
+ "Dimensions"
+ ],
+ "type": "object"
+ },
+ "ResourceArn": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^(arn:aws.*)$",
+ "type": "string"
+ },
+ "RuleOrder": {
+ "enum": [
+ "DEFAULT_ACTION_ORDER",
+ "STRICT_ORDER"
+ ],
+ "type": "string"
+ },
+ "RuleVariables": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[A-Za-z0-9_]{1,32}$": {
+ "$ref": "#/definitions/IPSet"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulEngineOptions": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleOrder": {
+ "$ref": "#/definitions/RuleOrder"
+ },
+ "StreamExceptionPolicy": {
+ "$ref": "#/definitions/StreamExceptionPolicy"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupOverride": {
+ "additionalProperties": false,
+ "properties": {
+ "Action": {
+ "$ref": "#/definitions/OverrideAction"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Override": {
+ "$ref": "#/definitions/StatefulRuleGroupOverride"
+ },
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn"
+ ],
+ "type": "object"
+ },
+ "StatelessRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn",
+ "Priority"
+ ],
+ "type": "object"
+ },
+ "StreamExceptionPolicy": {
+ "enum": [
+ "DROP",
+ "CONTINUE",
+ "REJECT"
+ ],
+ "type": "string"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ },
+ "VariableDefinition": {
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/FirewallPolicyArn"
+ ],
+ "properties": {
+ "Description": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "FirewallPolicy": {
+ "$ref": "#/definitions/FirewallPolicy"
+ },
+ "FirewallPolicyArn": {
+ "$ref": "#/definitions/ResourceArn"
+ },
+ "FirewallPolicyId": {
+ "maxLength": 36,
+ "minLength": 36,
+ "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$",
+ "type": "string"
+ },
+ "FirewallPolicyName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-]+$",
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/FirewallPolicyArn",
+ "/properties/FirewallPolicyId"
+ ],
+ "required": [
+ "FirewallPolicyName",
+ "FirewallPolicy"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::NetworkFirewall::FirewallPolicy"
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-rds-dbcluster.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-rds-dbcluster.json
new file mode 100644
index 0000000000..46000178b5
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-rds-dbcluster.json
@@ -0,0 +1,397 @@
+{
+ "additionalProperties": false,
+ "conditionalCreateOnlyProperties": [
+ "/properties/Engine",
+ "/properties/GlobalClusterIdentifier",
+ "/properties/MasterUsername"
+ ],
+ "createOnlyProperties": [
+ "/properties/AvailabilityZones",
+ "/properties/DBClusterIdentifier",
+ "/properties/DBSubnetGroupName",
+ "/properties/DBSystemId",
+ "/properties/DatabaseName",
+ "/properties/EngineMode",
+ "/properties/KmsKeyId",
+ "/properties/PubliclyAccessible",
+ "/properties/RestoreToTime",
+ "/properties/RestoreType",
+ "/properties/SnapshotIdentifier",
+ "/properties/SourceDBClusterIdentifier",
+ "/properties/SourceRegion",
+ "/properties/StorageEncrypted",
+ "/properties/UseLatestRestorableTime"
+ ],
+ "definitions": {
+ "DBClusterRole": {
+ "additionalProperties": false,
+ "properties": {
+ "FeatureName": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "Endpoint": {
+ "additionalProperties": false,
+ "properties": {
+ "Address": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MasterUserSecret": {
+ "additionalProperties": false,
+ "properties": {
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "SecretArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ReadEndpoint": {
+ "additionalProperties": false,
+ "properties": {
+ "Address": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ScalingConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AutoPause": {
+ "type": "boolean"
+ },
+ "MaxCapacity": {
+ "type": "integer"
+ },
+ "MinCapacity": {
+ "type": "integer"
+ },
+ "SecondsBeforeTimeout": {
+ "type": "integer"
+ },
+ "SecondsUntilAutoPause": {
+ "type": "integer"
+ },
+ "TimeoutAction": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServerlessV2ScalingConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "MaxCapacity": {
+ "type": "number"
+ },
+ "MinCapacity": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/DBClusterIdentifier"
+ ],
+ "properties": {
+ "AllocatedStorage": {
+ "type": "integer"
+ },
+ "AssociatedRoles": {
+ "items": {
+ "$ref": "#/definitions/DBClusterRole"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "AutoMinorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AvailabilityZones": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "BacktrackWindow": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "BackupRetentionPeriod": {
+ "default": 1,
+ "maximum": 35,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "CopyTagsToSnapshot": {
+ "type": "boolean"
+ },
+ "DBClusterArn": {
+ "type": "string"
+ },
+ "DBClusterIdentifier": {
+ "maxLength": 63,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$",
+ "type": "string"
+ },
+ "DBClusterInstanceClass": {
+ "type": "string"
+ },
+ "DBClusterParameterGroupName": {
+ "type": "string"
+ },
+ "DBClusterResourceId": {
+ "type": "string"
+ },
+ "DBInstanceParameterGroupName": {
+ "type": "string"
+ },
+ "DBSubnetGroupName": {
+ "type": "string"
+ },
+ "DBSystemId": {
+ "type": "string"
+ },
+ "DatabaseName": {
+ "type": "string"
+ },
+ "DeletionProtection": {
+ "type": "boolean"
+ },
+ "Domain": {
+ "type": "string"
+ },
+ "DomainIAMRoleName": {
+ "type": "string"
+ },
+ "EnableCloudwatchLogsExports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "EnableGlobalWriteForwarding": {
+ "type": "boolean"
+ },
+ "EnableHttpEndpoint": {
+ "type": "boolean"
+ },
+ "EnableIAMDatabaseAuthentication": {
+ "type": "boolean"
+ },
+ "EnableLocalWriteForwarding": {
+ "type": "boolean"
+ },
+ "Endpoint": {
+ "$ref": "#/definitions/Endpoint"
+ },
+ "Engine": {
+ "type": "string"
+ },
+ "EngineLifecycleSupport": {
+ "type": "string"
+ },
+ "EngineMode": {
+ "type": "string"
+ },
+ "EngineVersion": {
+ "type": "string"
+ },
+ "GlobalClusterIdentifier": {
+ "maxLength": 63,
+ "minLength": 0,
+ "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$",
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "ManageMasterUserPassword": {
+ "type": "boolean"
+ },
+ "MasterUserPassword": {
+ "type": "string"
+ },
+ "MasterUserSecret": {
+ "$ref": "#/definitions/MasterUserSecret"
+ },
+ "MasterUsername": {
+ "minLength": 1,
+ "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$",
+ "type": "string"
+ },
+ "MonitoringInterval": {
+ "type": "integer"
+ },
+ "MonitoringRoleArn": {
+ "type": "string"
+ },
+ "NetworkType": {
+ "type": "string"
+ },
+ "PerformanceInsightsEnabled": {
+ "type": "boolean"
+ },
+ "PerformanceInsightsKmsKeyId": {
+ "type": "string"
+ },
+ "PerformanceInsightsRetentionPeriod": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "PreferredBackupWindow": {
+ "type": "string"
+ },
+ "PreferredMaintenanceWindow": {
+ "type": "string"
+ },
+ "PubliclyAccessible": {
+ "type": "boolean"
+ },
+ "ReadEndpoint": {
+ "$ref": "#/definitions/ReadEndpoint"
+ },
+ "ReplicationSourceIdentifier": {
+ "type": "string"
+ },
+ "RestoreToTime": {
+ "type": "string"
+ },
+ "RestoreType": {
+ "type": "string"
+ },
+ "ScalingConfiguration": {
+ "$ref": "#/definitions/ScalingConfiguration"
+ },
+ "ServerlessV2ScalingConfiguration": {
+ "$ref": "#/definitions/ServerlessV2ScalingConfiguration"
+ },
+ "SnapshotIdentifier": {
+ "type": "string"
+ },
+ "SourceDBClusterIdentifier": {
+ "type": "string"
+ },
+ "SourceRegion": {
+ "type": "string"
+ },
+ "StorageEncrypted": {
+ "type": "boolean"
+ },
+ "StorageThroughput": {
+ "type": "integer"
+ },
+ "StorageType": {
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "UseLatestRestorableTime": {
+ "type": "boolean"
+ },
+ "VpcSecurityGroupIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "propertyTransform": {
+ "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)",
+ "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)",
+ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)",
+ "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )",
+ "/properties/Engine": "$lowercase(Engine)",
+ "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])",
+ "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])",
+ "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])",
+ "/properties/NetworkType": "$lowercase(NetworkType)",
+ "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKmsKeyId])",
+ "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)",
+ "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)",
+ "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)",
+ "/properties/StorageType": "$lowercase(StorageType)"
+ },
+ "readOnlyProperties": [
+ "/properties/DBClusterArn",
+ "/properties/DBClusterResourceId",
+ "/properties/Endpoint",
+ "/properties/Endpoint/Address",
+ "/properties/Endpoint/Port",
+ "/properties/ReadEndpoint/Address",
+ "/properties/MasterUserSecret/SecretArn",
+ "/properties/StorageThroughput"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::RDS::DBCluster",
+ "writeOnlyProperties": [
+ "/properties/DBInstanceParameterGroupName",
+ "/properties/MasterUserPassword",
+ "/properties/RestoreToTime",
+ "/properties/RestoreType",
+ "/properties/SnapshotIdentifier",
+ "/properties/SourceDBClusterIdentifier",
+ "/properties/SourceRegion",
+ "/properties/UseLatestRestorableTime"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-rds-dbsubnetgroup.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-rds-dbsubnetgroup.json
new file mode 100644
index 0000000000..d228afbbad
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-rds-dbsubnetgroup.json
@@ -0,0 +1,71 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/DBSubnetGroupName"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/DBSubnetGroupName"
+ ],
+ "properties": {
+ "DBSubnetGroupDescription": {
+ "type": "string"
+ },
+ "DBSubnetGroupName": {
+ "type": "string"
+ },
+ "SubnetIds": {
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "propertyTransform": {
+ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)"
+ },
+ "required": [
+ "DBSubnetGroupDescription",
+ "SubnetIds"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::RDS::DBSubnetGroup"
+}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-route53resolver-resolverrule.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-route53resolver-resolverrule.json
index fbbc890ba6..ef1d6fa965 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-route53resolver-resolverrule.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-route53resolver-resolverrule.json
@@ -67,6 +67,7 @@
"Name": {
"maxLength": 64,
"minLength": 0,
+ "pattern": "(?!^[0-9]+$)([a-zA-Z0-9\\-_' ']+)",
"type": "string"
},
"ResolverEndpointId": {
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-secretsmanager-secrettargetattachment.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-secretsmanager-secrettargetattachment.json
deleted file mode 100644
index 8b5501d290..0000000000
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-secretsmanager-secrettargetattachment.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "additionalProperties": false,
- "primaryIdentifier": [
- "/properties/Id"
- ],
- "properties": {
- "Id": {
- "type": "string"
- },
- "SecretId": {
- "type": "string"
- },
- "TargetId": {
- "type": "string"
- },
- "TargetType": {
- "type": "string"
- }
- },
- "readOnlyProperties": [
- "/properties/Id"
- ],
- "required": [
- "SecretId",
- "TargetType",
- "TargetId"
- ],
- "typeName": "AWS::SecretsManager::SecretTargetAttachment"
-}
diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-waf-rule.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-waf-rule.json
index fee0c5bbb0..b710c22a22 100644
--- a/src/cfnlint/data/schemas/providers/il_central_1/aws-waf-rule.json
+++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-waf-rule.json
@@ -15,15 +15,6 @@
"type": "boolean"
},
"Type": {
- "enum": [
- "ByteMatch",
- "GeoMatch",
- "IPMatch",
- "RegexMatch",
- "SizeConstraint",
- "SqlInjectionMatch",
- "XssMatch"
- ],
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/__init__.py b/src/cfnlint/data/schemas/providers/me_central_1/__init__.py
index f956801503..3fdcf42927 100644
--- a/src/cfnlint/data/schemas/providers/me_central_1/__init__.py
+++ b/src/cfnlint/data/schemas/providers/me_central_1/__init__.py
@@ -927,9 +927,7 @@
"aws-ecs-cluster.json",
"aws-ecs-clustercapacityproviderassociations.json",
"aws-ecs-primarytaskset.json",
- "aws-ecs-service.json",
"aws-ecs-taskdefinition.json",
- "aws-ecs-taskset.json",
"aws-efs-accesspoint.json",
"aws-efs-filesystem.json",
"aws-efs-mounttarget.json",
@@ -1003,7 +1001,6 @@
"aws-glue-trigger.json",
"aws-glue-usageprofile.json",
"aws-glue-workflow.json",
- "aws-guardduty-detector.json",
"aws-guardduty-filter.json",
"aws-guardduty-ipset.json",
"aws-guardduty-malwareprotectionplan.json",
@@ -1062,7 +1059,6 @@
"aws-iot-thingtype.json",
"aws-iot-topicrule.json",
"aws-iot-topicruledestination.json",
- "aws-kinesis-stream.json",
"aws-kinesisanalyticsv2-application.json",
"aws-kinesisfirehose-deliverystream.json",
"aws-kms-alias.json",
@@ -1119,7 +1115,6 @@
"aws-neptune-dbsubnetgroup.json",
"aws-neptune-eventsubscription.json",
"aws-networkfirewall-firewall.json",
- "aws-networkfirewall-firewallpolicy.json",
"aws-networkfirewall-loggingconfiguration.json",
"aws-networkfirewall-rulegroup.json",
"aws-networkfirewall-tlsinspectionconfiguration.json",
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-codepipeline-customactiontype.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-codepipeline-customactiontype.json
index 19c17f4d7e..3e3c3f3597 100644
--- a/src/cfnlint/data/schemas/providers/me_central_1/aws-codepipeline-customactiontype.json
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-codepipeline-customactiontype.json
@@ -104,6 +104,15 @@
],
"properties": {
"Category": {
+ "enum": [
+ "Approval",
+ "Build",
+ "Compute",
+ "Deploy",
+ "Invoke",
+ "Source",
+ "Test"
+ ],
"type": "string"
},
"ConfigurationProperties": {
@@ -123,6 +132,7 @@
"$ref": "#/definitions/ArtifactDetails"
},
"Provider": {
+ "pattern": "[0-9A-Za-z_-]+",
"type": "string"
},
"Settings": {
@@ -136,6 +146,7 @@
"uniqueItems": false
},
"Version": {
+ "pattern": "[0-9A-Za-z_-]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-host.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-host.json
index 71dc619f5c..3f8a8acd62 100644
--- a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-host.json
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-host.json
@@ -9,16 +9,16 @@
],
"properties": {
"AutoPlacement": {
- "enum": [
- "off",
- "on"
- ],
"type": "string"
},
"AvailabilityZone": {
"type": "string"
},
"HostRecovery": {
+ "enum": [
+ "off",
+ "on"
+ ],
"type": "string"
},
"Id": {
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-gamelift-fleet.json
index f603fbeac1..54680c6bba 100644
--- a/src/cfnlint/data/schemas/providers/me_central_1/aws-gamelift-fleet.json
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-gamelift-fleet.json
@@ -178,9 +178,11 @@
"type": "string"
},
"ServerLaunchParameters": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- =@;{},?'\\[\\]\"]+",
"type": "string"
},
"ServerLaunchPath": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- ]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-guardduty-detector.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-guardduty-detector.json
new file mode 100644
index 0000000000..efaad17ff9
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-guardduty-detector.json
@@ -0,0 +1,184 @@
+{
+ "additionalProperties": false,
+ "definitions": {
+ "CFNDataSourceConfigurations": {
+ "additionalProperties": false,
+ "properties": {
+ "Kubernetes": {
+ "$ref": "#/definitions/CFNKubernetesConfiguration"
+ },
+ "MalwareProtection": {
+ "$ref": "#/definitions/CFNMalwareProtectionConfiguration"
+ },
+ "S3Logs": {
+ "$ref": "#/definitions/CFNS3LogsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureAdditionalConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Status": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AdditionalConfiguration": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureAdditionalConfiguration"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "maxLength": 128,
+ "type": "string"
+ },
+ "Status": {
+ "enum": [
+ "ENABLED",
+ "DISABLED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "Status"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesAuditLogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AuditLogs": {
+ "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration"
+ }
+ },
+ "required": [
+ "AuditLogs"
+ ],
+ "type": "object"
+ },
+ "CFNMalwareProtectionConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ScanEc2InstanceWithFindings": {
+ "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNS3LogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNScanEc2InstanceWithFindingsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "EbsVolumes": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "TagItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "DataSources": {
+ "$ref": "#/definitions/CFNDataSourceConfigurations"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Features": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureConfiguration"
+ },
+ "type": "array"
+ },
+ "FindingPublishingFrequency": {
+ "enum": [
+ "FIFTEEN_MINUTES",
+ "ONE_HOUR",
+ "SIX_HOURS"
+ ],
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/TagItem"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Enable"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": false,
+ "taggable": true
+ },
+ "typeName": "AWS::GuardDuty::Detector"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-kinesis-stream.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-kinesis-stream.json
new file mode 100644
index 0000000000..be1bc65c07
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-kinesis-stream.json
@@ -0,0 +1,133 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "definitions": {
+ "StreamEncryption": {
+ "additionalProperties": false,
+ "properties": {
+ "EncryptionType": {
+ "enum": [
+ "KMS"
+ ],
+ "type": "string"
+ },
+ "KeyId": {
+ "anyOf": [
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/Arn",
+ "typeName": "AWS::KMS::Key"
+ }
+ },
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/KeyId",
+ "typeName": "AWS::KMS::Key"
+ }
+ }
+ ],
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "EncryptionType",
+ "KeyId"
+ ],
+ "type": "object"
+ },
+ "StreamModeDetails": {
+ "additionalProperties": false,
+ "properties": {
+ "StreamMode": {
+ "enum": [
+ "ON_DEMAND",
+ "PROVISIONED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "StreamMode"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9_.-]+$",
+ "type": "string"
+ },
+ "RetentionPeriodHours": {
+ "maximum": 8760,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "ShardCount": {
+ "maximum": 100000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "StreamEncryption": {
+ "$ref": "#/definitions/StreamEncryption"
+ },
+ "StreamModeDetails": {
+ "$ref": "#/definitions/StreamModeDetails",
+ "default": {
+ "StreamMode": "PROVISIONED"
+ }
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Kinesis::Stream"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-firewallpolicy.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-firewallpolicy.json
new file mode 100644
index 0000000000..973b595561
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-networkfirewall-firewallpolicy.json
@@ -0,0 +1,332 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/FirewallPolicyName"
+ ],
+ "definitions": {
+ "ActionDefinition": {
+ "additionalProperties": false,
+ "properties": {
+ "PublishMetricAction": {
+ "$ref": "#/definitions/PublishMetricAction"
+ }
+ },
+ "type": "object"
+ },
+ "CustomAction": {
+ "additionalProperties": false,
+ "properties": {
+ "ActionDefinition": {
+ "$ref": "#/definitions/ActionDefinition"
+ },
+ "ActionName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ActionName",
+ "ActionDefinition"
+ ],
+ "type": "object"
+ },
+ "Dimension": {
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-_ ]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value"
+ ],
+ "type": "object"
+ },
+ "FirewallPolicy": {
+ "additionalProperties": false,
+ "properties": {
+ "PolicyVariables": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleVariables": {
+ "$ref": "#/definitions/RuleVariables"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatefulEngineOptions": {
+ "$ref": "#/definitions/StatefulEngineOptions"
+ },
+ "StatefulRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatefulRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessCustomActions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/CustomAction"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessFragmentDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatelessRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TLSInspectionConfigurationArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "StatelessDefaultActions",
+ "StatelessFragmentDefaultActions"
+ ],
+ "type": "object"
+ },
+ "IPSet": {
+ "additionalProperties": false,
+ "properties": {
+ "Definition": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/VariableDefinition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OverrideAction": {
+ "enum": [
+ "DROP_TO_ALERT"
+ ],
+ "type": "string"
+ },
+ "Priority": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "PublishMetricAction": {
+ "additionalProperties": false,
+ "properties": {
+ "Dimensions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/Dimension"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "required": [
+ "Dimensions"
+ ],
+ "type": "object"
+ },
+ "ResourceArn": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^(arn:aws.*)$",
+ "type": "string"
+ },
+ "RuleOrder": {
+ "enum": [
+ "DEFAULT_ACTION_ORDER",
+ "STRICT_ORDER"
+ ],
+ "type": "string"
+ },
+ "RuleVariables": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[A-Za-z0-9_]{1,32}$": {
+ "$ref": "#/definitions/IPSet"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulEngineOptions": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleOrder": {
+ "$ref": "#/definitions/RuleOrder"
+ },
+ "StreamExceptionPolicy": {
+ "$ref": "#/definitions/StreamExceptionPolicy"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupOverride": {
+ "additionalProperties": false,
+ "properties": {
+ "Action": {
+ "$ref": "#/definitions/OverrideAction"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Override": {
+ "$ref": "#/definitions/StatefulRuleGroupOverride"
+ },
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn"
+ ],
+ "type": "object"
+ },
+ "StatelessRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn",
+ "Priority"
+ ],
+ "type": "object"
+ },
+ "StreamExceptionPolicy": {
+ "enum": [
+ "DROP",
+ "CONTINUE",
+ "REJECT"
+ ],
+ "type": "string"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ },
+ "VariableDefinition": {
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/FirewallPolicyArn"
+ ],
+ "properties": {
+ "Description": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "FirewallPolicy": {
+ "$ref": "#/definitions/FirewallPolicy"
+ },
+ "FirewallPolicyArn": {
+ "$ref": "#/definitions/ResourceArn"
+ },
+ "FirewallPolicyId": {
+ "maxLength": 36,
+ "minLength": 36,
+ "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$",
+ "type": "string"
+ },
+ "FirewallPolicyName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-]+$",
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/FirewallPolicyArn",
+ "/properties/FirewallPolicyId"
+ ],
+ "required": [
+ "FirewallPolicyName",
+ "FirewallPolicy"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::NetworkFirewall::FirewallPolicy"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-waf-rule.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-waf-rule.json
index fee0c5bbb0..b710c22a22 100644
--- a/src/cfnlint/data/schemas/providers/me_central_1/aws-waf-rule.json
+++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-waf-rule.json
@@ -15,15 +15,6 @@
"type": "boolean"
},
"Type": {
- "enum": [
- "ByteMatch",
- "GeoMatch",
- "IPMatch",
- "RegexMatch",
- "SizeConstraint",
- "SqlInjectionMatch",
- "XssMatch"
- ],
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/__init__.py b/src/cfnlint/data/schemas/providers/me_south_1/__init__.py
index 0bd3a7efdc..d3cc82586e 100644
--- a/src/cfnlint/data/schemas/providers/me_south_1/__init__.py
+++ b/src/cfnlint/data/schemas/providers/me_south_1/__init__.py
@@ -1115,9 +1115,7 @@
"aws-ecs-cluster.json",
"aws-ecs-clustercapacityproviderassociations.json",
"aws-ecs-primarytaskset.json",
- "aws-ecs-service.json",
"aws-ecs-taskdefinition.json",
- "aws-ecs-taskset.json",
"aws-efs-accesspoint.json",
"aws-efs-filesystem.json",
"aws-efs-mounttarget.json",
@@ -1205,7 +1203,6 @@
"aws-groundstation-config.json",
"aws-groundstation-dataflowendpointgroup.json",
"aws-groundstation-missionprofile.json",
- "aws-guardduty-detector.json",
"aws-guardduty-filter.json",
"aws-guardduty-ipset.json",
"aws-guardduty-malwareprotectionplan.json",
@@ -1269,7 +1266,6 @@
"aws-iot-thingtype.json",
"aws-iot-topicrule.json",
"aws-iot-topicruledestination.json",
- "aws-kinesis-stream.json",
"aws-kinesisanalytics-applicationoutput.json",
"aws-kinesisanalyticsv2-application.json",
"aws-kinesisanalyticsv2-applicationoutput.json",
@@ -1322,7 +1318,6 @@
"aws-neptune-dbsubnetgroup.json",
"aws-neptune-eventsubscription.json",
"aws-networkfirewall-firewall.json",
- "aws-networkfirewall-firewallpolicy.json",
"aws-networkfirewall-loggingconfiguration.json",
"aws-networkfirewall-rulegroup.json",
"aws-networkfirewall-tlsinspectionconfiguration.json",
@@ -1365,7 +1360,6 @@
"aws-pipes-pipe.json",
"aws-ram-permission.json",
"aws-ram-resourceshare.json",
- "aws-rds-dbcluster.json",
"aws-rds-dbclusterparametergroup.json",
"aws-rds-dbinstance.json",
"aws-rds-dbparametergroup.json",
@@ -1374,7 +1368,6 @@
"aws-rds-dbproxytargetgroup.json",
"aws-rds-dbsecuritygroup.json",
"aws-rds-dbsecuritygroupingress.json",
- "aws-rds-dbsubnetgroup.json",
"aws-rds-eventsubscription.json",
"aws-rds-globalcluster.json",
"aws-rds-integration.json",
@@ -1464,6 +1457,7 @@
"aws-secretsmanager-resourcepolicy.json",
"aws-secretsmanager-rotationschedule.json",
"aws-secretsmanager-secret.json",
+ "aws-secretsmanager-secrettargetattachment.json",
"aws-securityhub-automationrule.json",
"aws-securityhub-delegatedadmin.json",
"aws-securityhub-hub.json",
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-codepipeline-customactiontype.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-codepipeline-customactiontype.json
index 89235a97cf..3b51d25fe6 100644
--- a/src/cfnlint/data/schemas/providers/me_south_1/aws-codepipeline-customactiontype.json
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-codepipeline-customactiontype.json
@@ -104,6 +104,15 @@
],
"properties": {
"Category": {
+ "enum": [
+ "Approval",
+ "Build",
+ "Compute",
+ "Deploy",
+ "Invoke",
+ "Source",
+ "Test"
+ ],
"type": "string"
},
"ConfigurationProperties": {
@@ -123,6 +132,7 @@
"$ref": "#/definitions/ArtifactDetails"
},
"Provider": {
+ "pattern": "[0-9A-Za-z_-]+",
"type": "string"
},
"Settings": {
@@ -136,6 +146,7 @@
"uniqueItems": false
},
"Version": {
+ "pattern": "[0-9A-Za-z_-]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-gamelift-fleet.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-gamelift-fleet.json
index f603fbeac1..54680c6bba 100644
--- a/src/cfnlint/data/schemas/providers/me_south_1/aws-gamelift-fleet.json
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-gamelift-fleet.json
@@ -178,9 +178,11 @@
"type": "string"
},
"ServerLaunchParameters": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- =@;{},?'\\[\\]\"]+",
"type": "string"
},
"ServerLaunchPath": {
+ "pattern": "[A-Za-z0-9_:.+\\/\\\\\\- ]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-guardduty-detector.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-guardduty-detector.json
new file mode 100644
index 0000000000..efaad17ff9
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-guardduty-detector.json
@@ -0,0 +1,184 @@
+{
+ "additionalProperties": false,
+ "definitions": {
+ "CFNDataSourceConfigurations": {
+ "additionalProperties": false,
+ "properties": {
+ "Kubernetes": {
+ "$ref": "#/definitions/CFNKubernetesConfiguration"
+ },
+ "MalwareProtection": {
+ "$ref": "#/definitions/CFNMalwareProtectionConfiguration"
+ },
+ "S3Logs": {
+ "$ref": "#/definitions/CFNS3LogsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureAdditionalConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "maxLength": 256,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Status": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CFNFeatureConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AdditionalConfiguration": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureAdditionalConfiguration"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "maxLength": 128,
+ "type": "string"
+ },
+ "Status": {
+ "enum": [
+ "ENABLED",
+ "DISABLED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "Status"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesAuditLogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNKubernetesConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AuditLogs": {
+ "$ref": "#/definitions/CFNKubernetesAuditLogsConfiguration"
+ }
+ },
+ "required": [
+ "AuditLogs"
+ ],
+ "type": "object"
+ },
+ "CFNMalwareProtectionConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ScanEc2InstanceWithFindings": {
+ "$ref": "#/definitions/CFNScanEc2InstanceWithFindingsConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "CFNS3LogsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "CFNScanEc2InstanceWithFindingsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "EbsVolumes": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "TagItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Id"
+ ],
+ "properties": {
+ "DataSources": {
+ "$ref": "#/definitions/CFNDataSourceConfigurations"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Features": {
+ "items": {
+ "$ref": "#/definitions/CFNFeatureConfiguration"
+ },
+ "type": "array"
+ },
+ "FindingPublishingFrequency": {
+ "enum": [
+ "FIFTEEN_MINUTES",
+ "ONE_HOUR",
+ "SIX_HOURS"
+ ],
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/TagItem"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Enable"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": false,
+ "taggable": true
+ },
+ "typeName": "AWS::GuardDuty::Detector"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-iam-managedpolicy.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-iam-managedpolicy.json
index e138e5c7fe..41620915f0 100644
--- a/src/cfnlint/data/schemas/providers/me_south_1/aws-iam-managedpolicy.json
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-iam-managedpolicy.json
@@ -47,6 +47,7 @@
},
"PolicyDocument": {
"maxLength": 6144,
+ "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u00FF]+",
"type": [
"object",
"string"
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-kinesis-stream.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-kinesis-stream.json
new file mode 100644
index 0000000000..be1bc65c07
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-kinesis-stream.json
@@ -0,0 +1,133 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Name"
+ ],
+ "definitions": {
+ "StreamEncryption": {
+ "additionalProperties": false,
+ "properties": {
+ "EncryptionType": {
+ "enum": [
+ "KMS"
+ ],
+ "type": "string"
+ },
+ "KeyId": {
+ "anyOf": [
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/Arn",
+ "typeName": "AWS::KMS::Key"
+ }
+ },
+ {
+ "relationshipRef": {
+ "propertyPath": "/properties/KeyId",
+ "typeName": "AWS::KMS::Key"
+ }
+ }
+ ],
+ "maxLength": 2048,
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "EncryptionType",
+ "KeyId"
+ ],
+ "type": "object"
+ },
+ "StreamModeDetails": {
+ "additionalProperties": false,
+ "properties": {
+ "StreamMode": {
+ "enum": [
+ "ON_DEMAND",
+ "PROVISIONED"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "StreamMode"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Name"
+ ],
+ "properties": {
+ "Arn": {
+ "type": "string"
+ },
+ "Name": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9_.-]+$",
+ "type": "string"
+ },
+ "RetentionPeriodHours": {
+ "maximum": 8760,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "ShardCount": {
+ "maximum": 100000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "StreamEncryption": {
+ "$ref": "#/definitions/StreamEncryption"
+ },
+ "StreamModeDetails": {
+ "$ref": "#/definitions/StreamModeDetails",
+ "default": {
+ "StreamMode": "PROVISIONED"
+ }
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Arn"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-kinesis.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::Kinesis::Stream"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-networkfirewall-firewallpolicy.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-networkfirewall-firewallpolicy.json
new file mode 100644
index 0000000000..973b595561
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-networkfirewall-firewallpolicy.json
@@ -0,0 +1,332 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/FirewallPolicyName"
+ ],
+ "definitions": {
+ "ActionDefinition": {
+ "additionalProperties": false,
+ "properties": {
+ "PublishMetricAction": {
+ "$ref": "#/definitions/PublishMetricAction"
+ }
+ },
+ "type": "object"
+ },
+ "CustomAction": {
+ "additionalProperties": false,
+ "properties": {
+ "ActionDefinition": {
+ "$ref": "#/definitions/ActionDefinition"
+ },
+ "ActionName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "ActionName",
+ "ActionDefinition"
+ ],
+ "type": "object"
+ },
+ "Dimension": {
+ "additionalProperties": false,
+ "properties": {
+ "Value": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-_ ]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Value"
+ ],
+ "type": "object"
+ },
+ "FirewallPolicy": {
+ "additionalProperties": false,
+ "properties": {
+ "PolicyVariables": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleVariables": {
+ "$ref": "#/definitions/RuleVariables"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatefulEngineOptions": {
+ "$ref": "#/definitions/StatefulEngineOptions"
+ },
+ "StatefulRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatefulRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessCustomActions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/CustomAction"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessFragmentDefaultActions": {
+ "insertionOrder": true,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "StatelessRuleGroupReferences": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/StatelessRuleGroupReference"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "TLSInspectionConfigurationArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "StatelessDefaultActions",
+ "StatelessFragmentDefaultActions"
+ ],
+ "type": "object"
+ },
+ "IPSet": {
+ "additionalProperties": false,
+ "properties": {
+ "Definition": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/VariableDefinition"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "type": "object"
+ },
+ "OverrideAction": {
+ "enum": [
+ "DROP_TO_ALERT"
+ ],
+ "type": "string"
+ },
+ "Priority": {
+ "maximum": 65535,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "PublishMetricAction": {
+ "additionalProperties": false,
+ "properties": {
+ "Dimensions": {
+ "insertionOrder": true,
+ "items": {
+ "$ref": "#/definitions/Dimension"
+ },
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "required": [
+ "Dimensions"
+ ],
+ "type": "object"
+ },
+ "ResourceArn": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^(arn:aws.*)$",
+ "type": "string"
+ },
+ "RuleOrder": {
+ "enum": [
+ "DEFAULT_ACTION_ORDER",
+ "STRICT_ORDER"
+ ],
+ "type": "string"
+ },
+ "RuleVariables": {
+ "additionalProperties": false,
+ "patternProperties": {
+ "^[A-Za-z0-9_]{1,32}$": {
+ "$ref": "#/definitions/IPSet"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulEngineOptions": {
+ "additionalProperties": false,
+ "properties": {
+ "RuleOrder": {
+ "$ref": "#/definitions/RuleOrder"
+ },
+ "StreamExceptionPolicy": {
+ "$ref": "#/definitions/StreamExceptionPolicy"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupOverride": {
+ "additionalProperties": false,
+ "properties": {
+ "Action": {
+ "$ref": "#/definitions/OverrideAction"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Override": {
+ "$ref": "#/definitions/StatefulRuleGroupOverride"
+ },
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn"
+ ],
+ "type": "object"
+ },
+ "StatelessRuleGroupReference": {
+ "additionalProperties": false,
+ "properties": {
+ "Priority": {
+ "$ref": "#/definitions/Priority"
+ },
+ "ResourceArn": {
+ "$ref": "#/definitions/ResourceArn"
+ }
+ },
+ "required": [
+ "ResourceArn",
+ "Priority"
+ ],
+ "type": "object"
+ },
+ "StreamExceptionPolicy": {
+ "enum": [
+ "DROP",
+ "CONTINUE",
+ "REJECT"
+ ],
+ "type": "string"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 255,
+ "minLength": 0,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key",
+ "Value"
+ ],
+ "type": "object"
+ },
+ "VariableDefinition": {
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/FirewallPolicyArn"
+ ],
+ "properties": {
+ "Description": {
+ "maxLength": 512,
+ "minLength": 1,
+ "pattern": "^.*$",
+ "type": "string"
+ },
+ "FirewallPolicy": {
+ "$ref": "#/definitions/FirewallPolicy"
+ },
+ "FirewallPolicyArn": {
+ "$ref": "#/definitions/ResourceArn"
+ },
+ "FirewallPolicyId": {
+ "maxLength": 36,
+ "minLength": 36,
+ "pattern": "^([0-9a-f]{8})-([0-9a-f]{4}-){3}([0-9a-f]{12})$",
+ "type": "string"
+ },
+ "FirewallPolicyName": {
+ "maxLength": 128,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z0-9-]+$",
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/FirewallPolicyArn",
+ "/properties/FirewallPolicyId"
+ ],
+ "required": [
+ "FirewallPolicyName",
+ "FirewallPolicy"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-networkfirewall.git",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::NetworkFirewall::FirewallPolicy"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-rds-dbcluster.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-rds-dbcluster.json
new file mode 100644
index 0000000000..46000178b5
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-rds-dbcluster.json
@@ -0,0 +1,397 @@
+{
+ "additionalProperties": false,
+ "conditionalCreateOnlyProperties": [
+ "/properties/Engine",
+ "/properties/GlobalClusterIdentifier",
+ "/properties/MasterUsername"
+ ],
+ "createOnlyProperties": [
+ "/properties/AvailabilityZones",
+ "/properties/DBClusterIdentifier",
+ "/properties/DBSubnetGroupName",
+ "/properties/DBSystemId",
+ "/properties/DatabaseName",
+ "/properties/EngineMode",
+ "/properties/KmsKeyId",
+ "/properties/PubliclyAccessible",
+ "/properties/RestoreToTime",
+ "/properties/RestoreType",
+ "/properties/SnapshotIdentifier",
+ "/properties/SourceDBClusterIdentifier",
+ "/properties/SourceRegion",
+ "/properties/StorageEncrypted",
+ "/properties/UseLatestRestorableTime"
+ ],
+ "definitions": {
+ "DBClusterRole": {
+ "additionalProperties": false,
+ "properties": {
+ "FeatureName": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "Endpoint": {
+ "additionalProperties": false,
+ "properties": {
+ "Address": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MasterUserSecret": {
+ "additionalProperties": false,
+ "properties": {
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "SecretArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ReadEndpoint": {
+ "additionalProperties": false,
+ "properties": {
+ "Address": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ScalingConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AutoPause": {
+ "type": "boolean"
+ },
+ "MaxCapacity": {
+ "type": "integer"
+ },
+ "MinCapacity": {
+ "type": "integer"
+ },
+ "SecondsBeforeTimeout": {
+ "type": "integer"
+ },
+ "SecondsUntilAutoPause": {
+ "type": "integer"
+ },
+ "TimeoutAction": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServerlessV2ScalingConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "MaxCapacity": {
+ "type": "number"
+ },
+ "MinCapacity": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/DBClusterIdentifier"
+ ],
+ "properties": {
+ "AllocatedStorage": {
+ "type": "integer"
+ },
+ "AssociatedRoles": {
+ "items": {
+ "$ref": "#/definitions/DBClusterRole"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "AutoMinorVersionUpgrade": {
+ "type": "boolean"
+ },
+ "AvailabilityZones": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "BacktrackWindow": {
+ "minimum": 0,
+ "type": "integer"
+ },
+ "BackupRetentionPeriod": {
+ "default": 1,
+ "maximum": 35,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "CopyTagsToSnapshot": {
+ "type": "boolean"
+ },
+ "DBClusterArn": {
+ "type": "string"
+ },
+ "DBClusterIdentifier": {
+ "maxLength": 63,
+ "minLength": 1,
+ "pattern": "^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$",
+ "type": "string"
+ },
+ "DBClusterInstanceClass": {
+ "type": "string"
+ },
+ "DBClusterParameterGroupName": {
+ "type": "string"
+ },
+ "DBClusterResourceId": {
+ "type": "string"
+ },
+ "DBInstanceParameterGroupName": {
+ "type": "string"
+ },
+ "DBSubnetGroupName": {
+ "type": "string"
+ },
+ "DBSystemId": {
+ "type": "string"
+ },
+ "DatabaseName": {
+ "type": "string"
+ },
+ "DeletionProtection": {
+ "type": "boolean"
+ },
+ "Domain": {
+ "type": "string"
+ },
+ "DomainIAMRoleName": {
+ "type": "string"
+ },
+ "EnableCloudwatchLogsExports": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ },
+ "EnableGlobalWriteForwarding": {
+ "type": "boolean"
+ },
+ "EnableHttpEndpoint": {
+ "type": "boolean"
+ },
+ "EnableIAMDatabaseAuthentication": {
+ "type": "boolean"
+ },
+ "EnableLocalWriteForwarding": {
+ "type": "boolean"
+ },
+ "Endpoint": {
+ "$ref": "#/definitions/Endpoint"
+ },
+ "Engine": {
+ "type": "string"
+ },
+ "EngineLifecycleSupport": {
+ "type": "string"
+ },
+ "EngineMode": {
+ "type": "string"
+ },
+ "EngineVersion": {
+ "type": "string"
+ },
+ "GlobalClusterIdentifier": {
+ "maxLength": 63,
+ "minLength": 0,
+ "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$",
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "ManageMasterUserPassword": {
+ "type": "boolean"
+ },
+ "MasterUserPassword": {
+ "type": "string"
+ },
+ "MasterUserSecret": {
+ "$ref": "#/definitions/MasterUserSecret"
+ },
+ "MasterUsername": {
+ "minLength": 1,
+ "pattern": "^[a-zA-Z]{1}[a-zA-Z0-9_]*$",
+ "type": "string"
+ },
+ "MonitoringInterval": {
+ "type": "integer"
+ },
+ "MonitoringRoleArn": {
+ "type": "string"
+ },
+ "NetworkType": {
+ "type": "string"
+ },
+ "PerformanceInsightsEnabled": {
+ "type": "boolean"
+ },
+ "PerformanceInsightsKmsKeyId": {
+ "type": "string"
+ },
+ "PerformanceInsightsRetentionPeriod": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "PreferredBackupWindow": {
+ "type": "string"
+ },
+ "PreferredMaintenanceWindow": {
+ "type": "string"
+ },
+ "PubliclyAccessible": {
+ "type": "boolean"
+ },
+ "ReadEndpoint": {
+ "$ref": "#/definitions/ReadEndpoint"
+ },
+ "ReplicationSourceIdentifier": {
+ "type": "string"
+ },
+ "RestoreToTime": {
+ "type": "string"
+ },
+ "RestoreType": {
+ "type": "string"
+ },
+ "ScalingConfiguration": {
+ "$ref": "#/definitions/ScalingConfiguration"
+ },
+ "ServerlessV2ScalingConfiguration": {
+ "$ref": "#/definitions/ServerlessV2ScalingConfiguration"
+ },
+ "SnapshotIdentifier": {
+ "type": "string"
+ },
+ "SourceDBClusterIdentifier": {
+ "type": "string"
+ },
+ "SourceRegion": {
+ "type": "string"
+ },
+ "StorageEncrypted": {
+ "type": "boolean"
+ },
+ "StorageThroughput": {
+ "type": "integer"
+ },
+ "StorageType": {
+ "type": "string"
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": true
+ },
+ "UseLatestRestorableTime": {
+ "type": "boolean"
+ },
+ "VpcSecurityGroupIds": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": true
+ }
+ },
+ "propertyTransform": {
+ "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)",
+ "/properties/DBClusterParameterGroupName": "$lowercase(DBClusterParameterGroupName)",
+ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)",
+ "/properties/EnableHttpEndpoint": "$lowercase($string(EngineMode)) = 'serverless' ? EnableHttpEndpoint : ($lowercase($string(Engine)) in ['aurora-postgresql', 'aurora-mysql'] ? EnableHttpEndpoint : false )",
+ "/properties/Engine": "$lowercase(Engine)",
+ "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])",
+ "/properties/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", KmsKeyId])",
+ "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", MasterUserSecret.KmsKeyId])",
+ "/properties/NetworkType": "$lowercase(NetworkType)",
+ "/properties/PerformanceInsightsKmsKeyId": "$join([\"arn:(aws)[-]{0,1}[a-z]{0,2}[-]{0,1}[a-z]{0,3}:kms:[a-z]{2}[-]{1}[a-z]{3,10}[-]{0,1}[a-z]{0,10}[-]{1}[1-3]{1}:[0-9]{12}[:]{1}key\\/\", PerformanceInsightsKmsKeyId])",
+ "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)",
+ "/properties/SnapshotIdentifier": "$lowercase(SnapshotIdentifier)",
+ "/properties/SourceDBClusterIdentifier": "$lowercase(SourceDBClusterIdentifier)",
+ "/properties/StorageType": "$lowercase(StorageType)"
+ },
+ "readOnlyProperties": [
+ "/properties/DBClusterArn",
+ "/properties/DBClusterResourceId",
+ "/properties/Endpoint",
+ "/properties/Endpoint/Address",
+ "/properties/Endpoint/Port",
+ "/properties/ReadEndpoint/Address",
+ "/properties/MasterUserSecret/SecretArn",
+ "/properties/StorageThroughput"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::RDS::DBCluster",
+ "writeOnlyProperties": [
+ "/properties/DBInstanceParameterGroupName",
+ "/properties/MasterUserPassword",
+ "/properties/RestoreToTime",
+ "/properties/RestoreType",
+ "/properties/SnapshotIdentifier",
+ "/properties/SourceDBClusterIdentifier",
+ "/properties/SourceRegion",
+ "/properties/UseLatestRestorableTime"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-rds-dbsubnetgroup.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-rds-dbsubnetgroup.json
new file mode 100644
index 0000000000..d228afbbad
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-rds-dbsubnetgroup.json
@@ -0,0 +1,71 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/DBSubnetGroupName"
+ ],
+ "definitions": {
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "maxLength": 128,
+ "minLength": 1,
+ "type": "string"
+ },
+ "Value": {
+ "maxLength": 256,
+ "minLength": 0,
+ "type": "string"
+ }
+ },
+ "required": [
+ "Key"
+ ],
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/DBSubnetGroupName"
+ ],
+ "properties": {
+ "DBSubnetGroupDescription": {
+ "type": "string"
+ },
+ "DBSubnetGroupName": {
+ "type": "string"
+ },
+ "SubnetIds": {
+ "insertionOrder": false,
+ "items": {
+ "type": "string"
+ },
+ "type": "array",
+ "uniqueItems": false
+ },
+ "Tags": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "maxItems": 50,
+ "type": "array",
+ "uniqueItems": false
+ }
+ },
+ "propertyTransform": {
+ "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)"
+ },
+ "required": [
+ "DBSubnetGroupDescription",
+ "SubnetIds"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-rds",
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::RDS::DBSubnetGroup"
+}
diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-secretsmanager-secrettargetattachment.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-secretsmanager-secrettargetattachment.json
deleted file mode 100644
index 8b5501d290..0000000000
--- a/src/cfnlint/data/schemas/providers/me_south_1/aws-secretsmanager-secrettargetattachment.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "additionalProperties": false,
- "primaryIdentifier": [
- "/properties/Id"
- ],
- "properties": {
- "Id": {
- "type": "string"
- },
- "SecretId": {
- "type": "string"
- },
- "TargetId": {
- "type": "string"
- },
- "TargetType": {
- "type": "string"
- }
- },
- "readOnlyProperties": [
- "/properties/Id"
- ],
- "required": [
- "SecretId",
- "TargetType",
- "TargetId"
- ],
- "typeName": "AWS::SecretsManager::SecretTargetAttachment"
-}
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py b/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py
index 1b7a713b3e..331474c606 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py
@@ -559,6 +559,7 @@
"AWS::KafkaConnect::Connector",
"AWS::KafkaConnect::CustomPlugin",
"AWS::KafkaConnect::WorkerConfiguration",
+ "AWS::Kinesis::ResourcePolicy",
"AWS::Kinesis::Stream",
"AWS::Kinesis::StreamConsumer",
"AWS::KinesisAnalytics::Application",
@@ -1371,9 +1372,7 @@
"aws-ecs-cluster.json",
"aws-ecs-clustercapacityproviderassociations.json",
"aws-ecs-primarytaskset.json",
- "aws-ecs-service.json",
"aws-ecs-taskdefinition.json",
- "aws-ecs-taskset.json",
"aws-efs-accesspoint.json",
"aws-efs-filesystem.json",
"aws-efs-mounttarget.json",
@@ -1542,6 +1541,7 @@
"aws-kafkaconnect-connector.json",
"aws-kafkaconnect-customplugin.json",
"aws-kafkaconnect-workerconfiguration.json",
+ "aws-kinesis-resourcepolicy.json",
"aws-kinesis-stream.json",
"aws-kinesis-streamconsumer.json",
"aws-kinesisanalytics-applicationoutput.json",
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ecs-service.json
new file mode 100644
index 0000000000..ba7baa1de3
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ecs-service.json
@@ -0,0 +1,585 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/DeploymentController",
+ "/properties/LaunchType",
+ "/properties/Role",
+ "/properties/SchedulingStrategy",
+ "/properties/ServiceName"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "CapacityProviderStrategyItem": {
+ "additionalProperties": false,
+ "properties": {
+ "Base": {
+ "type": "integer"
+ },
+ "CapacityProvider": {
+ "type": "string"
+ },
+ "Weight": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentAlarms": {
+ "additionalProperties": false,
+ "properties": {
+ "AlarmNames": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "AlarmNames",
+ "Rollback",
+ "Enable"
+ ],
+ "type": "object"
+ },
+ "DeploymentCircuitBreaker": {
+ "additionalProperties": false,
+ "properties": {
+ "Enable": {
+ "type": "boolean"
+ },
+ "Rollback": {
+ "type": "boolean"
+ }
+ },
+ "required": [
+ "Enable",
+ "Rollback"
+ ],
+ "type": "object"
+ },
+ "DeploymentConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Alarms": {
+ "$ref": "#/definitions/DeploymentAlarms"
+ },
+ "DeploymentCircuitBreaker": {
+ "$ref": "#/definitions/DeploymentCircuitBreaker"
+ },
+ "MaximumPercent": {
+ "type": "integer"
+ },
+ "MinimumHealthyPercent": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "DeploymentController": {
+ "additionalProperties": false,
+ "properties": {
+ "Type": {
+ "enum": [
+ "CODE_DEPLOY",
+ "ECS",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EBSTagSpecification": {
+ "additionalProperties": false,
+ "properties": {
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "ResourceType": {
+ "type": "string"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "ResourceType"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "LoadBalancerName": {
+ "type": "string"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "LogDriver": {
+ "type": "string"
+ },
+ "Options": {
+ "additionalProperties": false,
+ "patternProperties": {
+ ".{1,}": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecretOptions": {
+ "insertionOrder": false,
+ "items": {
+ "$ref": "#/definitions/Secret"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsvpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "PlacementConstraint": {
+ "additionalProperties": false,
+ "properties": {
+ "Expression": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "distinctInstance",
+ "memberOf"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "PlacementStrategy": {
+ "additionalProperties": false,
+ "properties": {
+ "Field": {
+ "type": "string"
+ },
+ "Type": {
+ "enum": [
+ "binpack",
+ "random",
+ "spread"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "type": "object"
+ },
+ "Secret": {
+ "additionalProperties": false,
+ "properties": {
+ "Name": {
+ "type": "string"
+ },
+ "ValueFrom": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name",
+ "ValueFrom"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectClientAlias": {
+ "additionalProperties": false,
+ "properties": {
+ "DnsName": {
+ "type": "string"
+ },
+ "Port": {
+ "type": "integer"
+ }
+ },
+ "required": [
+ "Port"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Enabled": {
+ "type": "boolean"
+ },
+ "LogConfiguration": {
+ "$ref": "#/definitions/LogConfiguration"
+ },
+ "Namespace": {
+ "type": "string"
+ },
+ "Services": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectService"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "Enabled"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectService": {
+ "additionalProperties": false,
+ "properties": {
+ "ClientAliases": {
+ "items": {
+ "$ref": "#/definitions/ServiceConnectClientAlias"
+ },
+ "type": "array"
+ },
+ "DiscoveryName": {
+ "type": "string"
+ },
+ "IngressPortOverride": {
+ "type": "integer"
+ },
+ "PortName": {
+ "type": "string"
+ },
+ "Timeout": {
+ "$ref": "#/definitions/TimeoutConfiguration"
+ },
+ "Tls": {
+ "$ref": "#/definitions/ServiceConnectTlsConfiguration"
+ }
+ },
+ "required": [
+ "PortName"
+ ],
+ "type": "object"
+ },
+ "ServiceConnectTlsCertificateAuthority": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsPcaAuthorityArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceConnectTlsConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IssuerCertificateAuthority": {
+ "$ref": "#/definitions/ServiceConnectTlsCertificateAuthority"
+ },
+ "KmsKey": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "IssuerCertificateAuthority"
+ ],
+ "type": "object"
+ },
+ "ServiceManagedEBSVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "Encrypted": {
+ "type": "boolean"
+ },
+ "FilesystemType": {
+ "type": "string"
+ },
+ "Iops": {
+ "type": "integer"
+ },
+ "KmsKeyId": {
+ "type": "string"
+ },
+ "RoleArn": {
+ "type": "string"
+ },
+ "SizeInGiB": {
+ "type": "integer"
+ },
+ "SnapshotId": {
+ "type": "string"
+ },
+ "TagSpecifications": {
+ "items": {
+ "$ref": "#/definitions/EBSTagSpecification"
+ },
+ "type": "array"
+ },
+ "Throughput": {
+ "type": "integer"
+ },
+ "VolumeType": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "RoleArn"
+ ],
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceVolumeConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "ManagedEBSVolume": {
+ "$ref": "#/definitions/ServiceManagedEBSVolumeConfiguration"
+ },
+ "Name": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "Name"
+ ],
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimeoutConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "IdleTimeoutSeconds": {
+ "type": "integer"
+ },
+ "PerRequestTimeoutSeconds": {
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/ServiceArn",
+ "/properties/Cluster"
+ ],
+ "properties": {
+ "CapacityProviderStrategy": {
+ "items": {
+ "$ref": "#/definitions/CapacityProviderStrategyItem"
+ },
+ "type": "array"
+ },
+ "Cluster": {
+ "type": "string"
+ },
+ "DeploymentConfiguration": {
+ "$ref": "#/definitions/DeploymentConfiguration"
+ },
+ "DeploymentController": {
+ "$ref": "#/definitions/DeploymentController"
+ },
+ "DesiredCount": {
+ "type": "integer"
+ },
+ "EnableECSManagedTags": {
+ "type": "boolean"
+ },
+ "EnableExecuteCommand": {
+ "type": "boolean"
+ },
+ "HealthCheckGracePeriodSeconds": {
+ "type": "integer"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE",
+ "EXTERNAL"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "Name": {
+ "type": "string"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlacementConstraints": {
+ "items": {
+ "$ref": "#/definitions/PlacementConstraint"
+ },
+ "type": "array"
+ },
+ "PlacementStrategies": {
+ "items": {
+ "$ref": "#/definitions/PlacementStrategy"
+ },
+ "type": "array"
+ },
+ "PlatformVersion": {
+ "default": "LATEST",
+ "type": "string"
+ },
+ "PropagateTags": {
+ "enum": [
+ "SERVICE",
+ "TASK_DEFINITION"
+ ],
+ "type": "string"
+ },
+ "Role": {
+ "type": "string"
+ },
+ "SchedulingStrategy": {
+ "enum": [
+ "DAEMON",
+ "REPLICA"
+ ],
+ "type": "string"
+ },
+ "ServiceArn": {
+ "type": "string"
+ },
+ "ServiceConnectConfiguration": {
+ "$ref": "#/definitions/ServiceConnectConfiguration"
+ },
+ "ServiceName": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ },
+ "VolumeConfigurations": {
+ "items": {
+ "$ref": "#/definitions/ServiceVolumeConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/ServiceArn",
+ "/properties/Name"
+ ],
+ "tagging": {
+ "cloudFormationSystemTags": true,
+ "tagOnCreate": true,
+ "tagProperty": "/properties/Tags",
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::Service",
+ "writeOnlyProperties": [
+ "/properties/ServiceConnectConfiguration",
+ "/properties/VolumeConfigurations"
+ ]
+}
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ecs-taskset.json
new file mode 100644
index 0000000000..3491488499
--- /dev/null
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ecs-taskset.json
@@ -0,0 +1,191 @@
+{
+ "additionalProperties": false,
+ "createOnlyProperties": [
+ "/properties/Cluster",
+ "/properties/ExternalId",
+ "/properties/LaunchType",
+ "/properties/LoadBalancers",
+ "/properties/NetworkConfiguration",
+ "/properties/PlatformVersion",
+ "/properties/Service",
+ "/properties/ServiceRegistries",
+ "/properties/TaskDefinition"
+ ],
+ "definitions": {
+ "AwsVpcConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AssignPublicIp": {
+ "enum": [
+ "DISABLED",
+ "ENABLED"
+ ],
+ "type": "string"
+ },
+ "SecurityGroups": {
+ "format": "AWS::EC2::SecurityGroup.Ids",
+ "items": {
+ "format": "AWS::EC2::SecurityGroup.GroupId",
+ "type": "string"
+ },
+ "maxItems": 5,
+ "type": "array"
+ },
+ "Subnets": {
+ "items": {
+ "type": "string"
+ },
+ "maxItems": 16,
+ "type": "array"
+ }
+ },
+ "required": [
+ "Subnets"
+ ],
+ "type": "object"
+ },
+ "LoadBalancer": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "TargetGroupArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfiguration": {
+ "additionalProperties": false,
+ "properties": {
+ "AwsVpcConfiguration": {
+ "$ref": "#/definitions/AwsVpcConfiguration"
+ }
+ },
+ "type": "object"
+ },
+ "Scale": {
+ "additionalProperties": false,
+ "properties": {
+ "Unit": {
+ "enum": [
+ "PERCENT"
+ ],
+ "type": "string"
+ },
+ "Value": {
+ "maximum": 100,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceRegistry": {
+ "additionalProperties": false,
+ "properties": {
+ "ContainerName": {
+ "type": "string"
+ },
+ "ContainerPort": {
+ "type": "integer"
+ },
+ "Port": {
+ "type": "integer"
+ },
+ "RegistryArn": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tag": {
+ "additionalProperties": false,
+ "properties": {
+ "Key": {
+ "type": "string"
+ },
+ "Value": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "primaryIdentifier": [
+ "/properties/Cluster",
+ "/properties/Service",
+ "/properties/Id"
+ ],
+ "properties": {
+ "Cluster": {
+ "type": "string"
+ },
+ "ExternalId": {
+ "type": "string"
+ },
+ "Id": {
+ "type": "string"
+ },
+ "LaunchType": {
+ "enum": [
+ "EC2",
+ "FARGATE"
+ ],
+ "type": "string"
+ },
+ "LoadBalancers": {
+ "items": {
+ "$ref": "#/definitions/LoadBalancer"
+ },
+ "type": "array"
+ },
+ "NetworkConfiguration": {
+ "$ref": "#/definitions/NetworkConfiguration"
+ },
+ "PlatformVersion": {
+ "type": "string"
+ },
+ "Scale": {
+ "$ref": "#/definitions/Scale"
+ },
+ "Service": {
+ "type": "string"
+ },
+ "ServiceRegistries": {
+ "items": {
+ "$ref": "#/definitions/ServiceRegistry"
+ },
+ "type": "array"
+ },
+ "Tags": {
+ "items": {
+ "$ref": "#/definitions/Tag"
+ },
+ "type": "array"
+ },
+ "TaskDefinition": {
+ "type": "string"
+ }
+ },
+ "readOnlyProperties": [
+ "/properties/Id"
+ ],
+ "required": [
+ "Cluster",
+ "Service",
+ "TaskDefinition"
+ ],
+ "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ecs.git",
+ "tagging": {
+ "cloudFormationSystemTags": false,
+ "tagOnCreate": true,
+ "tagUpdatable": true,
+ "taggable": true
+ },
+ "typeName": "AWS::ECS::TaskSet"
+}
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-apidestination.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-apidestination.json
index 2dad3ac2e5..84f7d5fd6e 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-apidestination.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-apidestination.json
@@ -11,6 +11,7 @@
"type": "string"
},
"ConnectionArn": {
+ "pattern": "^arn:aws([a-z]|\\-)*:events:([a-z]|\\d|\\-)*:([0-9]{12})?:connection\\/[\\.\\-_A-Za-z0-9]+\\/[\\-A-Za-z0-9]+$",
"type": "string"
},
"Description": {
@@ -30,6 +31,7 @@
"type": "string"
},
"InvocationEndpoint": {
+ "pattern": "^((%[0-9A-Fa-f]{2}|[-()_.!~*';/?:@\\x26=+$,A-Za-z0-9])+)([).!';/?:,])?$",
"type": "string"
},
"InvocationRateLimitPerSecond": {
@@ -39,6 +41,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-connection.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-connection.json
index 0ee80bb23e..c49843c440 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-connection.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-events-connection.json
@@ -189,6 +189,7 @@
"Name": {
"maxLength": 64,
"minLength": 1,
+ "pattern": "[\\.\\-_A-Za-z0-9]+",
"type": "string"
},
"SecretArn": {
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectattachment.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectattachment.json
index 66a3b9d10e..bce9f6a99a 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectattachment.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectattachment.json
@@ -69,12 +69,14 @@
"type": "string"
},
"CoreNetworkId": {
+ "pattern": "^core-network-([0-9a-f]{8,17})$",
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"EdgeLocation": {
+ "pattern": "[\\s\\S]*",
"type": "string"
},
"Options": {
@@ -103,6 +105,7 @@
"type": "array"
},
"TransportAttachmentId": {
+ "pattern": "^attachment-([0-9a-f]{8,17})$",
"type": "string"
},
"UpdatedAt": {
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectpeer.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectpeer.json
index fc49aa0ed4..4546a14b9a 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectpeer.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-connectpeer.json
@@ -95,12 +95,14 @@
"$ref": "#/definitions/ConnectPeerConfiguration"
},
"ConnectAttachmentId": {
+ "pattern": "^attachment-([0-9a-f]{8,17})$",
"type": "string"
},
"ConnectPeerId": {
"type": "string"
},
"CoreNetworkAddress": {
+ "pattern": "[\\s\\S]*",
"type": "string"
},
"CoreNetworkId": {
@@ -120,6 +122,7 @@
"type": "array"
},
"PeerAddress": {
+ "pattern": "[\\s\\S]*",
"type": "string"
},
"State": {
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-corenetwork.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-corenetwork.json
index b9c0a86526..3ff2dd3ebb 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-corenetwork.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-corenetwork.json
@@ -82,6 +82,7 @@
"type": "string"
},
"Description": {
+ "pattern": "[\\s\\S]*",
"type": "string"
},
"Edges": {
@@ -92,6 +93,7 @@
"type": "array"
},
"GlobalNetworkId": {
+ "pattern": "[\\s\\S]*",
"type": "string"
},
"OwnerAccount": {
@@ -99,6 +101,7 @@
},
"PolicyDocument": {
"format": "json",
+ "pattern": "[\\s\\S]*",
"type": [
"object",
"string"
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-sitetositevpnattachment.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-sitetositevpnattachment.json
index 481075f189..63e01be56c 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-sitetositevpnattachment.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-sitetositevpnattachment.json
@@ -64,6 +64,7 @@
"type": "string"
},
"CoreNetworkId": {
+ "pattern": "^core-network-([0-9a-f]{8,17})$",
"type": "string"
},
"CreatedAt": {
@@ -98,6 +99,7 @@
"type": "string"
},
"VpnConnectionArn": {
+ "pattern": "^arn:[^:]{1,63}:ec2:[^:]{0,63}:[^:]{0,63}:vpn-connection\\/vpn-[0-9a-f]{8,17}$",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-vpcattachment.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-vpcattachment.json
index 46a8636b20..f515aa8105 100644
--- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-vpcattachment.json
+++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-networkmanager-vpcattachment.json
@@ -69,6 +69,7 @@
"type": "string"
},
"CoreNetworkId": {
+ "pattern": "^core-network-([0-9a-f]{8,17})$",
"type": "string"
},
"CreatedAt": {
@@ -113,6 +114,7 @@
"type": "string"
},
"VpcArn": {
+ "pattern": "^arn:[^:]{1,63}:ec2:[^:]{0,63}:[^:]{0,63}:vpc\\/vpc-[0-9a-f]{8,17}$",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/__init__.py b/src/cfnlint/data/schemas/providers/us_east_1/__init__.py
index 4e6656278b..d1cbd4cf14 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/__init__.py
+++ b/src/cfnlint/data/schemas/providers/us_east_1/__init__.py
@@ -748,6 +748,7 @@
"AWS::Kendra::Faq",
"AWS::Kendra::Index",
"AWS::KendraRanking::ExecutionPlan",
+ "AWS::Kinesis::ResourcePolicy",
"AWS::Kinesis::Stream",
"AWS::Kinesis::StreamConsumer",
"AWS::KinesisAnalytics::Application",
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-accessanalyzer-analyzer.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-accessanalyzer-analyzer.json
index 6248da0d57..6b6d89571b 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-accessanalyzer-analyzer.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-accessanalyzer-analyzer.json
@@ -111,6 +111,7 @@
"AnalyzerName": {
"maxLength": 1024,
"minLength": 1,
+ "pattern": "[A-Za-z][A-Za-z0-9_.-]*",
"type": "string"
},
"ArchiveRules": {
@@ -135,6 +136,12 @@
"uniqueItems": true
},
"Type": {
+ "enum": [
+ "ACCOUNT",
+ "ACCOUNT_UNUSED_ACCESS",
+ "ORGANIZATION",
+ "ORGANIZATION_UNUSED_ACCESS"
+ ],
"maxLength": 1024,
"minLength": 0,
"type": "string"
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json
index 33e041c8fc..e3dbc21bc5 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-certificateauthority.json
@@ -352,6 +352,11 @@
"type": "string"
},
"KeyStorageSecurityStandard": {
+ "enum": [
+ "CCPC_LEVEL_1_OR_HIGHER",
+ "FIPS_140_2_LEVEL_2_OR_HIGHER",
+ "FIPS_140_2_LEVEL_3_OR_HIGHER"
+ ],
"type": "string"
},
"RevocationConfiguration": {
@@ -373,6 +378,10 @@
"type": "string"
},
"UsageMode": {
+ "enum": [
+ "GENERAL_PURPOSE",
+ "SHORT_LIVED_CERTIFICATE"
+ ],
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-permission.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-permission.json
index fa184f9abb..a2202ce608 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-permission.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-acmpca-permission.json
@@ -19,12 +19,15 @@
"type": "array"
},
"CertificateAuthorityArn": {
+ "pattern": "arn:[\\w+=/,.@-]+:acm-pca:[\\w+=/,.@-]*:[0-9]*:[\\w+=,.@-]+(/[\\w+=,.@-]+)*",
"type": "string"
},
"Principal": {
+ "pattern": "[^*]+",
"type": "string"
},
"SourceAccount": {
+ "pattern": "[0-9]+",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-broker.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-broker.json
index cdaa37c569..bc33a8d284 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-broker.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-broker.json
@@ -187,6 +187,10 @@
"type": "string"
},
"AuthenticationStrategy": {
+ "enum": [
+ "LDAP",
+ "SIMPLE"
+ ],
"type": "string"
},
"AutoMinorVersionUpgrade": {
@@ -205,6 +209,10 @@
"type": "integer"
},
"DataReplicationMode": {
+ "enum": [
+ "CRDR",
+ "NONE"
+ ],
"type": "string"
},
"DataReplicationPrimaryBrokerArn": {
@@ -287,6 +295,10 @@
"uniqueItems": false
},
"StorageType": {
+ "enum": [
+ "EBS",
+ "EFS"
+ ],
"type": "string"
},
"SubnetIds": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-configuration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-configuration.json
index 37e9f26873..4fe77ce0f7 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-configuration.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-amazonmq-configuration.json
@@ -32,6 +32,10 @@
"type": "string"
},
"AuthenticationStrategy": {
+ "enum": [
+ "LDAP",
+ "SIMPLE"
+ ],
"type": "string"
},
"Data": {
@@ -41,6 +45,10 @@
"type": "string"
},
"EngineType": {
+ "enum": [
+ "ACTIVEMQ",
+ "RABBITMQ"
+ ],
"type": "string"
},
"EngineVersion": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-app.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-app.json
index 5846c5f463..f1811081c1 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-app.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-amplify-app.json
@@ -179,6 +179,7 @@
"AccessToken": {
"maxLength": 255,
"minLength": 1,
+ "pattern": "(?s).+",
"type": "string"
},
"AppId": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-extension.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-extension.json
index f0c712e86e..971b17f93b 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-extension.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appconfig-extension.json
@@ -112,6 +112,7 @@
"type": "integer"
},
"Name": {
+ "pattern": "^[^\\/#:\\n]{1,64}$",
"type": "string"
},
"Parameters": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalabletarget.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalabletarget.json
index c7b02e1758..0c22e634a8 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalabletarget.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalabletarget.json
@@ -98,6 +98,31 @@
"type": "string"
},
"ScalableDimension": {
+ "enum": [
+ "appstream:fleet:DesiredCapacity",
+ "cassandra:table:ReadCapacityUnits",
+ "cassandra:table:WriteCapacityUnits",
+ "comprehend:document-classifier-endpoint:DesiredInferenceUnits",
+ "comprehend:entity-recognizer-endpoint:DesiredInferenceUnits",
+ "custom-resource:ResourceType:Property",
+ "dynamodb:index:ReadCapacityUnits",
+ "dynamodb:index:WriteCapacityUnits",
+ "dynamodb:table:ReadCapacityUnits",
+ "dynamodb:table:WriteCapacityUnits",
+ "ec2:spot-fleet-request:TargetCapacity",
+ "ecs:service:DesiredCount",
+ "elasticache:replication-group:NodeGroups",
+ "elasticache:replication-group:Replicas",
+ "elasticmapreduce:instancegroup:InstanceCount",
+ "kafka:broker-storage:VolumeSize",
+ "lambda:function:ProvisionedConcurrency",
+ "neptune:cluster:ReadReplicaCount",
+ "rds:cluster:ReadReplicaCount",
+ "sagemaker:inference-component:DesiredCopyCount",
+ "sagemaker:variant:DesiredInstanceCount",
+ "sagemaker:variant:DesiredProvisionedConcurrency",
+ "workspaces:workspacespool:DesiredUserSessions"
+ ],
"type": "string"
},
"ScheduledActions": {
@@ -109,6 +134,23 @@
"uniqueItems": true
},
"ServiceNamespace": {
+ "enum": [
+ "appstream",
+ "cassandra",
+ "comprehend",
+ "custom-resource",
+ "dynamodb",
+ "ec2",
+ "ecs",
+ "elasticache",
+ "elasticmapreduce",
+ "kafka",
+ "lambda",
+ "neptune",
+ "rds",
+ "sagemaker",
+ "workspaces"
+ ],
"type": "string"
},
"SuspendedState": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalingpolicy.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalingpolicy.json
index 004e281e32..e35e4457a6 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalingpolicy.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-applicationautoscaling-scalingpolicy.json
@@ -257,6 +257,7 @@
"type": "string"
},
"PolicyName": {
+ "pattern": "\\p{Print}+",
"type": "string"
},
"PolicyType": {
@@ -270,12 +271,54 @@
"type": "string"
},
"ScalableDimension": {
+ "enum": [
+ "appstream:fleet:DesiredCapacity",
+ "cassandra:table:ReadCapacityUnits",
+ "cassandra:table:WriteCapacityUnits",
+ "comprehend:document-classifier-endpoint:DesiredInferenceUnits",
+ "comprehend:entity-recognizer-endpoint:DesiredInferenceUnits",
+ "custom-resource:ResourceType:Property",
+ "dynamodb:index:ReadCapacityUnits",
+ "dynamodb:index:WriteCapacityUnits",
+ "dynamodb:table:ReadCapacityUnits",
+ "dynamodb:table:WriteCapacityUnits",
+ "ec2:spot-fleet-request:TargetCapacity",
+ "ecs:service:DesiredCount",
+ "elasticache:replication-group:NodeGroups",
+ "elasticache:replication-group:Replicas",
+ "elasticmapreduce:instancegroup:InstanceCount",
+ "kafka:broker-storage:VolumeSize",
+ "lambda:function:ProvisionedConcurrency",
+ "neptune:cluster:ReadReplicaCount",
+ "rds:cluster:ReadReplicaCount",
+ "sagemaker:inference-component:DesiredCopyCount",
+ "sagemaker:variant:DesiredInstanceCount",
+ "sagemaker:variant:DesiredProvisionedConcurrency",
+ "workspaces:workspacespool:DesiredUserSessions"
+ ],
"type": "string"
},
"ScalingTargetId": {
"type": "string"
},
"ServiceNamespace": {
+ "enum": [
+ "appstream",
+ "cassandra",
+ "comprehend",
+ "custom-resource",
+ "dynamodb",
+ "ec2",
+ "ecs",
+ "elasticache",
+ "elasticmapreduce",
+ "kafka",
+ "lambda",
+ "neptune",
+ "rds",
+ "sagemaker",
+ "workspaces"
+ ],
"type": "string"
},
"StepScalingPolicyConfiguration": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblock.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblock.json
index 8c3f50a158..6d56953d74 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblock.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblock.json
@@ -14,6 +14,10 @@
"type": "string"
},
"PackagingType": {
+ "enum": [
+ "APPSTREAM2",
+ "CUSTOM"
+ ],
"type": "string"
},
"S3Location": {
@@ -112,6 +116,7 @@
"type": "string"
},
"Name": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
},
"PackagingType": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblockbuilder.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblockbuilder.json
index baa961821b..b6c853026a 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblockbuilder.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-appblockbuilder.json
@@ -24,6 +24,9 @@
"type": "string"
},
"PlatformType": {
+ "enum": [
+ "WINDOWS_SERVER_2019"
+ ],
"type": "string"
},
"Tag": {
@@ -103,12 +106,14 @@
"type": "boolean"
},
"IamRoleArn": {
+ "pattern": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$",
"type": "string"
},
"InstanceType": {
"type": "string"
},
"Name": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
},
"Platform": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-application.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-application.json
index c6aba2ebeb..cb499f8d1e 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-application.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-application.json
@@ -10,6 +10,7 @@
"type": "string"
},
"Arn": {
+ "pattern": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$",
"type": "string"
},
"PlatformType": {
@@ -117,6 +118,7 @@
"type": "string"
},
"Name": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
},
"Platforms": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-entitlement.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-entitlement.json
index b2a09d0987..cb8d117429 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-entitlement.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-entitlement.json
@@ -28,6 +28,10 @@
],
"properties": {
"AppVisibility": {
+ "enum": [
+ "ALL",
+ "ASSOCIATED"
+ ],
"type": "string"
},
"Attributes": {
@@ -48,9 +52,11 @@
"type": "string"
},
"Name": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
},
"StackName": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-imagebuilder.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-imagebuilder.json
index f3c920c064..af2c6d96c2 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-imagebuilder.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appstream-imagebuilder.json
@@ -95,9 +95,11 @@
"type": "boolean"
},
"IamRoleArn": {
+ "pattern": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$",
"type": "string"
},
"ImageArn": {
+ "pattern": "^arn:aws(?:\\-cn|\\-iso\\-b|\\-iso|\\-us\\-gov)?:[A-Za-z0-9][A-Za-z0-9_/.-]{0,62}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9_/.-]{0,63}:[A-Za-z0-9][A-Za-z0-9:_/+=,@.\\\\-]{0,1023}$",
"type": "string"
},
"ImageName": {
@@ -107,6 +109,7 @@
"type": "string"
},
"Name": {
+ "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,100}$",
"type": "string"
},
"StreamingUrl": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-domainname.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-domainname.json
index 7dfba14516..bfa7af151c 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-domainname.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-domainname.json
@@ -20,6 +20,7 @@
"Description": {
"maxLength": 255,
"minLength": 0,
+ "pattern": "^.*$",
"type": "string"
},
"DomainName": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-functionconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-functionconfiguration.json
index 2940ff1199..31766b0a77 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-functionconfiguration.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-functionconfiguration.json
@@ -62,6 +62,7 @@
"type": "string"
},
"DataSourceName": {
+ "pattern": "[_A-Za-z][_0-9A-Za-z]*",
"type": "string"
},
"Description": {
@@ -80,15 +81,18 @@
"type": "integer"
},
"Name": {
+ "pattern": "[_A-Za-z][_0-9A-Za-z]*",
"type": "string"
},
"RequestMappingTemplate": {
+ "pattern": "^.*$",
"type": "string"
},
"RequestMappingTemplateS3Location": {
"type": "string"
},
"ResponseMappingTemplate": {
+ "pattern": "^.*$",
"type": "string"
},
"ResponseMappingTemplateS3Location": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-resolver.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-resolver.json
index 4ae385dc22..144958cfd2 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-resolver.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-appsync-resolver.json
@@ -101,9 +101,11 @@
"type": "string"
},
"DataSourceName": {
+ "pattern": "[_A-Za-z][_0-9A-Za-z]*",
"type": "string"
},
"FieldName": {
+ "pattern": "[_A-Za-z][_0-9A-Za-z]*",
"type": "string"
},
"Kind": {
@@ -127,6 +129,7 @@
"$ref": "#/definitions/PipelineConfig"
},
"RequestMappingTemplate": {
+ "pattern": "^.*$",
"type": "string"
},
"RequestMappingTemplateS3Location": {
@@ -136,6 +139,7 @@
"type": "string"
},
"ResponseMappingTemplate": {
+ "pattern": "^.*$",
"type": "string"
},
"ResponseMappingTemplateS3Location": {
@@ -148,6 +152,7 @@
"$ref": "#/definitions/SyncConfig"
},
"TypeName": {
+ "pattern": "[_A-Za-z][_0-9A-Za-z]*",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-namedquery.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-namedquery.json
index 535dd4c799..dcf636f533 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-namedquery.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-namedquery.json
@@ -37,6 +37,7 @@
"WorkGroup": {
"maxLength": 128,
"minLength": 1,
+ "pattern": "[a-zA-Z0-9._-]{1,128}",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-preparedstatement.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-preparedstatement.json
index 3cd425b5ba..df74327ddd 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-preparedstatement.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-athena-preparedstatement.json
@@ -22,11 +22,13 @@
"StatementName": {
"maxLength": 256,
"minLength": 1,
+ "pattern": "[a-zA-Z_][a-zA-Z0-9_@:]{1,256}",
"type": "string"
},
"WorkGroup": {
"maxLength": 128,
"minLength": 1,
+ "pattern": "[a-zA-Z0-9._-]{1,128}",
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-auditmanager-assessment.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-auditmanager-assessment.json
index 9b7ecb9d39..b7218ab5f8 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-auditmanager-assessment.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-auditmanager-assessment.json
@@ -51,6 +51,7 @@
"type": "string"
},
"AssessmentDescription": {
+ "pattern": "^[\\w\\W\\s\\S]*$",
"type": "string"
},
"AssessmentName": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-lifecyclehook.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-lifecyclehook.json
index 4bfbb6f5aa..bfcd60e387 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-lifecyclehook.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-lifecyclehook.json
@@ -26,6 +26,7 @@
"LifecycleHookName": {
"maxLength": 255,
"minLength": 1,
+ "pattern": "[A-Za-z0-9\\-_\\/]+",
"type": "string"
},
"LifecycleTransition": {
@@ -38,6 +39,7 @@
"NotificationMetadata": {
"maxLength": 1023,
"minLength": 1,
+ "pattern": "[\\u0009\\u000A\\u000D\\u0020-\\u007e]+",
"type": "string"
},
"NotificationTargetARN": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-warmpool.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-warmpool.json
index 89474a5117..950a140630 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-warmpool.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-autoscaling-warmpool.json
@@ -31,6 +31,11 @@
"type": "integer"
},
"PoolState": {
+ "enum": [
+ "Hibernated",
+ "Running",
+ "Stopped"
+ ],
"type": "string"
}
},
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-backup-framework.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-backup-framework.json
index ecdbb28422..96b4fbc9b3 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-backup-framework.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-backup-framework.json
@@ -108,6 +108,7 @@
"FrameworkDescription": {
"maxLength": 1024,
"minLength": 0,
+ "pattern": ".*\\S.*",
"type": "string"
},
"FrameworkName": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-batch-computeenvironment.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-batch-computeenvironment.json
index 33e1a3aea2..69abdd1e01 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-batch-computeenvironment.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-batch-computeenvironment.json
@@ -228,6 +228,10 @@
"type": "object"
},
"Type": {
+ "enum": [
+ "MANAGED",
+ "UNMANAGED"
+ ],
"type": "string"
},
"UnmanagedvCpus": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-budgets-budgetsaction.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-budgets-budgetsaction.json
index 9226b08ca3..885a500947 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-budgets-budgetsaction.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-budgets-budgetsaction.json
@@ -190,12 +190,14 @@
"type": "string"
},
"BudgetName": {
+ "pattern": "^(?![^:\\\\]*/action/|(?i).*.*)[^:\\\\]+$",
"type": "string"
},
"Definition": {
"$ref": "#/definitions/Definition"
},
"ExecutionRoleArn": {
+ "pattern": "^arn:aws(-cn|-us-gov|-iso|-iso-[a-z]{1})?:iam::\\d{12}:role(\\u002F[\\u0021-\\u007F]+\\u002F|\\u002F)[\\w+=,.@-]+$",
"type": "string"
},
"NotificationType": {
diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ce-costcategory.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ce-costcategory.json
index 63b361dcae..3835cb3cc2 100644
--- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ce-costcategory.json
+++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ce-costcategory.json
@@ -22,6 +22,7 @@
"DefaultValue": {
"maxLength": 50,
"minLength": 1,
+ "pattern": "^(?! )[\\p{L}\\p{N}\\p{Z}-_]*(?