From 47e7e402fff10de5858ee69ec049602eddb536a2 Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Mon, 21 Oct 2024 09:57:11 -0700 Subject: [PATCH] Add logic for subnet ID format (#3761) * Add logic to add format for subnet IDs * Add rule E1154 to validate Subnet IDs --- scripts/update_schemas_format.py | 47 + ...63a1bf4413531ad420ff60a5a0d7965d.meta.json | 2 +- ...4cfc32461d10e077e7e5de1fc25d8b8f.meta.json | 2 +- ...d3fe2e7838c23f6acd054944cb2b1618.meta.json | 2 +- ...f60a7b5acfc406ebb10d5748cbb8ed41.meta.json | 2 +- ...aa3b299156f53fa9d1fd8eeabec5a268.meta.json | 2 +- ...f35136af536e92a84ccbaf062c315066.meta.json | 2 +- ...04470222e5e4c690bacef5312891581d.meta.json | 2 +- ...646b563d773e34b020d0ddeab2fe195b.meta.json | 2 +- ...548d44cc32e246ec9d7742088a2c17f8.meta.json | 2 +- ...98ac34d4109512e0e0947ef752dcb9c9.meta.json | 2 +- ...e783fe32b6bb6b13774c32fcca1d303a.meta.json | 2 +- ...05f2567698dfdfa979bf0ccdb68cb856.meta.json | 2 +- ...92030ae5c03d7451980a15735e557edb.meta.json | 2 +- ...6bb7f975b606f8db57532faddfcdd8c8.meta.json | 2 +- ...73ff097c685cda0a63c08a6416dc58ed.meta.json | 2 +- ...25c8d66a1f84939600616bab42579541.meta.json | 2 +- ...26b315ef6f38515840537c02de23abe2.meta.json | 2 +- ...318c41c71c21b0a17d4f68d82c5aee21.meta.json | 2 +- ...6cd7e4ced378cacdb93f76ed227b5c5d.meta.json | 2 +- ...b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json | 2 +- ...41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json | 2 +- ...b2d398fe33547eed780b9b70f10eb4a2.meta.json | 2 +- ...e50a1638ffe0a5dba0d8805c190a05f8.meta.json | 2 +- ...3b69878d351cffd417dc9a457df808af.meta.json | 2 +- .../aws_apprunner_vpcconnector/format.json | 10 + .../aws_batch_computeenvironment/format.json | 10 + .../all/aws_cloud9_environmentec2/format.json | 12 + .../all/aws_codebuild_fleet/format.json | 15 + .../all/aws_codebuild_project/format.json | 10 + .../format.json | 10 + .../all/aws_comprehend_flywheel/format.json | 10 + .../__init__.py | 0 .../format.json | 7 + .../all/aws_ec2_ec2fleet/format.json | 7 + .../all/aws_ec2_instance/format.json | 10 + .../format.json | 5 + .../all/aws_ec2_launchtemplate/format.json | 5 + .../all/aws_ec2_natgateway/format.json | 7 + .../all/aws_ec2_networkinterface/format.json | 5 + .../all/aws_ec2_spotfleet/format.json | 15 + .../extensions/all/aws_ec2_subnet/format.json | 5 + .../all/aws_ec2_subnetcidrblock/__init__.py | 0 .../all/aws_ec2_subnetcidrblock/format.json | 7 + .../__init__.py | 0 .../format.json | 7 + .../__init__.py | 0 .../format.json | 7 + .../__init__.py | 0 .../format.json | 7 + .../__init__.py | 0 .../format.json | 7 + .../__init__.py | 0 .../format.json | 7 + .../all/aws_ec2_vpccidrblock/format.json | 5 - .../all/aws_ecs_service/format.json | 10 + .../all/aws_ecs_taskset/format.json | 10 + .../all/aws_efs_mounttarget/format.json | 5 + .../all/aws_eks_fargateprofile/format.json | 12 + .../all/aws_eks_nodegroup/format.json | 12 + .../format.json | 9 +- .../format.json | 15 + .../all/aws_events_rule/format.json | 10 + .../all/aws_glue_connection/format.json | 7 + .../all/aws_glue_devendpoint/format.json | 5 + .../format.json | 5 + .../aws_kafkaconnect_connector/format.json | 10 + .../all/aws_mediaconnect_flow/format.json | 5 + .../format.json | 5 + .../aws_networkfirewall_firewall/format.json | 5 + .../all/aws_opsworks_instance/format.json | 5 + .../extensions/all/aws_pipes_pipe/format.json | 22 + .../aws_quicksight_vpcconnection/format.json | 5 + .../aws_redshift_endpointaccess/format.json | 5 + .../format.json | 5 + .../format.json | 5 + .../all/aws_s3outposts_endpoint/format.json | 5 + .../all/aws_sagemaker_cluster/format.json | 22 + .../format.json | 10 + .../aws_sagemaker_endpointconfig/format.json | 10 + .../all/aws_sagemaker_model/format.json | 10 + .../format.json | 10 + .../format.json | 10 + .../format.json | 10 + .../format.json | 10 + .../format.json | 5 + .../all/aws_scheduler_schedule/format.json | 10 + .../af_south_1/aws-ec2-vpccidrblock.json | 1 + .../af_south_1/aws-opsworks-instance.json | 1 + .../schemas/providers/ap_east_1/__init__.py | 3 +- .../aws-ec2-capacityreservation.json | 8 +- .../ap_east_1/aws-ec2-vpccidrblock.json | 1 + .../providers/ap_east_1/aws-oam-link.json | 112 -- .../providers/ap_east_1/aws-oam-sink.json | 53 - .../providers/ap_northeast_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 8 +- .../ap_northeast_2/aws-ec2-vpccidrblock.json | 1 + .../providers/ap_northeast_3/__init__.py | 3 +- .../aws-ec2-capacityreservation.json | 153 +++ .../ap_northeast_3/aws-ec2-vpccidrblock.json | 1 + .../ap_northeast_3/aws-oam-link.json | 112 -- .../ap_northeast_3/aws-oam-sink.json | 53 - .../schemas/providers/ap_south_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../ap_south_1/aws-ec2-vpccidrblock.json | 1 + .../schemas/providers/ap_south_2/__init__.py | 3 +- .../aws-ec2-capacityreservation.json | 153 +++ .../ap_south_2/aws-ec2-spotfleet.json | 3 + .../ap_south_2/aws-ec2-vpccidrblock.json | 1 + .../providers/ap_south_2/aws-oam-link.json | 112 -- .../providers/ap_south_2/aws-oam-sink.json | 53 - .../ap_south_2/aws-opsworks-instance.json | 1 + .../providers/ap_southeast_1/__init__.py | 2 - .../aws-ec2-capacityreservation.json | 153 +++ .../ap_southeast_1/aws-memorydb-cluster.json | 195 ++++ .../providers/ap_southeast_2/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../ap_southeast_2/aws-ec2-vpccidrblock.json | 1 + .../ap_southeast_3/aws-ec2-vpccidrblock.json | 1 + .../ap_southeast_3/aws-opsworks-instance.json | 1 + .../providers/ap_southeast_4/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../ap_southeast_4/aws-ec2-spotfleet.json | 3 + .../ap_southeast_4/aws-ec2-vpccidrblock.json | 1 + .../ap_southeast_4/aws-opsworks-instance.json | 1 + .../providers/ap_southeast_5/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../ap_southeast_5/aws-ec2-subnet.json | 1 + .../aws-ec2-subnetcidrblock.json | 1 + .../aws-ec2-subnetnetworkaclassociation.json | 1 + .../ap_southeast_5/aws-ec2-vpccidrblock.json | 1 + .../ap_southeast_5/aws-opsworks-instance.json | 1 + .../providers/ca_central_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../ca_central_1/aws-ec2-vpccidrblock.json | 1 + ...gebuilder-infrastructureconfiguration.json | 1 + .../schemas/providers/ca_west_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../ca_west_1/aws-ec2-subnetcidrblock.json | 1 + .../aws-ec2-subnetnetworkaclassociation.json | 1 + .../ca_west_1/aws-ec2-vpccidrblock.json | 1 + .../ca_west_1/aws-opsworks-instance.json | 1 + .../cn_north_1/aws-cloud9-environmentec2.json | 2 + .../cn_north_1/aws-eks-fargateprofile.json | 2 + .../aws-cloud9-environmentec2.json | 2 + .../aws-ec2-subnetcidrblock.json | 1 + .../cn_northwest_1/aws-ec2-vpccidrblock.json | 1 + .../cn_northwest_1/aws-ecs-service.json | 587 +++++++++++ .../cn_northwest_1/aws-ecs-taskset.json | 193 ++++ .../aws-eks-fargateprofile.json | 2 + .../providers/eu_central_1/__init__.py | 2 +- .../eu_central_1/aws-codebuild-fleet.json | 3 + .../eu_central_1/aws-ec2-launchtemplate.json | 1 + .../aws-ec2-networkinterface.json | 1 + .../aws-refactorspaces-environment.json | 101 ++ .../providers/eu_central_2/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../eu_central_2/aws-ec2-subnetcidrblock.json | 1 + .../eu_central_2/aws-ec2-vpccidrblock.json | 1 + .../eu_central_2/aws-opsworks-instance.json | 1 + .../schemas/providers/eu_north_1/__init__.py | 2 +- .../aws-ec2-capacityreservation.json | 153 +++ .../eu_north_1/aws-ec2-vpccidrblock.json | 1 + .../eu_north_1/aws-rds-dbinstance.json | 530 ---------- .../eu_south_1/aws-ec2-vpccidrblock.json | 1 + .../providers/eu_south_1/aws-ecs-service.json | 587 +++++++++++ .../eu_south_1/aws-opsworks-instance.json | 1 + .../eu_south_2/aws-ec2-vpccidrblock.json | 1 + .../eu_south_2/aws-opsworks-instance.json | 1 + .../schemas/providers/eu_west_1/__init__.py | 2 - .../aws-ec2-capacityreservation.json | 153 +++ .../eu_west_1/aws-ec2-vpccidrblock.json | 1 + .../eu_west_1/aws-memorydb-cluster.json | 195 ++++ .../eu_west_2/aws-ec2-vpccidrblock.json | 1 + .../aws-redshiftserverless-workgroup.json | 1 + .../eu_west_3/aws-ec2-vpccidrblock.json | 1 + .../providers/il_central_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../il_central_1/aws-ec2-spotfleet.json | 3 + .../il_central_1/aws-ec2-subnetcidrblock.json | 1 + .../il_central_1/aws-ec2-vpccidrblock.json | 1 + .../il_central_1/aws-opsworks-instance.json | 1 + .../providers/me_central_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../me_central_1/aws-ec2-vpccidrblock.json | 1 + .../me_central_1/aws-opsworks-instance.json | 1 + .../schemas/providers/me_south_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../me_south_1/aws-ec2-vpccidrblock.json | 1 + .../schemas/providers/sa_east_1/__init__.py | 1 - .../aws-ec2-capacityreservation.json | 153 +++ .../sa_east_1/aws-ec2-vpccidrblock.json | 1 + .../us_east_1/aws-apprunner-vpcconnector.json | 2 + .../aws-batch-computeenvironment.json | 2 + .../us_east_1/aws-cloud9-environmentec2.json | 2 + .../us_east_1/aws-codebuild-fleet.json | 3 + .../us_east_1/aws-codebuild-project.json | 2 + .../aws-comprehend-documentclassifier.json | 2 + .../us_east_1/aws-comprehend-flywheel.json | 2 + .../aws-ec2-capacityreservation.json | 8 +- ...ec2-clientvpntargetnetworkassociation.json | 1 + .../providers/us_east_1/aws-ec2-ec2fleet.json | 1 + .../providers/us_east_1/aws-ec2-instance.json | 2 + .../aws-ec2-instanceconnectendpoint.json | 1 + .../us_east_1/aws-ec2-launchtemplate.json | 1 + .../us_east_1/aws-ec2-natgateway.json | 1 + .../us_east_1/aws-ec2-networkinterface.json | 1 + .../us_east_1/aws-ec2-spotfleet.json | 3 + .../providers/us_east_1/aws-ec2-subnet.json | 1 + .../us_east_1/aws-ec2-subnetcidrblock.json | 1 + .../aws-ec2-subnetnetworkaclassociation.json | 1 + .../aws-ec2-subnetroutetableassociation.json | 1 + ...nsitgatewaymulticastdomainassociation.json | 1 + ...c2-transitgatewaymulticastgroupmember.json | 1 + ...c2-transitgatewaymulticastgroupsource.json | 1 + .../us_east_1/aws-ec2-vpccidrblock.json | 1 + .../providers/us_east_1/aws-ecs-service.json | 2 + .../providers/us_east_1/aws-ecs-taskset.json | 2 + .../us_east_1/aws-efs-mounttarget.json | 1 + .../us_east_1/aws-eks-fargateprofile.json | 2 + .../us_east_1/aws-eks-nodegroup.json | 2 + ...aws-elasticloadbalancing-loadbalancer.json | 2 + ...s-elasticloadbalancingv2-loadbalancer.json | 3 + .../providers/us_east_1/aws-events-rule.json | 2 + .../us_east_1/aws-glue-connection.json | 1 + .../us_east_1/aws-glue-devendpoint.json | 1 + ...gebuilder-infrastructureconfiguration.json | 1 + .../us_east_1/aws-kafkaconnect-connector.json | 2 + .../us_east_1/aws-mediaconnect-flow.json | 1 + .../aws-mediaconnect-flowvpcinterface.json | 1 + .../aws-networkfirewall-firewall.json | 1 + .../us_east_1/aws-opsworks-instance.json | 1 + .../providers/us_east_1/aws-pipes-pipe.json | 4 + .../aws-quicksight-vpcconnection.json | 1 + .../aws-redshift-endpointaccess.json | 1 + .../aws-redshiftserverless-workgroup.json | 1 + .../aws-route53resolver-resolverendpoint.json | 1 + .../us_east_1/aws-s3outposts-endpoint.json | 1 + .../us_east_1/aws-sagemaker-cluster.json | 4 + ...ws-sagemaker-dataqualityjobdefinition.json | 2 + .../aws-sagemaker-endpointconfig.json | 2 + .../us_east_1/aws-sagemaker-model.json | 2 + .../aws-sagemaker-modelbiasjobdefinition.json | 2 + ...aker-modelexplainabilityjobdefinition.json | 2 + ...s-sagemaker-modelqualityjobdefinition.json | 2 + .../aws-sagemaker-monitoringschedule.json | 2 + .../aws-sagemaker-notebookinstance.json | 1 + .../us_east_1/aws-scheduler-schedule.json | 2 + .../schemas/providers/us_east_2/__init__.py | 3 +- .../aws-ec2-capacityreservation.json | 153 +++ .../us_east_2/aws-ec2-vpccidrblock.json | 1 + .../providers/us_east_2/aws-oam-link.json | 112 -- .../providers/us_east_2/aws-oam-sink.json | 53 - .../us_gov_east_1/aws-codebuild-project.json | 2 + .../us_gov_east_1/aws-ec2-vpccidrblock.json | 1 + .../us_gov_east_1/aws-ecs-service.json | 587 +++++++++++ .../us_gov_east_1/aws-efs-mounttarget.json | 1 + .../us_gov_east_1/aws-events-rule.json | 2 + .../providers/us_gov_west_1/__init__.py | 1 - .../us_gov_west_1/aws-codebuild-project.json | 2 + .../aws-ec2-capacityreservation.json | 153 +++ .../aws-ec2-subnetcidrblock.json | 1 + .../us_gov_west_1/aws-ec2-vpccidrblock.json | 1 + .../us_gov_west_1/aws-efs-mounttarget.json | 1 + .../us_gov_west_1/aws-events-rule.json | 2 + .../schemas/providers/us_west_1/__init__.py | 3 +- .../aws-ec2-capacityreservation.json | 153 +++ .../us_west_1/aws-ec2-vpccidrblock.json | 1 + .../providers/us_west_1/aws-oam-link.json | 112 -- .../providers/us_west_1/aws-oam-sink.json | 53 - .../schemas/providers/us_west_2/__init__.py | 3 + .../aws-pcaconnectorad-connector.json | 85 -- .../aws-pcaconnectorad-template.json | 990 ------------------ src/cfnlint/rules/formats/SubnetId.py | 33 + .../integration/aws-ec2-instance.yaml | 2 +- test/unit/module/cfn_json/test_cfn_json.py | 2 +- test/unit/rules/formats/test_subnet_id.py | 40 + 277 files changed, 6160 insertions(+), 2502 deletions(-) create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_cloud9_environmentec2/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_ec2fleet/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_natgateway/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/__init__.py create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_eks_fargateprofile/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_eks_nodegroup/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_glue_connection/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_pipes_pipe/format.json create mode 100644 src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_cluster/format.json rename src/cfnlint/data/schemas/providers/{us_west_2 => ap_east_1}/aws-ec2-capacityreservation.json (94%) delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-link.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-sink.json rename src/cfnlint/data/schemas/providers/{eu_central_1 => ap_northeast_1}/aws-ec2-capacityreservation.json (94%) create mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-capacityreservation.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-link.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-sink.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-capacityreservation.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-link.json delete mode 100644 src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-sink.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_1/aws-memorydb-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-service.json create mode 100644 src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-taskset.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_1/aws-refactorspaces-environment.json create mode 100644 src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-capacityreservation.json delete mode 100644 src/cfnlint/data/schemas/providers/eu_north_1/aws-rds-dbinstance.json create mode 100644 src/cfnlint/data/schemas/providers/eu_south_1/aws-ecs-service.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/eu_west_1/aws-memorydb-cluster.json create mode 100644 src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-capacityreservation.json delete mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-oam-link.json delete mode 100644 src/cfnlint/data/schemas/providers/us_east_2/aws-oam-sink.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-service.json create mode 100644 src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-capacityreservation.json create mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-capacityreservation.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-oam-link.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_1/aws-oam-sink.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-connector.json delete mode 100644 src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-template.json create mode 100644 src/cfnlint/rules/formats/SubnetId.py create mode 100644 test/unit/rules/formats/test_subnet_id.py diff --git a/scripts/update_schemas_format.py b/scripts/update_schemas_format.py index 4689573ad9..ce04bd7fad 100755 --- a/scripts/update_schemas_format.py +++ b/scripts/update_schemas_format.py @@ -36,6 +36,35 @@ def _descend(instance: Any, keywords: Sequence[str]) -> Iterator[deque[str]]: return +def _create_subnet_ids_patch(type_name: str, ref: str, resolver: RefResolver): + + _, resolved = resolver.resolve(ref) + if "$ref" in resolved: + return _create_subnet_ids_patch( + type_name=type_name, + ref=resolved["$ref"], + resolver=resolver, + ) + items = resolved.get("items") + if items: + if "$ref" in items: + items_path = items["$ref"] + else: + items_path = ref + "/items" + + return [ + Patch( + values={"format": "AWS::EC2::Subnet.Ids"}, + path=ref[1:], + ), + _create_patch( + {"format": "AWS::EC2::Subnet.Id"}, + items_path, + resolver=resolver, + ), + ] + + def _create_security_group_ids_patch(type_name: str, ref: str, resolver: RefResolver): if type_name in ["AWS::Pipes::Pipe", "AWS::EC2::NetworkInsightsAnalysis"]: return [] @@ -184,6 +213,24 @@ def main(): ) ) + for path in _descend(obj, ["Subnets"]): + if path[-2] == "properties": + resource_patches.extend( + _create_subnet_ids_patch( + resource_type, "#/" + "/".join(path), resolver + ) + ) + + for path in _descend(obj, ["SubnetId"]): + if path[-2] == "properties": + resource_patches.append( + _create_patch( + value={"format": "AWS::EC2::Subnet.Id"}, + ref="#/" + "/".join(path), + resolver=resolver, + ) + ) + for path in _descend(obj, ["SecurityGroupIds", "SecurityGroups"]): if path[-2] == "properties": resource_patches.extend( diff --git a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json index 4ce23b2560..0198daf063 100644 --- a/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/227d6e59c86482f7153466759080e65963a1bf4413531ad420ff60a5a0d7965d.meta.json @@ -1 +1 @@ -{"etag": "\"91ff8d94668bdd12d0c5f0e4f14e9176\"", "url": "https://schema.cloudformation.me-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"6b272784ab5ee64380e1afbeff2dc2b7\"", "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 a631cde6dc..e03107d33d 100644 --- a/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/23be708e675cb6098b08969e4dbbc3f54cfc32461d10e077e7e5de1fc25d8b8f.meta.json @@ -1 +1 @@ -{"etag": "\"f103d1dd0afbd815a9f9452338f22e1e\"", "url": "https://schema.cloudformation.us-gov-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f81509de348a0967be7f3e7522c853f8\"", "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 c9fad424c0..128a0cd1b0 100644 --- a/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/26cf4521b683d3267844178a6bcd1d0ad3fe2e7838c23f6acd054944cb2b1618.meta.json @@ -1 +1 @@ -{"etag": "\"9e3e41525c2aa18c4cc835f5dd2d54ca\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"ec6886f703876cc995c20fcc1a63ceb8\"", "url": "https://schema.cloudformation.me-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json index 5bd142428b..fe683fa99f 100644 --- a/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/42e9df95722b6524cd001503b6750b86f60a7b5acfc406ebb10d5748cbb8ed41.meta.json @@ -1 +1 @@ -{"etag": "\"c5af86b97e6c01fbc4f631ae9e48c113\"", "url": "https://schema.cloudformation.us-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"962d970ff4a0e8eaac7e22be166b04d9\"", "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 afdae17669..9d7ac72601 100644 --- a/src/cfnlint/data/DownloadsMetadata/49ed0265aaab90ce485c07e02ea671e5aa3b299156f53fa9d1fd8eeabec5a268.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/49ed0265aaab90ce485c07e02ea671e5aa3b299156f53fa9d1fd8eeabec5a268.meta.json @@ -1 +1 @@ -{"etag": "\"a3cb83ca57cb8fcb4d2523412ec7eb56\"", "url": "https://schema.cloudformation.ap-southeast-5.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"284f5207b99c05c18851ec7d6dca40fc\"", "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 b5bfcc56bd..a6a1c87a0e 100644 --- a/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/4fbb29b69678acdd32c5758ed43ead9bf35136af536e92a84ccbaf062c315066.meta.json @@ -1 +1 @@ -{"etag": "\"3d8f7db562c312c673ef927e94cb9637\"", "url": "https://schema.cloudformation.eu-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"955b95eb824351800bb6c104fa55a21a\"", "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 079492808d..6386a4f87b 100644 --- a/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/56584c7d00e444de640bef01fc2c630804470222e5e4c690bacef5312891581d.meta.json @@ -1 +1 @@ -{"etag": "\"c6c77e3ae0f3e5bfda471412e05b1452\"", "url": "https://schema.cloudformation.ap-south-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"e240ca4edfd903c608f93464cb673784\"", "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 76ac1763d8..b35a07d3e8 100644 --- a/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/583721567eccd1d5855daa623819df1a646b563d773e34b020d0ddeab2fe195b.meta.json @@ -1 +1 @@ -{"etag": "\"b7afcb326fee1a5f4c6e3fcfeeeef393\"", "url": "https://schema.cloudformation.ap-southeast-4.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"6dcc26e7d356a0da18166bfa43aa3ce7\"", "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 1fca7026e8..f23f786d88 100644 --- a/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/6316ae24f21cb620947aa250bebbee69548d44cc32e246ec9d7742088a2c17f8.meta.json @@ -1 +1 @@ -{"etag": "\"fb11515c75cabbbf3ce02b42e5e40d46\"", "url": "https://schema.cloudformation.us-east-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"6e785910b27a142d4eb246dc436e963e\"", "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 52802ec394..36166cf3f9 100644 --- a/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/81e1cc73ff2daf7d1e1eca393c2d1fdd98ac34d4109512e0e0947ef752dcb9c9.meta.json @@ -1 +1 @@ -{"etag": "\"6f754221de81bebeae31e1b6a2586746\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"475eabbb5e5612f7dfdd4f0d49c5b195\"", "url": "https://schema.cloudformation.ap-southeast-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json index 0e5006c84a..159a23e7f5 100644 --- a/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/b1f069477cd577cde04dfe1b323c0bb0e783fe32b6bb6b13774c32fcca1d303a.meta.json @@ -1 +1 @@ -{"etag": "\"2eedaced886b01dd58140d251c1a9439\"", "url": "https://schema.cloudformation.ap-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"23876adf542952c6010ec5b9174f72bd\"", "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 6f1d4cb627..5b626e644e 100644 --- a/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/c7ada205073390b33b7593ef8f304b9705f2567698dfdfa979bf0ccdb68cb856.meta.json @@ -1 +1 @@ -{"etag": "\"572e3015be10b15781cad51a1334c3ae\"", "url": "https://schema.cloudformation.sa-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"1ee37da9fb13d6e676b7f42949e1313b\"", "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 17655be942..71e514f1cb 100644 --- a/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d24ce9a45a014b1ff04d479422ea956e92030ae5c03d7451980a15735e557edb.meta.json @@ -1 +1 @@ -{"etag": "\"ad8cd9bfb2c0cbc3666c6b5e725b54cc\"", "url": "https://schema.cloudformation.ap-southeast-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"d9f86ac6ec362b7593a9e1e7eacfeb3b\"", "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 7ff4fac094..de70515321 100644 --- a/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d85e2e061cacfcffe4902adb1074a04e6bb7f975b606f8db57532faddfcdd8c8.meta.json @@ -1 +1 @@ -{"etag": "\"eaec1f6e0715031b8648f854d31220cd\"", "url": "https://schema.cloudformation.ca-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"57bff1a398d853571fbd5d1db37a9c13\"", "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 3ba130b0ac..f3e38cfa8e 100644 --- a/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/d8e41d35f4f8922b66525dea2c66d72a73ff097c685cda0a63c08a6416dc58ed.meta.json @@ -1 +1 @@ -{"etag": "\"00baef4fed5e67c3d2389ddaf1502a4d\"", "url": "https://schema.cloudformation.eu-central-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"21ae68e324bc48627edc4f8aad6751f1\"", "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 70f7b72ccb..3583648da1 100644 --- a/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/dd98171253ebc36f5b78e247f3132b5f25c8d66a1f84939600616bab42579541.meta.json @@ -1 +1 @@ -{"etag": "\"2cf246c47d91e09951a6bfc341e42282\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"0b82384a3134d6f50ca215076c9a2e20\"", "url": "https://schema.cloudformation.eu-north-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json index 8f9d12fefd..2085db95b9 100644 --- a/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/e5301e07e25fa2c35d2c7e1f9dcf720826b315ef6f38515840537c02de23abe2.meta.json @@ -1 +1 @@ -{"etag": "\"a3c0dedebf9f60843f595761933f0c5a\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"a726e0e4b51dd1c9f8368a7bc5d1f103\"", "url": "https://schema.cloudformation.ca-central-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json index d1d21c52c1..2ecd125e9b 100644 --- a/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ea0f7b8f144feb225afe73a24dfdf993318c41c71c21b0a17d4f68d82c5aee21.meta.json @@ -1 +1 @@ -{"etag": "\"1bfedd2bd6f5634d23e095e6909c9cfd\"", "url": "https://schema.cloudformation.ap-northeast-3.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"26a1a2313341b664b9f17a39a65df8e5\"", "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 9f1038c988..665469dc80 100644 --- a/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f1896c9151984eec294af1eddf64260f6cd7e4ced378cacdb93f76ed227b5c5d.meta.json @@ -1 +1 @@ -{"etag": "\"31eab6eadaa72210fb859f02c52512d8\"", "url": "https://schema.cloudformation.us-west-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"1c0ca2f252ceb9e694f30bf61c0e3cd8\"", "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 333f59ac17..43b874615e 100644 --- a/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f49718b210ea89ff182ae51cb7004366b9e2e4d5e38136a5be83b6a55e7a82a1.meta.json @@ -1 +1 @@ -{"etag": "\"4e2076de55c138d08e92068d214db681\"", "url": "https://schema.cloudformation.ap-south-2.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"f1eb75d4e17234a3747d778c0afc0e06\"", "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 7d25996abe..2e3474c82b 100644 --- a/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f54eee6f8ad9619f41835b700369cdbb41c64a9c91b2fa5b4928c0d9b2f780b0.meta.json @@ -1 +1 @@ -{"etag": "\"fdeed46f6265a3c88384e782fabf6f8f\"", "url": "https://schema.cloudformation.us-east-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"48c3487c81c327708f2fd4e8467014ec\"", "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 0aed43d922..24767f508b 100644 --- a/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/f6f35a459759d6c132fa2fe798cefbd5b2d398fe33547eed780b9b70f10eb4a2.meta.json @@ -1 +1 @@ -{"etag": "\"83afcd963703374755dc76b0ce5b7656\"", "url": "https://schema.cloudformation.il-central-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"74a926e7b633254339f1fab711eabd99\"", "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 8b242f2156..9ff6b0dc08 100644 --- a/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/fa657351d8e89c40ba6b82c4b1f5e1b5e50a1638ffe0a5dba0d8805c190a05f8.meta.json @@ -1 +1 @@ -{"etag": "\"c0c62bd6273dba67fec9dfb881604be5\"", "url": "https://schema.cloudformation.eu-west-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"fd7c4fe81940185ac6dec367ba6e5e32\"", "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 1b65c3c5b9..306eb007e5 100644 --- a/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json +++ b/src/cfnlint/data/DownloadsMetadata/ff02b7d808c1c00053f09aa43a50addf3b69878d351cffd417dc9a457df808af.meta.json @@ -1 +1 @@ -{"etag": "\"9f01c74202fe43ce076c7c755940b17b\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"} +{"etag": "\"26b2184acde767f88f95f7f07414919e\"", "url": "https://schema.cloudformation.ap-northeast-1.amazonaws.com/CloudformationSchema.zip"} diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_apprunner_vpcconnector/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_apprunner_vpcconnector/format.json index 182adadf4f..3cda037083 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_apprunner_vpcconnector/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_apprunner_vpcconnector/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/format.json index 1836d52d48..eb1e225dc3 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_batch_computeenvironment/format.json @@ -4,6 +4,16 @@ "path": "/definitions/ComputeResources/properties/ImageId/format", "value": "AWS::EC2::Image.Id" }, + { + "op": "add", + "path": "/definitions/ComputeResources/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/ComputeResources/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/ComputeResources/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_cloud9_environmentec2/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_cloud9_environmentec2/format.json new file mode 100644 index 0000000000..9b953f415c --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_cloud9_environmentec2/format.json @@ -0,0 +1,12 @@ +[ + { + "op": "add", + "path": "/properties/ImageId/format", + "value": "AWS::EC2::Image.Id" + }, + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_fleet/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_fleet/format.json index 1b10a67f85..b2eb6ce3e6 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_fleet/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_fleet/format.json @@ -4,6 +4,21 @@ "path": "/definitions/VpcConfig/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" }, + { + "op": "add", + "path": "/properties/ImageId/format", + "value": "AWS::EC2::Image.Id" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_project/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_project/format.json index 1b10a67f85..e06d242c3f 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_project/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_codebuild_project/format.json @@ -4,6 +4,16 @@ "path": "/definitions/VpcConfig/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_documentclassifier/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_documentclassifier/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_documentclassifier/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_documentclassifier/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_flywheel/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_flywheel/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_flywheel/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_comprehend_flywheel/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_clientvpntargetnetworkassociation/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_ec2fleet/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_ec2fleet/format.json new file mode 100644 index 0000000000..c74a36ef7c --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_ec2fleet/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/definitions/FleetLaunchTemplateOverridesRequest/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/format.json index 0806b0a787..d4732e9149 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instance/format.json @@ -9,6 +9,16 @@ "path": "/properties/ImageId/format", "value": "AWS::EC2::Image.Id" }, + { + "op": "add", + "path": "/definitions/NetworkInterface/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instanceconnectendpoint/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instanceconnectendpoint/format.json index 24b4bcaa67..2699321c7a 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instanceconnectendpoint/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_instanceconnectendpoint/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_launchtemplate/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_launchtemplate/format.json index 57d268e01b..a5dd048dda 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_launchtemplate/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_launchtemplate/format.json @@ -4,6 +4,11 @@ "path": "/definitions/LaunchTemplateData/properties/ImageId/format", "value": "AWS::EC2::Image.Id" }, + { + "op": "add", + "path": "/definitions/NetworkInterface/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/LaunchTemplateData/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_natgateway/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_natgateway/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_natgateway/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_networkinterface/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_networkinterface/format.json index b477cfe8f7..f3c5c0f525 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_networkinterface/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_networkinterface/format.json @@ -3,5 +3,10 @@ "op": "add", "path": "/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" + }, + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/format.json index 9a8d763fd3..55b97d8afc 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_spotfleet/format.json @@ -4,6 +4,21 @@ "path": "/definitions/SpotFleetLaunchSpecification/properties/ImageId/format", "value": "AWS::EC2::Image.Id" }, + { + "op": "add", + "path": "/definitions/InstanceNetworkInterfaceSpecification/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, + { + "op": "add", + "path": "/definitions/LaunchTemplateOverrides/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, + { + "op": "add", + "path": "/definitions/SpotFleetLaunchSpecification/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/SpotFleetLaunchSpecification/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnet/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnet/format.json index b477cfe8f7..f3c5c0f525 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnet/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnet/format.json @@ -3,5 +3,10 @@ "op": "add", "path": "/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" + }, + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetcidrblock/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetnetworkaclassociation/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_subnetroutetableassociation/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastdomainassociation/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupmember/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/__init__.py b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/format.json new file mode 100644 index 0000000000..94c8c23eb3 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_transitgatewaymulticastgroupsource/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_vpccidrblock/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_vpccidrblock/format.json index 9ecf6a5cc4..b477cfe8f7 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_vpccidrblock/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ec2_vpccidrblock/format.json @@ -1,9 +1,4 @@ [ - { - "op": "add", - "path": "/handlers/list/handlerSchema/properties/VpcId/format", - "value": "AWS::EC2::VPC.Id" - }, { "op": "add", "path": "/properties/VpcId/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_service/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_service/format.json index 515f170b16..ab938a08e4 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_service/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_service/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/AwsVpcConfiguration/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_taskset/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_taskset/format.json index 515f170b16..ab938a08e4 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_taskset/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_ecs_taskset/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/AwsVpcConfiguration/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_efs_mounttarget/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_efs_mounttarget/format.json index 182adadf4f..306d92d48b 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_efs_mounttarget/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_efs_mounttarget/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_eks_fargateprofile/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_eks_fargateprofile/format.json new file mode 100644 index 0000000000..ddd7fe016d --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_eks_fargateprofile/format.json @@ -0,0 +1,12 @@ +[ + { + "op": "add", + "path": "/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_eks_nodegroup/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_eks_nodegroup/format.json new file mode 100644 index 0000000000..ddd7fe016d --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_eks_nodegroup/format.json @@ -0,0 +1,12 @@ +[ + { + "op": "add", + "path": "/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancing_loadbalancer/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancing_loadbalancer/format.json index e51e8590e9..3cda037083 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancing_loadbalancer/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancing_loadbalancer/format.json @@ -1,8 +1,13 @@ [ { "op": "add", - "path": "/properties/SourceSecurityGroup/properties/GroupName/format", - "value": "AWS::EC2::SecurityGroup.GroupName" + "path": "/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" }, { "op": "add", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancingv2_loadbalancer/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancingv2_loadbalancer/format.json index 182adadf4f..8b3b9f72ea 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancingv2_loadbalancer/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_elasticloadbalancingv2_loadbalancer/format.json @@ -1,4 +1,19 @@ [ + { + "op": "add", + "path": "/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, + { + "op": "add", + "path": "/definitions/SubnetMapping/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_events_rule/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_events_rule/format.json index 515f170b16..ab938a08e4 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_events_rule/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_events_rule/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/AwsVpcConfiguration/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_connection/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_connection/format.json new file mode 100644 index 0000000000..0600752957 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_connection/format.json @@ -0,0 +1,7 @@ +[ + { + "op": "add", + "path": "/definitions/PhysicalConnectionRequirements/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_devendpoint/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_devendpoint/format.json index f7bdf7d24a..49c2218f19 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_devendpoint/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_glue_devendpoint/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_imagebuilder_infrastructureconfiguration/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_imagebuilder_infrastructureconfiguration/format.json index f7bdf7d24a..49c2218f19 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_imagebuilder_infrastructureconfiguration/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_imagebuilder_infrastructureconfiguration/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_kafkaconnect_connector/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_kafkaconnect_connector/format.json index 221ea6cea4..99d8a6cd0c 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_kafkaconnect_connector/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_kafkaconnect_connector/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/Vpc/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/Vpc/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/Vpc/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flow/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flow/format.json index 0b238bc0b2..4a7f180e09 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flow/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flow/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/definitions/VpcInterface/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcInterface/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flowvpcinterface/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flowvpcinterface/format.json index f7bdf7d24a..49c2218f19 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flowvpcinterface/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_mediaconnect_flowvpcinterface/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_networkfirewall_firewall/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_networkfirewall_firewall/format.json index b477cfe8f7..2d95e0dc75 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_networkfirewall_firewall/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_networkfirewall_firewall/format.json @@ -3,5 +3,10 @@ "op": "add", "path": "/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" + }, + { + "op": "add", + "path": "/definitions/SubnetMapping/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/format.json index 7d3cf7cf72..477ba9d4d8 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_opsworks_instance/format.json @@ -3,5 +3,10 @@ "op": "add", "path": "/properties/AmiId/format", "value": "AWS::EC2::Image.Id" + }, + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_pipes_pipe/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_pipes_pipe/format.json new file mode 100644 index 0000000000..740f5ed20a --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_pipes_pipe/format.json @@ -0,0 +1,22 @@ +[ + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, + { + "op": "add", + "path": "/definitions/SelfManagedKafkaAccessConfigurationVpc/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/SelfManagedKafkaAccessConfigurationVpc/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_quicksight_vpcconnection/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_quicksight_vpcconnection/format.json index 4e35b2721d..2e003f656b 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_quicksight_vpcconnection/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_quicksight_vpcconnection/format.json @@ -4,6 +4,11 @@ "path": "/properties/VPCId/format", "value": "AWS::EC2::VPC.Id" }, + { + "op": "add", + "path": "/definitions/NetworkInterface/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_redshift_endpointaccess/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_redshift_endpointaccess/format.json index 9e7c3f519d..913488203f 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_redshift_endpointaccess/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_redshift_endpointaccess/format.json @@ -3,5 +3,10 @@ "op": "add", "path": "/properties/VpcEndpoint/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" + }, + { + "op": "add", + "path": "/definitions/NetworkInterface/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" } ] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_redshiftserverless_workgroup/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_redshiftserverless_workgroup/format.json index ab8a4fba52..bb7d1dff89 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_redshiftserverless_workgroup/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_redshiftserverless_workgroup/format.json @@ -4,6 +4,11 @@ "path": "/definitions/VpcEndpoint/properties/VpcId/format", "value": "AWS::EC2::VPC.Id" }, + { + "op": "add", + "path": "/definitions/NetworkInterface/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/Workgroup/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_route53resolver_resolverendpoint/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_route53resolver_resolverendpoint/format.json index f7bdf7d24a..493cb52cd5 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_route53resolver_resolverendpoint/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_route53resolver_resolverendpoint/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/definitions/IpAddressRequest/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_s3outposts_endpoint/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_s3outposts_endpoint/format.json index 563477617b..9369cdcb66 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_s3outposts_endpoint/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_s3outposts_endpoint/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupId/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_cluster/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_cluster/format.json new file mode 100644 index 0000000000..5dfc55f740 --- /dev/null +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_cluster/format.json @@ -0,0 +1,22 @@ +[ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", + "value": "AWS::EC2::SecurityGroup.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/SecurityGroupIds/items/format", + "value": "AWS::EC2::SecurityGroup.GroupId" + } +] diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_dataqualityjobdefinition/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_dataqualityjobdefinition/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_dataqualityjobdefinition/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_dataqualityjobdefinition/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_endpointconfig/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_endpointconfig/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_endpointconfig/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_endpointconfig/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_model/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_model/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_model/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_model/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelbiasjobdefinition/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelbiasjobdefinition/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelbiasjobdefinition/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelbiasjobdefinition/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelexplainabilityjobdefinition/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelexplainabilityjobdefinition/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelexplainabilityjobdefinition/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelexplainabilityjobdefinition/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelqualityjobdefinition/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelqualityjobdefinition/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelqualityjobdefinition/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_modelqualityjobdefinition/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_monitoringschedule/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_monitoringschedule/format.json index bfba77bf8a..5dfc55f740 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_monitoringschedule/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_monitoringschedule/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/VpcConfig/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/VpcConfig/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_notebookinstance/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_notebookinstance/format.json index f7bdf7d24a..49c2218f19 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_notebookinstance/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_sagemaker_notebookinstance/format.json @@ -1,4 +1,9 @@ [ + { + "op": "add", + "path": "/properties/SubnetId/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/properties/SecurityGroupIds/format", diff --git a/src/cfnlint/data/schemas/patches/extensions/all/aws_scheduler_schedule/format.json b/src/cfnlint/data/schemas/patches/extensions/all/aws_scheduler_schedule/format.json index 515f170b16..ab938a08e4 100644 --- a/src/cfnlint/data/schemas/patches/extensions/all/aws_scheduler_schedule/format.json +++ b/src/cfnlint/data/schemas/patches/extensions/all/aws_scheduler_schedule/format.json @@ -1,4 +1,14 @@ [ + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/format", + "value": "AWS::EC2::Subnet.Ids" + }, + { + "op": "add", + "path": "/definitions/AwsVpcConfiguration/properties/Subnets/items/format", + "value": "AWS::EC2::Subnet.Id" + }, { "op": "add", "path": "/definitions/AwsVpcConfiguration/properties/SecurityGroups/format", diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/af_south_1/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py b/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py index 4f6b98e7b5..d7feef2ec7 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_east_1/__init__.py @@ -1044,7 +1044,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", @@ -1365,6 +1364,8 @@ "aws-networkmanager-linkassociation.json", "aws-networkmanager-site.json", "aws-networkmanager-transitgatewayregistration.json", + "aws-oam-link.json", + "aws-oam-sink.json", "aws-opensearchservice-domain.json", "aws-opsworks-app.json", "aws-opsworks-elasticloadbalancerattachment.json", diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-capacityreservation.json similarity index 94% rename from src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-capacityreservation.json rename to src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-capacityreservation.json index 23228efd8d..97bc49256e 100644 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-ec2-capacityreservation.json +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-capacityreservation.json @@ -136,9 +136,6 @@ }, "TotalInstanceCount": { "type": "integer" - }, - "UnusedReservationBillingOwnerId": { - "type": "string" } }, "readOnlyProperties": [ @@ -152,8 +149,5 @@ "InstancePlatform", "InstanceType" ], - "typeName": "AWS::EC2::CapacityReservation", - "writeOnlyProperties": [ - "/properties/UnusedReservationBillingOwnerId" - ] + "typeName": "AWS::EC2::CapacityReservation" } diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_east_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-link.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-link.json deleted file mode 100644 index 70452348c8..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-link.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SinkIdentifier", - "/properties/LabelTemplate" - ], - "definitions": { - "LinkConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupConfiguration": { - "$ref": "#/definitions/LinkFilter" - }, - "MetricConfiguration": { - "$ref": "#/definitions/LinkFilter" - } - }, - "type": "object" - }, - "LinkFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Filter" - ], - "type": "object" - }, - "ResourceType": { - "enum": [ - "AWS::CloudWatch::Metric", - "AWS::Logs::LogGroup", - "AWS::XRay::Trace", - "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" - ], - "type": "string" - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Label": { - "type": "string" - }, - "LabelTemplate": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LinkConfiguration": { - "$ref": "#/definitions/LinkConfiguration" - }, - "ResourceTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SinkIdentifier": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_:\\.\\-\\/]{0,2047}$", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Label" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceTypes", - "SinkIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Link", - "writeOnlyProperties": [ - "/properties/LabelTemplate" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-sink.json b/src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-sink.json deleted file mode 100644 index 48d43eba0a..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_east_1/aws-oam-sink.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Policy": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Sink" -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py b/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py index dce285c19b..31f3b34bc8 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/__init__.py @@ -1608,7 +1608,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-capacityreservation.json similarity index 94% rename from src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-capacityreservation.json rename to src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-capacityreservation.json index 23228efd8d..97bc49256e 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-capacityreservation.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_1/aws-ec2-capacityreservation.json @@ -136,9 +136,6 @@ }, "TotalInstanceCount": { "type": "integer" - }, - "UnusedReservationBillingOwnerId": { - "type": "string" } }, "readOnlyProperties": [ @@ -152,8 +149,5 @@ "InstancePlatform", "InstanceType" ], - "typeName": "AWS::EC2::CapacityReservation", - "writeOnlyProperties": [ - "/properties/UnusedReservationBillingOwnerId" - ] + "typeName": "AWS::EC2::CapacityReservation" } diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py b/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py index d41fca4af0..8412a3d5e2 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/__init__.py @@ -1015,7 +1015,6 @@ "aws-dms-replicationtask.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", @@ -1330,6 +1329,8 @@ "aws-networkmanager-transitgatewayregistration.json", "aws-networkmanager-transitgatewayroutetableattachment.json", "aws-networkmanager-vpcattachment.json", + "aws-oam-link.json", + "aws-oam-sink.json", "aws-opensearchservice-domain.json", "aws-opsworks-app.json", "aws-opsworks-elasticloadbalancerattachment.json", diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-link.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-link.json deleted file mode 100644 index 70452348c8..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-link.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SinkIdentifier", - "/properties/LabelTemplate" - ], - "definitions": { - "LinkConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupConfiguration": { - "$ref": "#/definitions/LinkFilter" - }, - "MetricConfiguration": { - "$ref": "#/definitions/LinkFilter" - } - }, - "type": "object" - }, - "LinkFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Filter" - ], - "type": "object" - }, - "ResourceType": { - "enum": [ - "AWS::CloudWatch::Metric", - "AWS::Logs::LogGroup", - "AWS::XRay::Trace", - "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" - ], - "type": "string" - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Label": { - "type": "string" - }, - "LabelTemplate": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LinkConfiguration": { - "$ref": "#/definitions/LinkConfiguration" - }, - "ResourceTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SinkIdentifier": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_:\\.\\-\\/]{0,2047}$", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Label" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceTypes", - "SinkIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Link", - "writeOnlyProperties": [ - "/properties/LabelTemplate" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-sink.json b/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-sink.json deleted file mode 100644 index 48d43eba0a..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_northeast_3/aws-oam-sink.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Policy": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Sink" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py b/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py index e359352a48..81488c3603 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_1/__init__.py @@ -1464,7 +1464,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnauthorizationrule.json", "aws-ec2-clientvpnendpoint.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_south_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py b/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py index dcde1dc7be..0af960d7d2 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_south_2/__init__.py @@ -819,7 +819,6 @@ "aws-docdb-eventsubscription.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", @@ -1070,6 +1069,8 @@ "aws-networkmanager-transitgatewayregistration.json", "aws-networkmanager-transitgatewayroutetableattachment.json", "aws-networkmanager-vpcattachment.json", + "aws-oam-link.json", + "aws-oam-sink.json", "aws-opensearchservice-domain.json", "aws-opsworks-app.json", "aws-opsworks-elasticloadbalancerattachment.json", diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json index d132978064..e88a9d9272 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-spotfleet.json @@ -187,6 +187,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, @@ -224,6 +225,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "WeightedCapacity": { @@ -325,6 +327,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TagSpecifications": { diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-link.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-link.json deleted file mode 100644 index 70452348c8..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-link.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SinkIdentifier", - "/properties/LabelTemplate" - ], - "definitions": { - "LinkConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupConfiguration": { - "$ref": "#/definitions/LinkFilter" - }, - "MetricConfiguration": { - "$ref": "#/definitions/LinkFilter" - } - }, - "type": "object" - }, - "LinkFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Filter" - ], - "type": "object" - }, - "ResourceType": { - "enum": [ - "AWS::CloudWatch::Metric", - "AWS::Logs::LogGroup", - "AWS::XRay::Trace", - "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" - ], - "type": "string" - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Label": { - "type": "string" - }, - "LabelTemplate": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LinkConfiguration": { - "$ref": "#/definitions/LinkConfiguration" - }, - "ResourceTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SinkIdentifier": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_:\\.\\-\\/]{0,2047}$", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Label" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceTypes", - "SinkIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Link", - "writeOnlyProperties": [ - "/properties/LabelTemplate" - ] -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-sink.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-sink.json deleted file mode 100644 index 48d43eba0a..0000000000 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-oam-sink.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Policy": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Sink" -} diff --git a/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_south_2/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py b/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py index 672d432fd8..42c08bc9a9 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/__init__.py @@ -1574,7 +1574,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnauthorizationrule.json", "aws-ec2-clientvpnendpoint.json", @@ -2023,7 +2022,6 @@ "aws-mediatailor-sourcelocation.json", "aws-mediatailor-vodsource.json", "aws-memorydb-acl.json", - "aws-memorydb-cluster.json", "aws-memorydb-parametergroup.json", "aws-memorydb-subnetgroup.json", "aws-memorydb-user.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-memorydb-cluster.json b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-memorydb-cluster.json new file mode 100644 index 0000000000..cba3a3f129 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_1/aws-memorydb-cluster.json @@ -0,0 +1,195 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/TLSEnabled", + "/properties/DataTiering", + "/properties/KmsKeyId", + "/properties/Port", + "/properties/SubnetGroupName", + "/properties/SnapshotArns", + "/properties/SnapshotName" + ], + "definitions": { + "DataTieringStatus": { + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Port": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/ClusterName" + ], + "properties": { + "ACLName": { + "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", + "type": "string" + }, + "ARN": { + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ClusterEndpoint": { + "$ref": "#/definitions/Endpoint" + }, + "ClusterName": { + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "DataTiering": { + "$ref": "#/definitions/DataTieringStatus", + "type": "object" + }, + "Description": { + "type": "string" + }, + "Engine": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "FinalSnapshotName": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MaintenanceWindow": { + "type": "string" + }, + "NodeType": { + "type": "string" + }, + "NumReplicasPerShard": { + "type": "integer" + }, + "NumShards": { + "type": "integer" + }, + "ParameterGroupName": { + "type": "string" + }, + "ParameterGroupStatus": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "SecurityGroupIds": { + "format": "AWS::EC2::SecurityGroup.Ids", + "insertionOrder": false, + "items": { + "format": "AWS::EC2::SecurityGroup.GroupId", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotArns": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotName": { + "type": "string" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SnsTopicStatus": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "SubnetGroupName": { + "type": "string" + }, + "TLSEnabled": { + "type": "boolean" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/ClusterEndpoint/Address", + "/properties/ClusterEndpoint/Port", + "/properties/ARN", + "/properties/ParameterGroupStatus" + ], + "required": [ + "ClusterName", + "NodeType", + "ACLName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::Cluster", + "writeOnlyProperties": [ + "/properties/SnapshotArns", + "/properties/SnapshotName", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py b/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py index 5f58d9422b..819fdbe0c7 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/__init__.py @@ -1601,7 +1601,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_3/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py b/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py index bc2fc8aeb1..72ef0fcf02 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/__init__.py @@ -796,7 +796,6 @@ "aws-dms-replicationconfig.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json index d132978064..e88a9d9272 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-spotfleet.json @@ -187,6 +187,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, @@ -224,6 +225,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "WeightedCapacity": { @@ -325,6 +327,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TagSpecifications": { diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_4/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/__init__.py b/src/cfnlint/data/schemas/providers/ap_southeast_5/__init__.py index b24719f7bc..9e4dbdd4dd 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_5/__init__.py +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/__init__.py @@ -449,7 +449,6 @@ "aws-datasync-task.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-customergateway.json", "aws-ec2-dhcpoptions.json", "aws-ec2-ec2fleet.json", diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnet.json b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnet.json index ef3918fb82..9b28a8644a 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnet.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnet.json @@ -121,6 +121,7 @@ "type": "object" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetcidrblock.json index 6c58c1df37..0cd6ef0ee4 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetcidrblock.json @@ -15,6 +15,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetnetworkaclassociation.json b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetnetworkaclassociation.json index c2f822e26c..4444a48194 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetnetworkaclassociation.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-subnetnetworkaclassociation.json @@ -18,6 +18,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-vpccidrblock.json index c7487f7d53..2792cf52e0 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-ec2-vpccidrblock.json @@ -43,6 +43,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ap_southeast_5/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py b/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py index 863cf530da..1a3ff20dcf 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_central_1/__init__.py @@ -1409,7 +1409,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ca_central_1/aws-imagebuilder-infrastructureconfiguration.json b/src/cfnlint/data/schemas/providers/ca_central_1/aws-imagebuilder-infrastructureconfiguration.json index f82c85e26c..caf0c5be46 100644 --- a/src/cfnlint/data/schemas/providers/ca_central_1/aws-imagebuilder-infrastructureconfiguration.json +++ b/src/cfnlint/data/schemas/providers/ca_central_1/aws-imagebuilder-infrastructureconfiguration.json @@ -141,6 +141,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py b/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py index d8488edb54..eea2094ac9 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/ca_west_1/__init__.py @@ -698,7 +698,6 @@ "aws-dms-replicationconfig.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-customergateway.json", "aws-ec2-dhcpoptions.json", diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetcidrblock.json index f1438be6e2..74fc31e315 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetcidrblock.json @@ -27,6 +27,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetnetworkaclassociation.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetnetworkaclassociation.json index c2f822e26c..4444a48194 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetnetworkaclassociation.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-subnetnetworkaclassociation.json @@ -18,6 +18,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/ca_west_1/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-cloud9-environmentec2.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-cloud9-environmentec2.json index a71bd993aa..ab10ec22a1 100644 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-cloud9-environmentec2.json +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-cloud9-environmentec2.json @@ -63,6 +63,7 @@ "type": "string" }, "ImageId": { + "format": "AWS::EC2::Image.Id", "type": "string" }, "InstanceType": { @@ -82,6 +83,7 @@ "uniqueItems": false }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/cn_north_1/aws-eks-fargateprofile.json b/src/cfnlint/data/schemas/providers/cn_north_1/aws-eks-fargateprofile.json index c46a40ddd1..299b593a08 100644 --- a/src/cfnlint/data/schemas/providers/cn_north_1/aws-eks-fargateprofile.json +++ b/src/cfnlint/data/schemas/providers/cn_north_1/aws-eks-fargateprofile.json @@ -96,7 +96,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array" diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-cloud9-environmentec2.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-cloud9-environmentec2.json index a71bd993aa..ab10ec22a1 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-cloud9-environmentec2.json +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-cloud9-environmentec2.json @@ -63,6 +63,7 @@ "type": "string" }, "ImageId": { + "format": "AWS::EC2::Image.Id", "type": "string" }, "InstanceType": { @@ -82,6 +83,7 @@ "uniqueItems": false }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-subnetcidrblock.json index f1438be6e2..74fc31e315 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-subnetcidrblock.json @@ -27,6 +27,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-service.json new file mode 100644 index 0000000000..26b462c66f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-service.json @@ -0,0 +1,587 @@ +{ + "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": { + "format": "AWS::EC2::Subnet.Ids", + "items": { + "format": "AWS::EC2::Subnet.Id", + "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/cn_northwest_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-taskset.json new file mode 100644 index 0000000000..37bb5713ca --- /dev/null +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-ecs-taskset.json @@ -0,0 +1,193 @@ +{ + "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": { + "format": "AWS::EC2::Subnet.Ids", + "items": { + "format": "AWS::EC2::Subnet.Id", + "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/cn_northwest_1/aws-eks-fargateprofile.json b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-eks-fargateprofile.json index c46a40ddd1..299b593a08 100644 --- a/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-eks-fargateprofile.json +++ b/src/cfnlint/data/schemas/providers/cn_northwest_1/aws-eks-fargateprofile.json @@ -96,7 +96,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array" diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py b/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py index 47ecce529d..8725d5b97e 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_central_1/__init__.py @@ -1614,6 +1614,7 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", + "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", @@ -2229,7 +2230,6 @@ "aws-redshiftserverless-namespace.json", "aws-redshiftserverless-workgroup.json", "aws-refactorspaces-application.json", - "aws-refactorspaces-environment.json", "aws-refactorspaces-route.json", "aws-refactorspaces-service.json", "aws-rekognition-collection.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-codebuild-fleet.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-codebuild-fleet.json index de0359dd68..fdacce7411 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-codebuild-fleet.json +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-codebuild-fleet.json @@ -73,8 +73,10 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array" @@ -128,6 +130,7 @@ "$ref": "#/definitions/VpcConfig" }, "ImageId": { + "format": "AWS::EC2::Image.Id", "pattern": "^((aws/codebuild/[A-Za-z-]+:[0-9]+(-[0-9._]+)?)|ami-[a-z0-9]{1,1020})$", "type": "string" }, diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-launchtemplate.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-launchtemplate.json index 56cddb2f33..7a9ae7a139 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-launchtemplate.json +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-launchtemplate.json @@ -1606,6 +1606,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-networkinterface.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-networkinterface.json index dae426d0d5..f20a8cc017 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-networkinterface.json +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-ec2-networkinterface.json @@ -201,6 +201,7 @@ "type": "boolean" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/eu_central_1/aws-refactorspaces-environment.json b/src/cfnlint/data/schemas/providers/eu_central_1/aws-refactorspaces-environment.json new file mode 100644 index 0000000000..6288843ad6 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_1/aws-refactorspaces-environment.json @@ -0,0 +1,101 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/NetworkFabricType" + ], + "definitions": { + "NetworkFabricType": { + "enum": [ + "TRANSIT_GATEWAY", + "NONE" + ], + "type": "string" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:).+", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 0, + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/EnvironmentIdentifier" + ], + "properties": { + "Arn": { + "maxLength": 2048, + "minLength": 20, + "pattern": "^arn:(aws[a-zA-Z-]*)?:refactor-spaces:[a-zA-Z0-9\\-]+:\\w{12}:[a-zA-Z_0-9+=,.@\\-_/]+$", + "type": "string" + }, + "Description": { + "maxLength": 256, + "minLength": 1, + "pattern": "^[a-zA-Z0-9-_\\s\\.\\!\\*\\#\\@\\']+$", + "type": "string" + }, + "EnvironmentIdentifier": { + "maxLength": 14, + "minLength": 14, + "pattern": "^env-([0-9A-Za-z]{10}$)", + "type": "string" + }, + "Name": { + "maxLength": 63, + "minLength": 3, + "pattern": "^(?!env-)[a-zA-Z0-9]+[a-zA-Z0-9-_ ]+$", + "type": "string" + }, + "NetworkFabricType": { + "$ref": "#/definitions/NetworkFabricType" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array" + }, + "TransitGatewayId": { + "maxLength": 21, + "minLength": 21, + "pattern": "^tgw-[-a-f0-9]{17}$", + "type": "string" + } + }, + "readOnlyProperties": [ + "/properties/EnvironmentIdentifier", + "/properties/Arn", + "/properties/TransitGatewayId" + ], + "tagging": { + "cloudFormationSystemTags": false, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::RefactorSpaces::Environment", + "writeOnlyProperties": [ + "/properties/Description", + "/properties/Name", + "/properties/NetworkFabricType" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py b/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py index 70e77a5783..25f8ce306c 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_central_2/__init__.py @@ -849,7 +849,6 @@ "aws-dms-replicationconfig.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-subnetcidrblock.json index f1438be6e2..74fc31e315 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-subnetcidrblock.json @@ -27,6 +27,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/eu_central_2/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py b/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py index eaaf0f3f87..cd340f7a58 100644 --- a/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_north_1/__init__.py @@ -1250,7 +1250,6 @@ "aws-dms-replicationtask.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnauthorizationrule.json", "aws-ec2-clientvpnendpoint.json", @@ -1694,6 +1693,7 @@ "aws-rds-customdbengineversion.json", "aws-rds-dbcluster.json", "aws-rds-dbclusterparametergroup.json", + "aws-rds-dbinstance.json", "aws-rds-dbparametergroup.json", "aws-rds-dbproxy.json", "aws-rds-dbproxyendpoint.json", diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_north_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_north_1/aws-rds-dbinstance.json b/src/cfnlint/data/schemas/providers/eu_north_1/aws-rds-dbinstance.json deleted file mode 100644 index 71fda608fe..0000000000 --- a/src/cfnlint/data/schemas/providers/eu_north_1/aws-rds-dbinstance.json +++ /dev/null @@ -1,530 +0,0 @@ -{ - "additionalProperties": false, - "conditionalCreateOnlyProperties": [ - "/properties/AutoMinorVersionUpgrade", - "/properties/AvailabilityZone", - "/properties/BackupRetentionPeriod", - "/properties/DBClusterSnapshotIdentifier", - "/properties/DBParameterGroupName", - "/properties/DBSnapshotIdentifier", - "/properties/Engine", - "/properties/MultiAZ", - "/properties/PerformanceInsightsKMSKeyId", - "/properties/PreferredMaintenanceWindow", - "/properties/RestoreTime", - "/properties/SourceDBClusterIdentifier", - "/properties/SourceDBInstanceAutomatedBackupsArn", - "/properties/SourceDBInstanceIdentifier", - "/properties/SourceDbiResourceId", - "/properties/StorageType", - "/properties/UseLatestRestorableTime" - ], - "createOnlyProperties": [ - "/properties/CharacterSetName", - "/properties/CustomIAMInstanceProfile", - "/properties/DBClusterIdentifier", - "/properties/DBInstanceIdentifier", - "/properties/DBName", - "/properties/DBSubnetGroupName", - "/properties/KmsKeyId", - "/properties/MasterUsername", - "/properties/NcharCharacterSetName", - "/properties/SourceRegion", - "/properties/StorageEncrypted", - "/properties/Timezone" - ], - "definitions": { - "CertificateDetails": { - "additionalProperties": false, - "properties": { - "CAIdentifier": { - "type": "string" - }, - "ValidTill": { - "format": "date-time", - "type": "string" - } - }, - "type": "object" - }, - "DBInstanceRole": { - "additionalProperties": false, - "properties": { - "FeatureName": { - "type": "string" - }, - "RoleArn": { - "type": "string" - } - }, - "required": [ - "FeatureName", - "RoleArn" - ], - "type": "object" - }, - "Endpoint": { - "additionalProperties": false, - "properties": { - "Address": { - "type": "string" - }, - "HostedZoneId": { - "type": "string" - }, - "Port": { - "type": "string" - } - }, - "type": "object" - }, - "MasterUserSecret": { - "additionalProperties": false, - "properties": { - "KmsKeyId": { - "type": "string" - }, - "SecretArn": { - "type": "string" - } - }, - "type": "object" - }, - "ProcessorFeature": { - "additionalProperties": false, - "properties": { - "Name": { - "enum": [ - "coreCount", - "threadsPerCore" - ], - "type": "string" - }, - "Value": { - "type": "string" - } - }, - "type": "object" - }, - "Tag": { - "additionalProperties": false, - "properties": { - "Key": { - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "Value": { - "maxLength": 256, - "minLength": 0, - "type": "string" - } - }, - "required": [ - "Key" - ], - "type": "object" - } - }, - "dependencies": { - "KmsKeyId": { - "properties": { - "StorageEncrypted": { - "enum": [ - "true", - "True", - true - ] - } - }, - "required": [ - "StorageEncrypted" - ] - } - }, - "dependentExcluded": { - "SourceDBInstanceIdentifier": [ - "CharacterSetName", - "MasterUserPassword", - "MasterUsername", - "StorageEncrypted" - ] - }, - "deprecatedProperties": [ - "/properties/TdeCredentialArn", - "/properties/TdeCredentialPassword" - ], - "primaryIdentifier": [ - "/properties/DBInstanceIdentifier" - ], - "properties": { - "AllocatedStorage": { - "pattern": "^[0-9]*$", - "type": "string" - }, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AssociatedRoles": { - "items": { - "$ref": "#/definitions/DBInstanceRole" - }, - "type": "array" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "AutomaticBackupReplicationKmsKeyId": { - "type": "string" - }, - "AutomaticBackupReplicationRegion": { - "type": "string" - }, - "AvailabilityZone": { - "type": "string" - }, - "BackupRetentionPeriod": { - "maximum": 35, - "minimum": 0, - "type": "integer" - }, - "CACertificateIdentifier": { - "type": "string" - }, - "CertificateDetails": { - "$ref": "#/definitions/CertificateDetails" - }, - "CertificateRotationRestart": { - "type": "boolean" - }, - "CharacterSetName": { - "type": "string" - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "CustomIAMInstanceProfile": { - "type": "string" - }, - "DBClusterIdentifier": { - "type": "string" - }, - "DBClusterSnapshotIdentifier": { - "type": "string" - }, - "DBInstanceArn": { - "type": "string" - }, - "DBInstanceClass": { - "type": "string" - }, - "DBInstanceIdentifier": { - "maxLength": 63, - "minLength": 1, - "pattern": "^$|^[a-zA-Z]{1}(?:-?[a-zA-Z0-9]){0,62}$", - "type": "string" - }, - "DBName": { - "type": "string" - }, - "DBParameterGroupName": { - "type": "string" - }, - "DBSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - }, - "DBSnapshotIdentifier": { - "type": "string" - }, - "DBSubnetGroupName": { - "type": "string" - }, - "DBSystemId": { - "type": "string" - }, - "DbiResourceId": { - "type": "string" - }, - "DedicatedLogVolume": { - "type": "boolean" - }, - "DeleteAutomatedBackups": { - "type": "boolean" - }, - "DeletionProtection": { - "type": "boolean" - }, - "Domain": { - "type": "string" - }, - "DomainAuthSecretArn": { - "type": "string" - }, - "DomainDnsIps": { - "items": { - "type": "string" - }, - "type": "array" - }, - "DomainFqdn": { - "type": "string" - }, - "DomainIAMRoleName": { - "type": "string" - }, - "DomainOu": { - "type": "string" - }, - "EnableCloudwatchLogsExports": { - "items": { - "type": "string" - }, - "type": "array" - }, - "EnableIAMDatabaseAuthentication": { - "type": "boolean" - }, - "EnablePerformanceInsights": { - "type": "boolean" - }, - "Endpoint": { - "$ref": "#/definitions/Endpoint" - }, - "Engine": { - "type": "string" - }, - "EngineLifecycleSupport": { - "type": "string" - }, - "EngineVersion": { - "type": "string" - }, - "Iops": { - "type": "integer" - }, - "KmsKeyId": { - "type": "string" - }, - "LicenseModel": { - "type": "string" - }, - "ManageMasterUserPassword": { - "type": "boolean" - }, - "MasterUserPassword": { - "type": "string" - }, - "MasterUserSecret": { - "$ref": "#/definitions/MasterUserSecret" - }, - "MasterUsername": { - "maxLength": 128, - "minLength": 1, - "pattern": "^[a-zA-Z][a-zA-Z0-9_]{0,127}$", - "type": "string" - }, - "MaxAllocatedStorage": { - "type": "integer" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": { - "type": "string" - }, - "MultiAZ": { - "type": "boolean" - }, - "NcharCharacterSetName": { - "type": "string" - }, - "NetworkType": { - "type": "string" - }, - "OptionGroupName": { - "type": "string" - }, - "PerformanceInsightsKMSKeyId": { - "type": "string" - }, - "PerformanceInsightsRetentionPeriod": { - "enum": [ - 7, - 31, - 62, - 93, - 124, - 155, - 186, - 217, - 248, - 279, - 310, - 341, - 372, - 403, - 434, - 465, - 496, - 527, - 558, - 589, - 620, - 651, - 682, - 713, - 731 - ], - "type": "integer" - }, - "Port": { - "pattern": "^\\d*$", - "type": "string" - }, - "PreferredBackupWindow": { - "type": "string" - }, - "PreferredMaintenanceWindow": { - "type": "string" - }, - "ProcessorFeatures": { - "items": { - "$ref": "#/definitions/ProcessorFeature" - }, - "type": "array" - }, - "PromotionTier": { - "maximum": 15, - "minimum": 0, - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "ReplicaMode": { - "enum": [ - "mounted", - "open-read-only" - ], - "type": "string" - }, - "RestoreTime": { - "format": "date-time", - "type": "string" - }, - "SourceDBClusterIdentifier": { - "type": "string" - }, - "SourceDBInstanceAutomatedBackupsArn": { - "type": "string" - }, - "SourceDBInstanceIdentifier": { - "type": "string" - }, - "SourceDbiResourceId": { - "type": "string" - }, - "SourceRegion": { - "type": "string" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "StorageThroughput": { - "type": "integer" - }, - "StorageType": { - "type": "string" - }, - "Tags": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/Tag" - }, - "type": "array", - "uniqueItems": false - }, - "TdeCredentialArn": { - "type": "string" - }, - "TdeCredentialPassword": { - "type": "string" - }, - "Timezone": { - "type": "string" - }, - "UseDefaultProcessorFeatures": { - "type": "boolean" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "VPCSecurityGroups": { - "items": { - "type": "string" - }, - "type": "array", - "uniqueItems": true - } - }, - "propertyTransform": { - "/properties/DBClusterIdentifier": "$lowercase(DBClusterIdentifier)", - "/properties/DBClusterSnapshotIdentifier": "$lowercase(DBClusterSnapshotIdentifier)", - "/properties/DBInstanceIdentifier": "$lowercase(DBInstanceIdentifier)", - "/properties/DBName": "$lowercase(DBName) $OR $uppercase(DBName)", - "/properties/DBParameterGroupName": "$lowercase(DBParameterGroupName)", - "/properties/DBSnapshotIdentifier": "$lowercase(DBSnapshotIdentifier)", - "/properties/DBSubnetGroupName": "$lowercase(DBSubnetGroupName)", - "/properties/Engine": "$lowercase(Engine)", - "/properties/EngineVersion": "$join([$string(EngineVersion), \".*\"])", - "/properties/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", KmsKeyId])", - "/properties/MasterUserSecret/KmsKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", MasterUserSecret.KmsKeyId])", - "/properties/NetworkType": "$lowercase(NetworkType)", - "/properties/OptionGroupName": "$lowercase(OptionGroupName)", - "/properties/PerformanceInsightsKMSKeyId": "$join([\"arn:.+?:kms:.+?:.+?:key\\/\", PerformanceInsightsKMSKeyId])", - "/properties/PreferredMaintenanceWindow": "$lowercase(PreferredMaintenanceWindow)", - "/properties/SourceDBInstanceAutomatedBackupsArn": "$lowercase(SourceDBInstanceAutomatedBackupsArn)", - "/properties/SourceDBInstanceIdentifier": "$lowercase(SourceDBInstanceIdentifier)", - "/properties/StorageType": "$lowercase(StorageType)" - }, - "readOnlyProperties": [ - "/properties/Endpoint/Address", - "/properties/Endpoint/Port", - "/properties/Endpoint/HostedZoneId", - "/properties/DbiResourceId", - "/properties/DBInstanceArn", - "/properties/DBSystemId", - "/properties/MasterUserSecret/SecretArn", - "/properties/CertificateDetails/CAIdentifier", - "/properties/CertificateDetails/ValidTill" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-rpdk.git", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::RDS::DBInstance", - "writeOnlyProperties": [ - "/properties/AllowMajorVersionUpgrade", - "/properties/AutomaticBackupReplicationKmsKeyId", - "/properties/CertificateRotationRestart", - "/properties/DBSnapshotIdentifier", - "/properties/DeleteAutomatedBackups", - "/properties/MasterUserPassword", - "/properties/RestoreTime", - "/properties/SourceDBInstanceAutomatedBackupsArn", - "/properties/SourceDBInstanceIdentifier", - "/properties/SourceDbiResourceId", - "/properties/SourceRegion", - "/properties/TdeCredentialPassword", - "/properties/UseDefaultProcessorFeatures", - "/properties/UseLatestRestorableTime" - ] -} diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_south_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ecs-service.json new file mode 100644 index 0000000000..26b462c66f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-ecs-service.json @@ -0,0 +1,587 @@ +{ + "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": { + "format": "AWS::EC2::Subnet.Ids", + "items": { + "format": "AWS::EC2::Subnet.Id", + "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_south_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/eu_south_1/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/eu_south_2/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py b/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py index 5fe07e5fb2..b11830409c 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/eu_west_1/__init__.py @@ -1564,7 +1564,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", @@ -2049,7 +2048,6 @@ "aws-mediatailor-sourcelocation.json", "aws-mediatailor-vodsource.json", "aws-memorydb-acl.json", - "aws-memorydb-cluster.json", "aws-memorydb-parametergroup.json", "aws-memorydb-subnetgroup.json", "aws-memorydb-user.json", diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_west_1/aws-memorydb-cluster.json b/src/cfnlint/data/schemas/providers/eu_west_1/aws-memorydb-cluster.json new file mode 100644 index 0000000000..cba3a3f129 --- /dev/null +++ b/src/cfnlint/data/schemas/providers/eu_west_1/aws-memorydb-cluster.json @@ -0,0 +1,195 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/ClusterName", + "/properties/TLSEnabled", + "/properties/DataTiering", + "/properties/KmsKeyId", + "/properties/Port", + "/properties/SubnetGroupName", + "/properties/SnapshotArns", + "/properties/SnapshotName" + ], + "definitions": { + "DataTieringStatus": { + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "Endpoint": { + "additionalProperties": false, + "properties": { + "Address": { + "type": "string" + }, + "Port": { + "type": "integer" + } + }, + "type": "object" + }, + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "maxLength": 128, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,128}$", + "type": "string" + }, + "Value": { + "maxLength": 256, + "minLength": 1, + "pattern": "^(?!aws:)(?!memorydb:)[a-zA-Z0-9 _\\.\\/=+:\\-@]{1,256}$", + "type": "string" + } + }, + "required": [ + "Key", + "Value" + ], + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/ClusterName" + ], + "properties": { + "ACLName": { + "pattern": "[a-zA-Z][a-zA-Z0-9\\-]*", + "type": "string" + }, + "ARN": { + "type": "string" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ClusterEndpoint": { + "$ref": "#/definitions/Endpoint" + }, + "ClusterName": { + "pattern": "[a-z][a-z0-9\\-]*", + "type": "string" + }, + "DataTiering": { + "$ref": "#/definitions/DataTieringStatus", + "type": "object" + }, + "Description": { + "type": "string" + }, + "Engine": { + "type": "string" + }, + "EngineVersion": { + "type": "string" + }, + "FinalSnapshotName": { + "type": "string" + }, + "KmsKeyId": { + "type": "string" + }, + "MaintenanceWindow": { + "type": "string" + }, + "NodeType": { + "type": "string" + }, + "NumReplicasPerShard": { + "type": "integer" + }, + "NumShards": { + "type": "integer" + }, + "ParameterGroupName": { + "type": "string" + }, + "ParameterGroupStatus": { + "type": "string" + }, + "Port": { + "type": "integer" + }, + "SecurityGroupIds": { + "format": "AWS::EC2::SecurityGroup.Ids", + "insertionOrder": false, + "items": { + "format": "AWS::EC2::SecurityGroup.GroupId", + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotArns": { + "insertionOrder": false, + "items": { + "type": "string" + }, + "type": "array", + "uniqueItems": false + }, + "SnapshotName": { + "type": "string" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": { + "type": "string" + }, + "SnsTopicArn": { + "type": "string" + }, + "SnsTopicStatus": { + "type": "string" + }, + "Status": { + "type": "string" + }, + "SubnetGroupName": { + "type": "string" + }, + "TLSEnabled": { + "type": "boolean" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true + } + }, + "readOnlyProperties": [ + "/properties/Status", + "/properties/ClusterEndpoint/Address", + "/properties/ClusterEndpoint/Port", + "/properties/ARN", + "/properties/ParameterGroupStatus" + ], + "required": [ + "ClusterName", + "NodeType", + "ACLName" + ], + "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-memorydb", + "tagging": { + "cloudFormationSystemTags": true, + "tagOnCreate": true, + "tagProperty": "/properties/Tags", + "tagUpdatable": true, + "taggable": true + }, + "typeName": "AWS::MemoryDB::Cluster", + "writeOnlyProperties": [ + "/properties/SnapshotArns", + "/properties/SnapshotName", + "/properties/FinalSnapshotName" + ] +} diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_west_2/aws-redshiftserverless-workgroup.json b/src/cfnlint/data/schemas/providers/eu_west_2/aws-redshiftserverless-workgroup.json index eebdb07ca4..34c0a01e90 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_2/aws-redshiftserverless-workgroup.json +++ b/src/cfnlint/data/schemas/providers/eu_west_2/aws-redshiftserverless-workgroup.json @@ -53,6 +53,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/eu_west_3/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, 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 057fde5ab8..17746f8fd9 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/il_central_1/__init__.py @@ -845,7 +845,6 @@ "aws-dms-replicationconfig.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json index d132978064..e88a9d9272 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-spotfleet.json @@ -187,6 +187,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, @@ -224,6 +225,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "WeightedCapacity": { @@ -325,6 +327,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TagSpecifications": { diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-subnetcidrblock.json index f1438be6e2..74fc31e315 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-subnetcidrblock.json @@ -27,6 +27,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/il_central_1/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { 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 dc831ce4a6..edae105e22 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_central_1/__init__.py @@ -842,7 +842,6 @@ "aws-docdb-eventsubscription.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json index 2f7441b919..7971f63404 100644 --- a/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/me_central_1/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { 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 79205642e1..cbc27b5789 100644 --- a/src/cfnlint/data/schemas/providers/me_south_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/me_south_1/__init__.py @@ -1023,7 +1023,6 @@ "aws-dms-replicationtask.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/me_south_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, 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 13f5b22394..54119e7215 100644 --- a/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/sa_east_1/__init__.py @@ -1274,7 +1274,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/sa_east_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-apprunner-vpcconnector.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-apprunner-vpcconnector.json index 76e5fe1cd5..dd0fd5a1c2 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-apprunner-vpcconnector.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-apprunner-vpcconnector.json @@ -35,8 +35,10 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "minItems": 1, 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 a1275eb05f..72bd864557 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 @@ -98,8 +98,10 @@ "type": "string" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloud9-environmentec2.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloud9-environmentec2.json index 91279a2249..16c19bfd0c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-cloud9-environmentec2.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-cloud9-environmentec2.json @@ -63,6 +63,7 @@ "type": "string" }, "ImageId": { + "format": "AWS::EC2::Image.Id", "type": "string" }, "InstanceType": { @@ -82,6 +83,7 @@ "uniqueItems": false }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-fleet.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-fleet.json index 186b0947c9..416cf2e4e9 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-fleet.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-fleet.json @@ -36,8 +36,10 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array" @@ -91,6 +93,7 @@ "$ref": "#/definitions/VpcConfig" }, "ImageId": { + "format": "AWS::EC2::Image.Id", "pattern": "^((aws/codebuild/[A-Za-z-]+:[0-9]+(-[0-9._]+)?)|ami-[a-z0-9]{1,1020})$", "type": "string" }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-project.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-project.json index 45eac9b2b9..1db236733f 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-project.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-codebuild-project.json @@ -470,7 +470,9 @@ "uniqueItems": false }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-documentclassifier.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-documentclassifier.json index 8a72077b84..a88cbd0e18 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-documentclassifier.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-documentclassifier.json @@ -206,8 +206,10 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "minLength": 1, "pattern": "[-0-9a-zA-Z]+", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-flywheel.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-flywheel.json index 6eb926b2b7..f1160acbde 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-flywheel.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-comprehend-flywheel.json @@ -154,8 +154,10 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "minLength": 1, "pattern": "[-0-9a-zA-Z]+", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-capacityreservation.json index 97bc49256e..23228efd8d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-capacityreservation.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-capacityreservation.json @@ -136,6 +136,9 @@ }, "TotalInstanceCount": { "type": "integer" + }, + "UnusedReservationBillingOwnerId": { + "type": "string" } }, "readOnlyProperties": [ @@ -149,5 +152,8 @@ "InstancePlatform", "InstanceType" ], - "typeName": "AWS::EC2::CapacityReservation" + "typeName": "AWS::EC2::CapacityReservation", + "writeOnlyProperties": [ + "/properties/UnusedReservationBillingOwnerId" + ] } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-clientvpntargetnetworkassociation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-clientvpntargetnetworkassociation.json index 460308a839..334fb0e571 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-clientvpntargetnetworkassociation.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-clientvpntargetnetworkassociation.json @@ -15,6 +15,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-ec2fleet.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-ec2fleet.json index 126d77a49d..75973b95a1 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-ec2fleet.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-ec2fleet.json @@ -114,6 +114,7 @@ "type": "number" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "WeightedCapacity": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instance.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instance.json index ba291eb8aa..e49364a310 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instance.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instance.json @@ -260,6 +260,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, @@ -1423,6 +1424,7 @@ "type": "object" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instanceconnectendpoint.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instanceconnectendpoint.json index 02db6cefb2..e9866f8370 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instanceconnectendpoint.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-instanceconnectendpoint.json @@ -51,6 +51,7 @@ "uniqueItems": true }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-launchtemplate.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-launchtemplate.json index c34027b1b2..41e15c4cbd 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-launchtemplate.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-launchtemplate.json @@ -1603,6 +1603,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-natgateway.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-natgateway.json index 11444a2ca8..4c5e1a862f 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-natgateway.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-natgateway.json @@ -68,6 +68,7 @@ "uniqueItems": true }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-networkinterface.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-networkinterface.json index bf44566086..9e6d32c06c 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-networkinterface.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-networkinterface.json @@ -201,6 +201,7 @@ "type": "boolean" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json index 2b09ab5669..53307e92d3 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-spotfleet.json @@ -247,6 +247,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, @@ -457,6 +458,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "WeightedCapacity": { @@ -617,6 +619,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TagSpecifications": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnet.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnet.json index ef2dc5e490..c3c876be2a 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnet.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnet.json @@ -121,6 +121,7 @@ "type": "object" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetcidrblock.json index 43364b8508..506aca057d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetcidrblock.json @@ -33,6 +33,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetnetworkaclassociation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetnetworkaclassociation.json index ac14bb8518..9b5af6ca81 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetnetworkaclassociation.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetnetworkaclassociation.json @@ -15,6 +15,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetroutetableassociation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetroutetableassociation.json index 7c2cb01b29..19f1943d89 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetroutetableassociation.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-subnetroutetableassociation.json @@ -15,6 +15,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastdomainassociation.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastdomainassociation.json index 685c7eba98..0f17ef0851 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastdomainassociation.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastdomainassociation.json @@ -21,6 +21,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TransitGatewayAttachmentId": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupmember.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupmember.json index c2a95118ff..2f08f6ac58 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupmember.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupmember.json @@ -33,6 +33,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TransitGatewayAttachmentId": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupsource.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupsource.json index 8a15d22020..892af2d0d8 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupsource.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-transitgatewaymulticastgroupsource.json @@ -33,6 +33,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "TransitGatewayAttachmentId": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-vpccidrblock.json index 98d20d33e8..e1df44e5d4 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ec2-vpccidrblock.json @@ -50,6 +50,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-service.json index 79baa6b983..9f9cd6aefa 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-service.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-service.json @@ -28,7 +28,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskset.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskset.json index 663d1205f9..8c6ade0c90 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskset.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-ecs-taskset.json @@ -33,7 +33,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "maxItems": 16, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-efs-mounttarget.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-efs-mounttarget.json index f6945d0135..27c2386fb3 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-efs-mounttarget.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-efs-mounttarget.json @@ -31,6 +31,7 @@ "uniqueItems": true }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "pattern": "^subnet-[0-9a-f]{8,40}$", "type": "string" } diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-fargateprofile.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-fargateprofile.json index ce2b999210..e2fc1e4755 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-fargateprofile.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-fargateprofile.json @@ -96,7 +96,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-nodegroup.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-nodegroup.json index fc7a96e616..25feaad351 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-nodegroup.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-eks-nodegroup.json @@ -189,8 +189,10 @@ "$ref": "#/definitions/ScalingConfig" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancing-loadbalancer.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancing-loadbalancer.json index 9bf8856eac..f0e6d5b7b1 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancing-loadbalancer.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancing-loadbalancer.json @@ -307,7 +307,9 @@ "type": "object" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancingv2-loadbalancer.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancingv2-loadbalancer.json index bb9cd3acb4..94dc15a3b5 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancingv2-loadbalancer.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-elasticloadbalancingv2-loadbalancer.json @@ -31,6 +31,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, @@ -115,8 +116,10 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-events-rule.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-events-rule.json index 43f9f44d6b..349225ba27 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-events-rule.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-events-rule.json @@ -36,8 +36,10 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": true, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-connection.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-connection.json index 2329043b96..2b9c03735f 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-connection.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-connection.json @@ -65,6 +65,7 @@ "uniqueItems": false }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-devendpoint.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-devendpoint.json index c9e89c6980..d76c7eea4e 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-devendpoint.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-glue-devendpoint.json @@ -61,6 +61,7 @@ "uniqueItems": false }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-imagebuilder-infrastructureconfiguration.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-imagebuilder-infrastructureconfiguration.json index 0306a9a8f3..3ea8677c5d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-imagebuilder-infrastructureconfiguration.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-imagebuilder-infrastructureconfiguration.json @@ -115,6 +115,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-kafkaconnect-connector.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-kafkaconnect-connector.json index 4e1aefc3c4..04a651904d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-kafkaconnect-connector.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-kafkaconnect-connector.json @@ -316,8 +316,10 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "minItems": 1, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flow.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flow.json index 0f2b5a7d29..ad664f0d65 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flow.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flow.json @@ -433,6 +433,7 @@ "type": "array" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flowvpcinterface.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flowvpcinterface.json index 8491b922e3..58ac32061d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flowvpcinterface.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-mediaconnect-flowvpcinterface.json @@ -33,6 +33,7 @@ "type": "array" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-firewall.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-firewall.json index 3a6b5ab3ac..cc38cd9b41 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-firewall.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-networkfirewall-firewall.json @@ -21,6 +21,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json index 245960457c..ffe6273289 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-opsworks-instance.json @@ -211,6 +211,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tenancy": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-pipes-pipe.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-pipes-pipe.json index fb8010d752..6c472e06d2 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-pipes-pipe.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-pipes-pipe.json @@ -48,7 +48,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 1024, "minLength": 1, "pattern": "^subnet-[0-9a-z]*|(\\$(\\.[\\w/_-]+(\\[(\\d+|\\*)\\])*)*)$", @@ -1635,7 +1637,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 1024, "minLength": 1, "pattern": "^subnet-[0-9a-z]*$", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-quicksight-vpcconnection.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-quicksight-vpcconnection.json index c7aab4bbf2..1124a8d5c6 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-quicksight-vpcconnection.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-quicksight-vpcconnection.json @@ -24,6 +24,7 @@ "$ref": "#/definitions/NetworkInterfaceStatus" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 255, "minLength": 1, "pattern": "^subnet-[0-9a-z]*$", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-redshift-endpointaccess.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-redshift-endpointaccess.json index 3b4d3b4b98..45310c33e5 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-redshift-endpointaccess.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-redshift-endpointaccess.json @@ -28,6 +28,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "relationshipRef": { "propertyPath": "/properties/SubnetId", "typeName": "AWS::EC2::NetworkInterface" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-redshiftserverless-workgroup.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-redshiftserverless-workgroup.json index ebdad29792..2a3c4edcd8 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-redshiftserverless-workgroup.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-redshiftserverless-workgroup.json @@ -53,6 +53,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-route53resolver-resolverendpoint.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-route53resolver-resolverendpoint.json index 49450e6c25..db6a3d27a5 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-route53resolver-resolverendpoint.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-route53resolver-resolverendpoint.json @@ -17,6 +17,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-s3outposts-endpoint.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-s3outposts-endpoint.json index ce0fdd9a67..2edf5ac225 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-s3outposts-endpoint.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-s3outposts-endpoint.json @@ -108,6 +108,7 @@ "type": "string" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 100, "minLength": 1, "pattern": "^subnet-([0-9a-f]{8}|[0-9a-f]{17})$", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-cluster.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-cluster.json index 0b605670d0..9a07a58052 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-cluster.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-cluster.json @@ -201,8 +201,10 @@ "additionalProperties": false, "properties": { "SecurityGroupIds": { + "format": "AWS::EC2::SecurityGroup.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::SecurityGroup.GroupId", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" @@ -212,8 +214,10 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-dataqualityjobdefinition.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-dataqualityjobdefinition.json index 28898b302a..69328e4bab 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-dataqualityjobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-dataqualityjobdefinition.json @@ -475,7 +475,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-endpointconfig.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-endpointconfig.json index 5f3ed4ce40..080ab2a787 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-endpointconfig.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-endpointconfig.json @@ -398,7 +398,9 @@ "uniqueItems": false }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-model.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-model.json index 1157e99c81..21e6fec7e6 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-model.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-model.json @@ -189,7 +189,9 @@ "uniqueItems": false }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelbiasjobdefinition.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelbiasjobdefinition.json index d2ee9a5fc5..e83049d2c5 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelbiasjobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelbiasjobdefinition.json @@ -505,7 +505,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelexplainabilityjobdefinition.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelexplainabilityjobdefinition.json index 8adce5bcba..14f7d9774d 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelexplainabilityjobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelexplainabilityjobdefinition.json @@ -465,7 +465,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelqualityjobdefinition.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelqualityjobdefinition.json index d79eba865c..65f5e45997 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelqualityjobdefinition.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-modelqualityjobdefinition.json @@ -529,7 +529,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-monitoringschedule.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-monitoringschedule.json index 2de2db7609..185ad074d4 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-monitoringschedule.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-monitoringschedule.json @@ -611,7 +611,9 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 32, "pattern": "[-0-9a-zA-Z]+", "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-notebookinstance.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-notebookinstance.json index 24be3d2cf6..bd2c5206c1 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-notebookinstance.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-sagemaker-notebookinstance.json @@ -99,6 +99,7 @@ "uniqueItems": false }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "Tags": { diff --git a/src/cfnlint/data/schemas/providers/us_east_1/aws-scheduler-schedule.json b/src/cfnlint/data/schemas/providers/us_east_1/aws-scheduler-schedule.json index 9b47e4bdde..15abdf7299 100644 --- a/src/cfnlint/data/schemas/providers/us_east_1/aws-scheduler-schedule.json +++ b/src/cfnlint/data/schemas/providers/us_east_1/aws-scheduler-schedule.json @@ -31,8 +31,10 @@ "type": "array" }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "insertionOrder": false, "items": { + "format": "AWS::EC2::Subnet.Id", "maxLength": 1000, "minLength": 1, "type": "string" diff --git a/src/cfnlint/data/schemas/providers/us_east_2/__init__.py b/src/cfnlint/data/schemas/providers/us_east_2/__init__.py index 0b055a1e7f..8b208b9ce5 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_east_2/__init__.py @@ -1463,7 +1463,6 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", @@ -1950,6 +1949,8 @@ "aws-networkmanager-transitgatewayroutetableattachment.json", "aws-networkmanager-vpcattachment.json", "aws-nimblestudio-studio.json", + "aws-oam-link.json", + "aws-oam-sink.json", "aws-opensearchserverless-accesspolicy.json", "aws-opensearchserverless-collection.json", "aws-opensearchserverless-lifecyclepolicy.json", diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_east_2/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-oam-link.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-oam-link.json deleted file mode 100644 index 70452348c8..0000000000 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-oam-link.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SinkIdentifier", - "/properties/LabelTemplate" - ], - "definitions": { - "LinkConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupConfiguration": { - "$ref": "#/definitions/LinkFilter" - }, - "MetricConfiguration": { - "$ref": "#/definitions/LinkFilter" - } - }, - "type": "object" - }, - "LinkFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Filter" - ], - "type": "object" - }, - "ResourceType": { - "enum": [ - "AWS::CloudWatch::Metric", - "AWS::Logs::LogGroup", - "AWS::XRay::Trace", - "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" - ], - "type": "string" - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Label": { - "type": "string" - }, - "LabelTemplate": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LinkConfiguration": { - "$ref": "#/definitions/LinkConfiguration" - }, - "ResourceTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SinkIdentifier": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_:\\.\\-\\/]{0,2047}$", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Label" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceTypes", - "SinkIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Link", - "writeOnlyProperties": [ - "/properties/LabelTemplate" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_east_2/aws-oam-sink.json b/src/cfnlint/data/schemas/providers/us_east_2/aws-oam-sink.json deleted file mode 100644 index 48d43eba0a..0000000000 --- a/src/cfnlint/data/schemas/providers/us_east_2/aws-oam-sink.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Policy": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Sink" -} diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-codebuild-project.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-codebuild-project.json index e39c543503..5d634dafa2 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-codebuild-project.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-codebuild-project.json @@ -455,7 +455,9 @@ "uniqueItems": false }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-service.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-service.json new file mode 100644 index 0000000000..26b462c66f --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-ecs-service.json @@ -0,0 +1,587 @@ +{ + "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": { + "format": "AWS::EC2::Subnet.Ids", + "items": { + "format": "AWS::EC2::Subnet.Id", + "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/us_gov_east_1/aws-efs-mounttarget.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-efs-mounttarget.json index fe582212f9..552b23126a 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-efs-mounttarget.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-efs-mounttarget.json @@ -30,6 +30,7 @@ "uniqueItems": true }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "pattern": "^subnet-[0-9a-f]{8,40}$", "type": "string" } diff --git a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-events-rule.json b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-events-rule.json index 2f109d3f3f..01ee266802 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-events-rule.json +++ b/src/cfnlint/data/schemas/providers/us_gov_east_1/aws-events-rule.json @@ -21,7 +21,9 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/__init__.py b/src/cfnlint/data/schemas/providers/us_gov_west_1/__init__.py index b99a68d8f6..8c8290f92b 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/__init__.py @@ -993,7 +993,6 @@ "aws-docdb-eventsubscription.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnendpoint.json", "aws-ec2-clientvpnroute.json", diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-codebuild-project.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-codebuild-project.json index e39c543503..5d634dafa2 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-codebuild-project.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-codebuild-project.json @@ -455,7 +455,9 @@ "uniqueItems": false }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-subnetcidrblock.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-subnetcidrblock.json index f1438be6e2..74fc31e315 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-subnetcidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-subnetcidrblock.json @@ -27,6 +27,7 @@ "type": "integer" }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-efs-mounttarget.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-efs-mounttarget.json index fe582212f9..552b23126a 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-efs-mounttarget.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-efs-mounttarget.json @@ -30,6 +30,7 @@ "uniqueItems": true }, "SubnetId": { + "format": "AWS::EC2::Subnet.Id", "pattern": "^subnet-[0-9a-f]{8,40}$", "type": "string" } diff --git a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-events-rule.json b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-events-rule.json index 2f109d3f3f..01ee266802 100644 --- a/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-events-rule.json +++ b/src/cfnlint/data/schemas/providers/us_gov_west_1/aws-events-rule.json @@ -21,7 +21,9 @@ "uniqueItems": true }, "Subnets": { + "format": "AWS::EC2::Subnet.Ids", "items": { + "format": "AWS::EC2::Subnet.Id", "type": "string" }, "type": "array", diff --git a/src/cfnlint/data/schemas/providers/us_west_1/__init__.py b/src/cfnlint/data/schemas/providers/us_west_1/__init__.py index 14acf77021..46165266ce 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_1/__init__.py @@ -1181,7 +1181,6 @@ "aws-dms-replicationtask.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", - "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-clientvpnauthorizationrule.json", "aws-ec2-clientvpnendpoint.json", @@ -1555,6 +1554,8 @@ "aws-networkmanager-transitgatewayregistration.json", "aws-networkmanager-transitgatewayroutetableattachment.json", "aws-networkmanager-vpcattachment.json", + "aws-oam-link.json", + "aws-oam-sink.json", "aws-opensearchservice-domain.json", "aws-opsworks-app.json", "aws-opsworks-elasticloadbalancerattachment.json", diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-capacityreservation.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-capacityreservation.json new file mode 100644 index 0000000000..97bc49256e --- /dev/null +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-capacityreservation.json @@ -0,0 +1,153 @@ +{ + "additionalProperties": false, + "createOnlyProperties": [ + "/properties/Tenancy", + "/properties/InstancePlatform", + "/properties/InstanceType", + "/properties/AvailabilityZone", + "/properties/TagSpecifications", + "/properties/OutPostArn", + "/properties/EphemeralStorage", + "/properties/EbsOptimized", + "/properties/PlacementGroupArn" + ], + "definitions": { + "Tag": { + "additionalProperties": false, + "properties": { + "Key": { + "type": "string" + }, + "Value": { + "type": "string" + } + }, + "required": [ + "Value", + "Key" + ], + "type": "object" + }, + "TagSpecification": { + "additionalProperties": false, + "properties": { + "ResourceType": { + "type": "string" + }, + "Tags": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/Tag" + }, + "type": "array", + "uniqueItems": false + } + }, + "type": "object" + } + }, + "primaryIdentifier": [ + "/properties/Id" + ], + "properties": { + "AvailabilityZone": { + "type": "string" + }, + "AvailableInstanceCount": { + "type": "integer" + }, + "EbsOptimized": { + "type": "boolean" + }, + "EndDate": { + "type": "string" + }, + "EndDateType": { + "enum": [ + "limited", + "unlimited" + ], + "type": "string" + }, + "EphemeralStorage": { + "type": "boolean" + }, + "Id": { + "type": "string" + }, + "InstanceCount": { + "type": "integer" + }, + "InstanceMatchCriteria": { + "enum": [ + "open", + "targeted" + ], + "type": "string" + }, + "InstancePlatform": { + "enum": [ + "Linux with SQL Server Enterprise", + "Linux with SQL Server Standard", + "Linux with SQL Server Web", + "Linux/UNIX", + "RHEL with HA", + "RHEL with HA and SQL Server Enterprise", + "RHEL with HA and SQL Server Standard", + "RHEL with SQL Server Enterprise", + "RHEL with SQL Server Standard", + "RHEL with SQL Server Web", + "Red Hat Enterprise Linux", + "SUSE Linux", + "Ubuntu Pro", + "Windows", + "Windows with SQL Server", + "Windows with SQL Server Enterprise", + "Windows with SQL Server Standard", + "Windows with SQL Server Web" + ], + "type": "string" + }, + "InstanceType": { + "type": "string" + }, + "OutPostArn": { + "pattern": "^arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:outpost/op-[a-f0-9]{17}$", + "type": "string" + }, + "PlacementGroupArn": { + "pattern": "^arn:aws([a-z-]+)?:ec2:[a-z\\d-]+:\\d{12}:placement-group/^.{1,255}$", + "type": "string" + }, + "TagSpecifications": { + "insertionOrder": false, + "items": { + "$ref": "#/definitions/TagSpecification" + }, + "type": "array", + "uniqueItems": false + }, + "Tenancy": { + "enum": [ + "dedicated", + "default" + ], + "type": "string" + }, + "TotalInstanceCount": { + "type": "integer" + } + }, + "readOnlyProperties": [ + "/properties/Id", + "/properties/AvailableInstanceCount", + "/properties/TotalInstanceCount" + ], + "required": [ + "InstanceCount", + "AvailabilityZone", + "InstancePlatform", + "InstanceType" + ], + "typeName": "AWS::EC2::CapacityReservation" +} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-vpccidrblock.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-vpccidrblock.json index 990b5cb413..c915ff6c10 100644 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-vpccidrblock.json +++ b/src/cfnlint/data/schemas/providers/us_west_1/aws-ec2-vpccidrblock.json @@ -44,6 +44,7 @@ "type": "string" }, "VpcId": { + "format": "AWS::EC2::VPC.Id", "type": "string" } }, diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-oam-link.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-oam-link.json deleted file mode 100644 index 70452348c8..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-oam-link.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/SinkIdentifier", - "/properties/LabelTemplate" - ], - "definitions": { - "LinkConfiguration": { - "additionalProperties": false, - "properties": { - "LogGroupConfiguration": { - "$ref": "#/definitions/LinkFilter" - }, - "MetricConfiguration": { - "$ref": "#/definitions/LinkFilter" - } - }, - "type": "object" - }, - "LinkFilter": { - "additionalProperties": false, - "properties": { - "Filter": { - "maxLength": 2000, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "Filter" - ], - "type": "object" - }, - "ResourceType": { - "enum": [ - "AWS::CloudWatch::Metric", - "AWS::Logs::LogGroup", - "AWS::XRay::Trace", - "AWS::ApplicationInsights::Application", - "AWS::InternetMonitor::Monitor" - ], - "type": "string" - } - }, - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Label": { - "type": "string" - }, - "LabelTemplate": { - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "LinkConfiguration": { - "$ref": "#/definitions/LinkConfiguration" - }, - "ResourceTypes": { - "insertionOrder": false, - "items": { - "$ref": "#/definitions/ResourceType" - }, - "maxItems": 50, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "SinkIdentifier": { - "maxLength": 2048, - "minLength": 1, - "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_:\\.\\-\\/]{0,2047}$", - "type": "string" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn", - "/properties/Label" - ], - "replacementStrategy": "delete_then_create", - "required": [ - "ResourceTypes", - "SinkIdentifier" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Link", - "writeOnlyProperties": [ - "/properties/LabelTemplate" - ] -} diff --git a/src/cfnlint/data/schemas/providers/us_west_1/aws-oam-sink.json b/src/cfnlint/data/schemas/providers/us_west_1/aws-oam-sink.json deleted file mode 100644 index 48d43eba0a..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_1/aws-oam-sink.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/Name" - ], - "primaryIdentifier": [ - "/properties/Arn" - ], - "properties": { - "Arn": { - "maxLength": 2048, - "type": "string" - }, - "Name": { - "maxLength": 255, - "minLength": 1, - "pattern": "^[a-zA-Z0-9_.-]+$", - "type": "string" - }, - "Policy": { - "format": "json", - "type": [ - "object", - "string" - ] - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - "^(?!aws:.*).{1,128}$": { - "maxLength": 256, - "minLength": 0, - "pattern": "^(?!aws:.*).{0,256}$", - "type": "string" - } - }, - "type": "object" - } - }, - "readOnlyProperties": [ - "/properties/Arn" - ], - "required": [ - "Name" - ], - "tagging": { - "cloudFormationSystemTags": false, - "tagOnCreate": true, - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::Oam::Sink" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/__init__.py b/src/cfnlint/data/schemas/providers/us_west_2/__init__.py index 93f8529e99..b84c4d8ffa 100644 --- a/src/cfnlint/data/schemas/providers/us_west_2/__init__.py +++ b/src/cfnlint/data/schemas/providers/us_west_2/__init__.py @@ -1665,6 +1665,7 @@ "aws-docdbelastic-cluster.json", "aws-dynamodb-globaltable.json", "aws-dynamodb-table.json", + "aws-ec2-capacityreservation.json", "aws-ec2-capacityreservationfleet.json", "aws-ec2-carriergateway.json", "aws-ec2-clientvpnauthorizationrule.json", @@ -2225,7 +2226,9 @@ "aws-panorama-packageversion.json", "aws-paymentcryptography-alias.json", "aws-paymentcryptography-key.json", + "aws-pcaconnectorad-connector.json", "aws-pcaconnectorad-serviceprincipalname.json", + "aws-pcaconnectorad-template.json", "aws-pcaconnectorad-templategroupaccesscontrolentry.json", "aws-pcaconnectorscep-challenge.json", "aws-pcaconnectorscep-connector.json", diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-connector.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-connector.json deleted file mode 100644 index 570ec920eb..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-connector.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/CertificateAuthorityArn", - "/properties/DirectoryId", - "/properties/VpcInformation" - ], - "definitions": { - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "VpcInformation": { - "additionalProperties": false, - "properties": { - "SecurityGroupIds": { - "format": "AWS::EC2::SecurityGroup.Ids", - "items": { - "format": "AWS::EC2::SecurityGroup.GroupId", - "maxLength": 20, - "minLength": 11, - "pattern": "^(?:sg-[0-9a-f]{8}|sg-[0-9a-f]{17})$", - "type": "string" - }, - "maxItems": 5, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "SecurityGroupIds" - ], - "type": "object" - } - }, - "primaryIdentifier": [ - "/properties/ConnectorArn" - ], - "properties": { - "CertificateAuthorityArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:acm-pca:[\\w-]+:[0-9]+:certificate-authority(\\/[\\w-]+)$", - "type": "string" - }, - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector(\\/[\\w-]+)$", - "type": "string" - }, - "DirectoryId": { - "pattern": "^d-[0-9a-f]{10}$", - "type": "string" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "VpcInformation": { - "$ref": "#/definitions/VpcInformation" - } - }, - "readOnlyProperties": [ - "/properties/ConnectorArn" - ], - "required": [ - "CertificateAuthorityArn", - "DirectoryId", - "VpcInformation" - ], - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorAD::Connector" -} diff --git a/src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-template.json b/src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-template.json deleted file mode 100644 index 104ded5e1a..0000000000 --- a/src/cfnlint/data/schemas/providers/us_west_2/aws-pcaconnectorad-template.json +++ /dev/null @@ -1,990 +0,0 @@ -{ - "additionalProperties": false, - "createOnlyProperties": [ - "/properties/ConnectorArn", - "/properties/Name" - ], - "definitions": { - "ApplicationPolicies": { - "additionalProperties": false, - "properties": { - "Critical": { - "type": "boolean" - }, - "Policies": { - "items": { - "$ref": "#/definitions/ApplicationPolicy" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "Policies" - ], - "type": "object" - }, - "ApplicationPolicy": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "PolicyType": { - "$ref": "#/definitions/ApplicationPolicyType" - } - }, - "required": [ - "PolicyType" - ], - "title": "PolicyType", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "PolicyObjectIdentifier": { - "maxLength": 64, - "minLength": 1, - "pattern": "^([0-2])\\.([0-9]|([0-3][0-9]))(\\.([0-9]+)){0,126}$", - "type": "string" - } - }, - "required": [ - "PolicyObjectIdentifier" - ], - "title": "PolicyObjectIdentifier", - "type": "object" - } - ] - }, - "ApplicationPolicyType": { - "enum": [ - "ALL_APPLICATION_POLICIES", - "ANY_PURPOSE", - "ATTESTATION_IDENTITY_KEY_CERTIFICATE", - "CERTIFICATE_REQUEST_AGENT", - "CLIENT_AUTHENTICATION", - "CODE_SIGNING", - "CTL_USAGE", - "DIGITAL_RIGHTS", - "DIRECTORY_SERVICE_EMAIL_REPLICATION", - "DISALLOWED_LIST", - "DNS_SERVER_TRUST", - "DOCUMENT_ENCRYPTION", - "DOCUMENT_SIGNING", - "DYNAMIC_CODE_GENERATOR", - "EARLY_LAUNCH_ANTIMALWARE_DRIVER", - "EMBEDDED_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", - "ENCLAVE", - "ENCRYPTING_FILE_SYSTEM", - "ENDORSEMENT_KEY_CERTIFICATE", - "FILE_RECOVERY", - "HAL_EXTENSION", - "IP_SECURITY_END_SYSTEM", - "IP_SECURITY_IKE_INTERMEDIATE", - "IP_SECURITY_TUNNEL_TERMINATION", - "IP_SECURITY_USER", - "ISOLATED_USER_MODE", - "KDC_AUTHENTICATION", - "KERNEL_MODE_CODE_SIGNING", - "KEY_PACK_LICENSES", - "KEY_RECOVERY", - "KEY_RECOVERY_AGENT", - "LICENSE_SERVER_VERIFICATION", - "LIFETIME_SIGNING", - "MICROSOFT_PUBLISHER", - "MICROSOFT_TIME_STAMPING", - "MICROSOFT_TRUST_LIST_SIGNING", - "OCSP_SIGNING", - "OEM_WINDOWS_SYSTEM_COMPONENT_VERIFICATION", - "PLATFORM_CERTIFICATE", - "PREVIEW_BUILD_SIGNING", - "PRIVATE_KEY_ARCHIVAL", - "PROTECTED_PROCESS_LIGHT_VERIFICATION", - "PROTECTED_PROCESS_VERIFICATION", - "QUALIFIED_SUBORDINATION", - "REVOKED_LIST_SIGNER", - "ROOT_PROGRAM_AUTO_UPDATE_CA_REVOCATION", - "ROOT_PROGRAM_AUTO_UPDATE_END_REVOCATION", - "ROOT_PROGRAM_NO_OSCP_FAILOVER_TO_CRL", - "ROOT_LIST_SIGNER", - "SECURE_EMAIL", - "SERVER_AUTHENTICATION", - "SMART_CARD_LOGIN", - "SPC_ENCRYPTED_DIGEST_RETRY_COUNT", - "SPC_RELAXED_PE_MARKER_CHECK", - "TIME_STAMPING", - "WINDOWS_HARDWARE_DRIVER_ATTESTED_VERIFICATION", - "WINDOWS_HARDWARE_DRIVER_EXTENDED_VERIFICATION", - "WINDOWS_HARDWARE_DRIVER_VERIFICATION", - "WINDOWS_HELLO_RECOVERY_KEY_ENCRYPTION", - "WINDOWS_KITS_COMPONENT", - "WINDOWS_RT_VERIFICATION", - "WINDOWS_SOFTWARE_EXTENSION_VERIFICATION", - "WINDOWS_STORE", - "WINDOWS_SYSTEM_COMPONENT_VERIFICATION", - "WINDOWS_TCB_COMPONENT", - "WINDOWS_THIRD_PARTY_APPLICATION_COMPONENT", - "WINDOWS_UPDATE" - ], - "type": "string" - }, - "CertificateValidity": { - "additionalProperties": false, - "properties": { - "RenewalPeriod": { - "$ref": "#/definitions/ValidityPeriod" - }, - "ValidityPeriod": { - "$ref": "#/definitions/ValidityPeriod" - } - }, - "required": [ - "RenewalPeriod", - "ValidityPeriod" - ], - "type": "object" - }, - "ClientCompatibilityV2": { - "enum": [ - "WINDOWS_SERVER_2003", - "WINDOWS_SERVER_2008", - "WINDOWS_SERVER_2008_R2", - "WINDOWS_SERVER_2012", - "WINDOWS_SERVER_2012_R2", - "WINDOWS_SERVER_2016" - ], - "type": "string" - }, - "ClientCompatibilityV3": { - "enum": [ - "WINDOWS_SERVER_2008", - "WINDOWS_SERVER_2008_R2", - "WINDOWS_SERVER_2012", - "WINDOWS_SERVER_2012_R2", - "WINDOWS_SERVER_2016" - ], - "type": "string" - }, - "ClientCompatibilityV4": { - "enum": [ - "WINDOWS_SERVER_2012", - "WINDOWS_SERVER_2012_R2", - "WINDOWS_SERVER_2016" - ], - "type": "string" - }, - "EnrollmentFlagsV2": { - "additionalProperties": false, - "properties": { - "EnableKeyReuseOnNtTokenKeysetStorageFull": { - "type": "boolean" - }, - "IncludeSymmetricAlgorithms": { - "type": "boolean" - }, - "NoSecurityExtension": { - "type": "boolean" - }, - "RemoveInvalidCertificateFromPersonalStore": { - "type": "boolean" - }, - "UserInteractionRequired": { - "type": "boolean" - } - }, - "type": "object" - }, - "EnrollmentFlagsV3": { - "additionalProperties": false, - "properties": { - "EnableKeyReuseOnNtTokenKeysetStorageFull": { - "type": "boolean" - }, - "IncludeSymmetricAlgorithms": { - "type": "boolean" - }, - "NoSecurityExtension": { - "type": "boolean" - }, - "RemoveInvalidCertificateFromPersonalStore": { - "type": "boolean" - }, - "UserInteractionRequired": { - "type": "boolean" - } - }, - "type": "object" - }, - "EnrollmentFlagsV4": { - "additionalProperties": false, - "properties": { - "EnableKeyReuseOnNtTokenKeysetStorageFull": { - "type": "boolean" - }, - "IncludeSymmetricAlgorithms": { - "type": "boolean" - }, - "NoSecurityExtension": { - "type": "boolean" - }, - "RemoveInvalidCertificateFromPersonalStore": { - "type": "boolean" - }, - "UserInteractionRequired": { - "type": "boolean" - } - }, - "type": "object" - }, - "ExtensionsV2": { - "additionalProperties": false, - "properties": { - "ApplicationPolicies": { - "$ref": "#/definitions/ApplicationPolicies" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyUsage" - ], - "type": "object" - }, - "ExtensionsV3": { - "additionalProperties": false, - "properties": { - "ApplicationPolicies": { - "$ref": "#/definitions/ApplicationPolicies" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyUsage" - ], - "type": "object" - }, - "ExtensionsV4": { - "additionalProperties": false, - "properties": { - "ApplicationPolicies": { - "$ref": "#/definitions/ApplicationPolicies" - }, - "KeyUsage": { - "$ref": "#/definitions/KeyUsage" - } - }, - "required": [ - "KeyUsage" - ], - "type": "object" - }, - "GeneralFlagsV2": { - "additionalProperties": false, - "properties": { - "AutoEnrollment": { - "type": "boolean" - }, - "MachineType": { - "type": "boolean" - } - }, - "type": "object" - }, - "GeneralFlagsV3": { - "additionalProperties": false, - "properties": { - "AutoEnrollment": { - "type": "boolean" - }, - "MachineType": { - "type": "boolean" - } - }, - "type": "object" - }, - "GeneralFlagsV4": { - "additionalProperties": false, - "properties": { - "AutoEnrollment": { - "type": "boolean" - }, - "MachineType": { - "type": "boolean" - } - }, - "type": "object" - }, - "HashAlgorithm": { - "enum": [ - "SHA256", - "SHA384", - "SHA512" - ], - "type": "string" - }, - "KeySpec": { - "enum": [ - "KEY_EXCHANGE", - "SIGNATURE" - ], - "type": "string" - }, - "KeyUsage": { - "additionalProperties": false, - "properties": { - "Critical": { - "type": "boolean" - }, - "UsageFlags": { - "$ref": "#/definitions/KeyUsageFlags" - } - }, - "required": [ - "UsageFlags" - ], - "type": "object" - }, - "KeyUsageFlags": { - "additionalProperties": false, - "properties": { - "DataEncipherment": { - "type": "boolean" - }, - "DigitalSignature": { - "type": "boolean" - }, - "KeyAgreement": { - "type": "boolean" - }, - "KeyEncipherment": { - "type": "boolean" - }, - "NonRepudiation": { - "type": "boolean" - } - }, - "type": "object" - }, - "KeyUsageProperty": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "PropertyType": { - "$ref": "#/definitions/KeyUsagePropertyType" - } - }, - "required": [ - "PropertyType" - ], - "title": "PropertyType", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "PropertyFlags": { - "$ref": "#/definitions/KeyUsagePropertyFlags" - } - }, - "required": [ - "PropertyFlags" - ], - "title": "PropertyFlags", - "type": "object" - } - ] - }, - "KeyUsagePropertyFlags": { - "additionalProperties": false, - "properties": { - "Decrypt": { - "type": "boolean" - }, - "KeyAgreement": { - "type": "boolean" - }, - "Sign": { - "type": "boolean" - } - }, - "type": "object" - }, - "KeyUsagePropertyType": { - "enum": [ - "ALL" - ], - "type": "string" - }, - "PrivateKeyAlgorithm": { - "enum": [ - "RSA", - "ECDH_P256", - "ECDH_P384", - "ECDH_P521" - ], - "type": "string" - }, - "PrivateKeyAttributesV2": { - "additionalProperties": false, - "properties": { - "CryptoProviders": { - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "KeySpec": { - "$ref": "#/definitions/KeySpec" - }, - "MinimalKeyLength": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "KeySpec", - "MinimalKeyLength" - ], - "type": "object" - }, - "PrivateKeyAttributesV3": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "$ref": "#/definitions/PrivateKeyAlgorithm" - }, - "CryptoProviders": { - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "KeySpec": { - "$ref": "#/definitions/KeySpec" - }, - "KeyUsageProperty": { - "$ref": "#/definitions/KeyUsageProperty" - }, - "MinimalKeyLength": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "Algorithm", - "KeySpec", - "KeyUsageProperty", - "MinimalKeyLength" - ], - "type": "object" - }, - "PrivateKeyAttributesV4": { - "additionalProperties": false, - "properties": { - "Algorithm": { - "$ref": "#/definitions/PrivateKeyAlgorithm" - }, - "CryptoProviders": { - "items": { - "maxLength": 100, - "minLength": 1, - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - }, - "KeySpec": { - "$ref": "#/definitions/KeySpec" - }, - "KeyUsageProperty": { - "$ref": "#/definitions/KeyUsageProperty" - }, - "MinimalKeyLength": { - "minimum": 1, - "type": "number" - } - }, - "required": [ - "KeySpec", - "MinimalKeyLength" - ], - "type": "object" - }, - "PrivateKeyFlagsV2": { - "additionalProperties": false, - "properties": { - "ClientVersion": { - "$ref": "#/definitions/ClientCompatibilityV2" - }, - "ExportableKey": { - "type": "boolean" - }, - "StrongKeyProtectionRequired": { - "type": "boolean" - } - }, - "required": [ - "ClientVersion" - ], - "type": "object" - }, - "PrivateKeyFlagsV3": { - "additionalProperties": false, - "properties": { - "ClientVersion": { - "$ref": "#/definitions/ClientCompatibilityV3" - }, - "ExportableKey": { - "type": "boolean" - }, - "RequireAlternateSignatureAlgorithm": { - "type": "boolean" - }, - "StrongKeyProtectionRequired": { - "type": "boolean" - } - }, - "required": [ - "ClientVersion" - ], - "type": "object" - }, - "PrivateKeyFlagsV4": { - "additionalProperties": false, - "properties": { - "ClientVersion": { - "$ref": "#/definitions/ClientCompatibilityV4" - }, - "ExportableKey": { - "type": "boolean" - }, - "RequireAlternateSignatureAlgorithm": { - "type": "boolean" - }, - "RequireSameKeyRenewal": { - "type": "boolean" - }, - "StrongKeyProtectionRequired": { - "type": "boolean" - }, - "UseLegacyProvider": { - "type": "boolean" - } - }, - "required": [ - "ClientVersion" - ], - "type": "object" - }, - "SubjectNameFlagsV2": { - "additionalProperties": false, - "properties": { - "RequireCommonName": { - "type": "boolean" - }, - "RequireDirectoryPath": { - "type": "boolean" - }, - "RequireDnsAsCn": { - "type": "boolean" - }, - "RequireEmail": { - "type": "boolean" - }, - "SanRequireDirectoryGuid": { - "type": "boolean" - }, - "SanRequireDns": { - "type": "boolean" - }, - "SanRequireDomainDns": { - "type": "boolean" - }, - "SanRequireEmail": { - "type": "boolean" - }, - "SanRequireSpn": { - "type": "boolean" - }, - "SanRequireUpn": { - "type": "boolean" - } - }, - "type": "object" - }, - "SubjectNameFlagsV3": { - "additionalProperties": false, - "properties": { - "RequireCommonName": { - "type": "boolean" - }, - "RequireDirectoryPath": { - "type": "boolean" - }, - "RequireDnsAsCn": { - "type": "boolean" - }, - "RequireEmail": { - "type": "boolean" - }, - "SanRequireDirectoryGuid": { - "type": "boolean" - }, - "SanRequireDns": { - "type": "boolean" - }, - "SanRequireDomainDns": { - "type": "boolean" - }, - "SanRequireEmail": { - "type": "boolean" - }, - "SanRequireSpn": { - "type": "boolean" - }, - "SanRequireUpn": { - "type": "boolean" - } - }, - "type": "object" - }, - "SubjectNameFlagsV4": { - "additionalProperties": false, - "properties": { - "RequireCommonName": { - "type": "boolean" - }, - "RequireDirectoryPath": { - "type": "boolean" - }, - "RequireDnsAsCn": { - "type": "boolean" - }, - "RequireEmail": { - "type": "boolean" - }, - "SanRequireDirectoryGuid": { - "type": "boolean" - }, - "SanRequireDns": { - "type": "boolean" - }, - "SanRequireDomainDns": { - "type": "boolean" - }, - "SanRequireEmail": { - "type": "boolean" - }, - "SanRequireSpn": { - "type": "boolean" - }, - "SanRequireUpn": { - "type": "boolean" - } - }, - "type": "object" - }, - "Tags": { - "additionalProperties": false, - "patternProperties": { - ".+": { - "type": "string" - } - }, - "type": "object" - }, - "TemplateDefinition": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "TemplateV2": { - "$ref": "#/definitions/TemplateV2" - } - }, - "required": [ - "TemplateV2" - ], - "title": "TemplateV2", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TemplateV3": { - "$ref": "#/definitions/TemplateV3" - } - }, - "required": [ - "TemplateV3" - ], - "title": "TemplateV3", - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "TemplateV4": { - "$ref": "#/definitions/TemplateV4" - } - }, - "required": [ - "TemplateV4" - ], - "title": "TemplateV4", - "type": "object" - } - ] - }, - "TemplateV2": { - "additionalProperties": false, - "properties": { - "CertificateValidity": { - "$ref": "#/definitions/CertificateValidity" - }, - "EnrollmentFlags": { - "$ref": "#/definitions/EnrollmentFlagsV2" - }, - "Extensions": { - "$ref": "#/definitions/ExtensionsV2" - }, - "GeneralFlags": { - "$ref": "#/definitions/GeneralFlagsV2" - }, - "PrivateKeyAttributes": { - "$ref": "#/definitions/PrivateKeyAttributesV2" - }, - "PrivateKeyFlags": { - "$ref": "#/definitions/PrivateKeyFlagsV2" - }, - "SubjectNameFlags": { - "$ref": "#/definitions/SubjectNameFlagsV2" - }, - "SupersededTemplates": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CertificateValidity", - "EnrollmentFlags", - "Extensions", - "GeneralFlags", - "PrivateKeyAttributes", - "PrivateKeyFlags", - "SubjectNameFlags" - ], - "type": "object" - }, - "TemplateV3": { - "additionalProperties": false, - "properties": { - "CertificateValidity": { - "$ref": "#/definitions/CertificateValidity" - }, - "EnrollmentFlags": { - "$ref": "#/definitions/EnrollmentFlagsV3" - }, - "Extensions": { - "$ref": "#/definitions/ExtensionsV3" - }, - "GeneralFlags": { - "$ref": "#/definitions/GeneralFlagsV3" - }, - "HashAlgorithm": { - "$ref": "#/definitions/HashAlgorithm" - }, - "PrivateKeyAttributes": { - "$ref": "#/definitions/PrivateKeyAttributesV3" - }, - "PrivateKeyFlags": { - "$ref": "#/definitions/PrivateKeyFlagsV3" - }, - "SubjectNameFlags": { - "$ref": "#/definitions/SubjectNameFlagsV3" - }, - "SupersededTemplates": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CertificateValidity", - "EnrollmentFlags", - "Extensions", - "GeneralFlags", - "HashAlgorithm", - "PrivateKeyAttributes", - "PrivateKeyFlags", - "SubjectNameFlags" - ], - "type": "object" - }, - "TemplateV4": { - "additionalProperties": false, - "properties": { - "CertificateValidity": { - "$ref": "#/definitions/CertificateValidity" - }, - "EnrollmentFlags": { - "$ref": "#/definitions/EnrollmentFlagsV4" - }, - "Extensions": { - "$ref": "#/definitions/ExtensionsV4" - }, - "GeneralFlags": { - "$ref": "#/definitions/GeneralFlagsV4" - }, - "HashAlgorithm": { - "$ref": "#/definitions/HashAlgorithm" - }, - "PrivateKeyAttributes": { - "$ref": "#/definitions/PrivateKeyAttributesV4" - }, - "PrivateKeyFlags": { - "$ref": "#/definitions/PrivateKeyFlagsV4" - }, - "SubjectNameFlags": { - "$ref": "#/definitions/SubjectNameFlagsV4" - }, - "SupersededTemplates": { - "items": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "maxItems": 100, - "minItems": 1, - "type": "array", - "uniqueItems": true - } - }, - "required": [ - "CertificateValidity", - "EnrollmentFlags", - "Extensions", - "GeneralFlags", - "PrivateKeyAttributes", - "PrivateKeyFlags", - "SubjectNameFlags" - ], - "type": "object" - }, - "ValidityPeriod": { - "additionalProperties": false, - "properties": { - "Period": { - "maximum": 8766000, - "minimum": 1, - "type": "number" - }, - "PeriodType": { - "$ref": "#/definitions/ValidityPeriodType" - } - }, - "required": [ - "Period", - "PeriodType" - ], - "type": "object" - }, - "ValidityPeriodType": { - "enum": [ - "HOURS", - "DAYS", - "WEEKS", - "MONTHS", - "YEARS" - ], - "type": "string" - } - }, - "primaryIdentifier": [ - "/properties/TemplateArn" - ], - "properties": { - "ConnectorArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - }, - "Definition": { - "$ref": "#/definitions/TemplateDefinition" - }, - "Name": { - "maxLength": 64, - "minLength": 1, - "pattern": "^(?!^\\s+$)((?![\\x5c'\\x2b,;<=>#\\x22])([\\x20-\\x7E]))+$", - "type": "string" - }, - "ReenrollAllCertificateHolders": { - "type": "boolean" - }, - "Tags": { - "$ref": "#/definitions/Tags" - }, - "TemplateArn": { - "maxLength": 200, - "minLength": 5, - "pattern": "^arn:[\\w-]+:pca-connector-ad:[\\w-]+:[0-9]+:connector\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\\/template\\/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$", - "type": "string" - } - }, - "readOnlyProperties": [ - "/properties/TemplateArn" - ], - "required": [ - "ConnectorArn", - "Definition", - "Name" - ], - "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-pcaconnectorad", - "tagging": { - "cloudFormationSystemTags": true, - "tagOnCreate": true, - "tagProperty": "/properties/Tags", - "tagUpdatable": true, - "taggable": true - }, - "typeName": "AWS::PCAConnectorAD::Template", - "writeOnlyProperties": [ - "/properties/ReenrollAllCertificateHolders" - ] -} diff --git a/src/cfnlint/rules/formats/SubnetId.py b/src/cfnlint/rules/formats/SubnetId.py new file mode 100644 index 0000000000..f4e5311cf2 --- /dev/null +++ b/src/cfnlint/rules/formats/SubnetId.py @@ -0,0 +1,33 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +from __future__ import annotations + +from typing import Any + +import regex as re + +from cfnlint.jsonschema import Validator +from cfnlint.rules.formats.FormatKeyword import FormatKeyword + + +class SubnetId(FormatKeyword): + id = "E1154" + shortdesc = "Validate VPC subnet id format" + description = "Check that a VPC subnet id matches a pattern" + tags = [] + source_url = "https://github.com/aws-cloudformation/cfn-lint/blob/main/docs/format_keyword.md#AWS::EC2::Subnet.Id" + + def __init__(self): + super().__init__(format="AWS::EC2::Subnet.Id") + + def format(self, validator: Validator, instance: Any) -> bool: + if not isinstance(instance, str): + return True + + if re.match(r"^subnet-(([0-9A-Fa-f]{8})|([0-9A-Fa-f]{17}))$", instance): + return True + + return False diff --git a/test/fixtures/templates/integration/aws-ec2-instance.yaml b/test/fixtures/templates/integration/aws-ec2-instance.yaml index 2df4070de1..da3af865ae 100644 --- a/test/fixtures/templates/integration/aws-ec2-instance.yaml +++ b/test/fixtures/templates/integration/aws-ec2-instance.yaml @@ -4,7 +4,7 @@ Resources: Properties: Description: foobar SourceDestCheck: false - SubnetId: subnet-abcdefgh + SubnetId: subnet-0abc1def2345a678b Instance: Type: AWS::EC2::Instance Properties: diff --git a/test/unit/module/cfn_json/test_cfn_json.py b/test/unit/module/cfn_json/test_cfn_json.py index bc285ec789..2463c21e6c 100644 --- a/test/unit/module/cfn_json/test_cfn_json.py +++ b/test/unit/module/cfn_json/test_cfn_json.py @@ -35,7 +35,7 @@ def setUp(self): }, "nat_instance": { "filename": "test/fixtures/templates/quickstart/nat-instance.json", - "failures": 3, + "failures": 4, }, "vpc_management": { "filename": "test/fixtures/templates/quickstart/vpc-management.json", diff --git a/test/unit/rules/formats/test_subnet_id.py b/test/unit/rules/formats/test_subnet_id.py new file mode 100644 index 0000000000..e11a7496ff --- /dev/null +++ b/test/unit/rules/formats/test_subnet_id.py @@ -0,0 +1,40 @@ +""" +Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +SPDX-License-Identifier: MIT-0 +""" + +import pytest + +from cfnlint.rules.formats.SubnetId import SubnetId + + +@pytest.fixture(scope="module") +def rule(): + rule = SubnetId() + yield rule + + +@pytest.mark.parametrize( + "name,instance,expected", + [ + ( + "Valid subnet id", + "subnet-abcd1234", + True, + ), + ( + "Valid subnet id long", + "subnet-abcdefa1234567890", + True, + ), + ( + "Valid but wrong type", + [], + True, + ), + ("Invalid subnet ID", "subnet-abc", False), + ], +) +def test_validate(name, instance, expected, rule, validator): + result = rule.format(validator, instance) + assert result == expected, f"Test {name!r} got {result!r}"