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}-_]*(?